一、阿里云服务器从购买到部署 nodejs+vue

最近在学习微信小程序,就顺便想了解下上线的那套部署流程~
服务器:阿里云 ECS共享型 n4云服务器
后端:NodeJs
数据库:MySQL
前端:Vue

一、服务器购买与搭建MySQL

1.1 服务器购买

图1-1:服务器一般有阿里云,百度云,腾讯云,各自选择即可,我这里选择阿里云

图1-1

图1-2:购买成功后,可以在“管理控制台中”看到
图1-2

图1-3

1.2 连接服务器

连接的方式有很多种,这里以阿里云网页连接为列,还有Xshell软件
密码重置与远程连接(端口默认22)

图1-3

图1-4

至此,服务器连接成功。

1.3 CentOS-8安装mysql-8.0

  1. 通过以root用户使用CentOS软件包管理器来安装MySQL 8.0服务器:
    sudo dnf install @mysql
    图1-5

    会自动下载,下载完毕后,直接启动mysql服务
  2. 启动mysql服务
    systemctl start mysqld.service
    图1-6
  3. 登录mysql
    mysql -u root -p
    图1-7

    图1-8
  4. 修改mysql密码
    ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
    图1-9
  5. 创建远程访问
CREATE USER 'root'@'%' IDENTIFIED BY '你设置的密码';
GRANT ALL ON *.* TO 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你设置的密码';
图1-10
  1. 访问
    关闭防火墙 或者 开启我们的3306端口就可以进行访问了
# 查看firewall服务状态
systemctl status firewalld

# 开启、重启、关闭、firewalld.service服务
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop

# 查看防火墙规则
firewall-cmd --list-all    # 查看全部信息
firewall-cmd --list-ports  # 只看端口信息

# 开启端口
开端口命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙:systemctl restart firewalld.service

命令含义:
--zone #作用域
--add-port=80/tcp  #添加端口,格式为:端口/通讯协议
--permanent   #永久生效,没有此参数重启后失效

关闭防火墙(不建议)

systemctl stop firewalld.service

开启端口(建议)

firewall-cmd --zone=public --add-port=3306/tcp --permanent
图1-11

成功之后我们需要重启我们的防火墙

systemctl restart firewalld.service
图1-12

然后就可以连接啦~


图1-13

如果不行,检查下阿里云服务器MySQL是否开启了远程访问(见1.4)

1.4 阿里云服务器MySQL开启远程访问

上一步连接成功的,可以跳过此步~
登录阿里云进入控制台,依次访问 实例 ->(升降配下的)更多 -> 网络和安全组 -> 安全组配置 -> 配置规则

图1-14

图1-15

图1-16

二、部署后端包(nodejs)

2.1 安装 nodejs

在 node 官网上下载对应的安装包,上传到服务器并解压,我把安装包放在 /usr/local/lib/nodejs 下,执行以下5句

# 创建nodejs文件夹,并上传nodejs压缩包
mkdir /usr/local/lib/nodejs
# 解压nodejs压缩包
tar -xzvf /usr/local/lib/nodejs/node-v12.12.0-linux-x64.tar.gz -C /usr/local/lib/nodejs
# 重命名为node-v12.12.0
mv /usr/local/lib//nodejs/node-v12.12.0-linux-x64  /usr/local/lib/nodejs/node-v12.12.0
# 建立软连接  在 bin 下创建 node、npm快捷方式,方便全局使用
ln -s /usr/local/lib/nodejs/node-v12.12.0/bin/npm /usr/local/bin
ln -s /usr/local/lib/nodejs/node-v12.12.0/bin/node /usr/local/bin

2.2 测试 nodejs是否安装成功

图2-1

2.3 上传后端代码

我是以nodejs作为后端滴

# 1. 进入/usr/local文件夹
cd /usr/local
# 2. 创建develop文件夹,用于放前后端代码
mkdir develop
# 3. 进入develop文件夹,并上传node服务代码
cd develop
# 4. 安装依赖包
npm i
# 5. 安装supervisor (supervisor 是 node 应用的进程管理器)
npm install supervisor -g
  • 注意:执行supervisor app.js时,如果遇到报"-bash: supervisor: command not found", supervisor已经安装的情况下,请注意看下是否装在 /usr/local/bin/ 目录下;如果不是说明安装目录不对,Mac默认访问执行文件的目录在 /usr/local/bin/,所以需要保证我们的执行模块安装在该目录下。


    图2-2
  • 解决办法如下
npm config get prefix                        // 获取npm全局安装目录
npm config set prefix /usr/local        // 修改安装目录为Mac可执行文件目录;注意这里不需要加上/bin
npm install supervisor -g
supervisor app.js
  • 执行supervisor 遇到的其他问题

2.4 开启后端端口

  1. 检查防火墙是否开启


    图2-3
  2. 查看端口是否开放(这里后端开启13666端口)
# 查看13666端口是否开放  yes表示开启;no表示未开启。
firewall-cmd --query-port=13666/tcp
# 添加指定需要开放的端口:
firewall-cmd --add-port=13666/tcp --permanent
# 重载入添加的端口:
firewall-cmd --reload
# 查询指定端口是否开启成功:
firewall-cmd --query-port=13666/tcp
图2-4

2.5 守护进程--supervisord

到这里,nodejs和后端就部署完成啦~但还差一步就是安装守护进程supervisord并设置开机自启动,因为如果不安装supervisord,当我们关闭xshell时后端就会停止服务,所以我们需要一个工具去让我们的后端进程一直开启,这就是supervisord存在的意义(当然守护进程还有很多 这里以supervisord为例)

  1. 安装supervisor
    yum install -y supervisor
    图2-5
  2. 设置开机自启动
    systemctl enable supervisord
  3. supervisord管理命令
systemctl stop supervisord
systemctl start supervisord
systemctl status supervisord
systemctl reload supervisord
systemctl restart supervisord
图2-6
  1. 修改配置文件
    输入指令vim /etc/supervisord.conf
    图2-7

    输入指令cat /etc/supervisord.conf
    图2-8

    图2-9
  2. 创建Supervisord文件
mkdir /etc/supervisord.d
cd /etc/supervisord.d
touch supervisord.ini

图2-10

输入指令vim /etc/supervisord.d/supervisord.ini并粘贴下列代码

#这里的node-supervisord就是我们显示在web前端以及终端的监控名称
[program:node-supervisord]
#启动命令 : 此处我的node服务启动命令是supervisor app.js (/usr/local/develop/back-end/app.js为我们要监控的文件地址)
command=supervisor /usr/local/develop/back-end/app.js  
autostart=true
autorestart=true
startsecs=1
startretries=3
redirect_stderr=true
 #日志地址,可自行配置目录(需要自己创建)
stdout_logfile=/etc/supervisord.log/access_supervisord.log  
#日志地址,可自行配置目录(需要自己创建)
stderr_logfile=/etc/supervisord.log/error_supervisord.log     
图2-11
  1. 创建日志文件
mkdir /etc/supervisord.log
cd /etc/supervisord.log
touch {error_supervisord.log,access_supervisord.log}
图2-12
  1. 重启supervisor
    输入命令systemctl restart supervisord
    图2-13

    # 参考Centos7.x 安装 Supervisord

三、安装nginx

在linux下安装nginx,首先需要安装 gcc-c++编译器。然后安装nginx依赖的pcre和zlib包。最后安装nginx即可。

# 1.先安装gcc-c++编译器
yum install gcc-c++
yum install -y openssl openssl-devel
# 2.再安装pcre包
yum install -y pcre pcre-devel
# 3.再安装zlib包
yum install -y zlib zlib-devel
# 4. 添加rpm源(一般/etc放配置文件,/usr/local放用户代码)
rpm -Uvh [http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm](https://links.jianshu.com/go?to=http%3A%2F%2Fnginx.org%2Fpackages%2Fcentos%2F7%2Fnoarch%2FRPMS%2Fnginx-release-centos-7-0.el7.ngx.noarch.rpm)
# 5. 查看源是否添加成功
yum search nginx
# 6. 安装nginx
yum install -y nginx
# 7. 设置开机自启动
systemctl enable nginx
# 8. 允许HTTP和HTTPS通信
sudo firewall-cmd --permanent --zone=public --add-service=http 
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

图3-1:安装nginx


图3-1

图3-2:查看nginx状态是否为active


图3-2

图3-3:查看nginx开启的端口(nginx 默认80端口)
图3-3

图3-4:修改nginx端口为8081


图3-4

图3-5:重启nginx,并查看8081端口是否开启
图3-5

图3-6: 开放8081端口
图3-6

图3-7:查看url是否可达
图3-7

图3-8:外网映射
图3-8

图3-9

图3-10:访问 公网ip+nginx端口


图3-10
  • 最后设置开机自启动
    systemctl enable nginx

四、部署前端包

  1. 将前端包放到/usr/local/develop/web-front-end中


    图4-1
  2. 修改nginx配置(/etc/nginx/nginx.conf)


    图4-2
  3. 重启nginx
    systemctl restart nginx
  4. 访问 公网ip+nginx端口


    图4-3

文件位置

nodejs包:/usr/local/lib/nodejs
后端代码:/usr/local/develop/back-end
前端代码:/usr/local/develop/web-front-end
nginx:/etc/nginx
supervisor配置文件(修改ip、端口等): /etc/supervisord.conf
supervisor设置启动命令:/etc/supervisord.d/supervisord.ini
supervisor日志文件:/etc/supervisord.log

常用指令

(1)基本命令
创建a文件夹 :mkdir /usr/local/lib/a
创建b文件:touch b.txt
创建c、d文件:touch {c.txt,d.txt}
解压a.tar.gz压缩包:tar -xzvf /usr/local/lib/nodejs/a.tar.gz -C /usr/local/lib/nodejs
重命名为b:mv /usr/local/lib/nodejs/a  /usr/local/lib/nodejs/b
建立软连接  在 bin 下创建 node、npm快捷方式,方便全局使用:
ln -s /usr/local/lib/nodejs/node-v12.12.0/bin/npm /usr/local/bin
ln -s /usr/local/lib/nodejs/node-v12.12.0/bin/node /usr/local/bin

(2)查看防火墙状态
查看防火墙状态:systemctl status firewalld
开启防火墙:systemctl start firewalld    或    service firewalld start 
关闭防火墙:systemctl stop firewalld    或     service firewalld stop
重启防火墙:systemctl restart firewalld   或 service firewalld restart
设置开机自启动:systemctl enable firewalld
# 查看防火墙规则
查看全部信息 firewall-cmd --list-all
只看端口信息firewall-cmd --list-ports

若遇到无法开启
先用:systemctl unmask firewalld.service 
然后:systemctl start firewalld.service

(3)查看对外开放的端口状态
查询已开放的端口:netstat -anp
查询指定端口是否已开 :firewall-cmd --query-port=666/tcp (提示 yes,表示开启;no表示未开启。)
查询nginx进程:netstat -anop | grep nginx
杀进程:kill -9 进程pId

(4)对外开发端口
查看想开的端口是否已开:firewall-cmd --query-port=6379/tcp
添加指定需要开放的端口:firewall-cmd --add-port=123/tcp --permanent
重载入添加的端口:firewall-cmd --reload
查询指定端口是否开启成功:firewall-cmd --query-port=123/tcp
移除指定端口:firewall-cmd --permanent --remove-port=123/tcp

(5)supervisor
停止:systemctl stop supervisord
开启:systemctl start supervisord
查看状态:systemctl status supervisord
重载:systemctl reload supervisord
重启:systemctl restart supervisord
开机自启动:systemctl enable supervisord

(6)虚拟机相关
查看虚拟机列表:virsh list --all
虚拟机关机:virsh shutdown 虚拟机名称
虚拟机开机:virsh start 虚拟机名称

(7)服务器相关
服务器立即关机:shutdown -h now
服务器重启:reboot

(8) 其他
url是否可达:curl -XGET http://1.1.1.1:8081
后台运行进程:nohup 命令 &     
             示例:nohup node app.js &,这种关闭xshell,进程就关了,所以需要写启动关闭脚本 + 服务

推荐文章

二、阿里云服务器配置https

你可能感兴趣的:(一、阿里云服务器从购买到部署 nodejs+vue)