一、阿里云服务器从购买到部署 nodejs+vue
最近在学习微信小程序,就顺便想了解下上线的那套部署流程~
服务器:阿里云ECS共享型 n4
云服务器
后端:NodeJs
数据库:MySQL
前端:Vue
一、服务器购买与搭建MySQL
1.1 服务器购买
图1-1:服务器一般有阿里云,百度云,腾讯云,各自选择即可,我这里选择阿里云
图1-2:购买成功后,可以在“管理控制台中”看到
图1-2
图1-3
1.2 连接服务器
连接的方式有很多种,这里以阿里云网页连接为列,还有Xshell软件
密码重置与远程连接(端口默认22)
图1-4
至此,服务器连接成功。
1.3 CentOS-8安装mysql-8.0
- 通过以root用户使用CentOS软件包管理器来安装MySQL 8.0服务器:
sudo dnf install @mysql
图1-5
会自动下载,下载完毕后,直接启动mysql服务 - 启动mysql服务
systemctl start mysqld.service
图1-6 - 登录mysql
mysql -u root -p
图1-7
图1-8 - 修改mysql密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
图1-9 - 创建远程访问
CREATE USER 'root'@'%' IDENTIFIED BY '你设置的密码';
GRANT ALL ON *.* TO 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你设置的密码';
图1-10
- 访问
关闭防火墙 或者 开启我们的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-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-12.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
2.4 开启后端端口
-
检查防火墙是否开启
图2-3 - 查看端口是否开放(这里后端开启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为例)
- 安装supervisor
yum install -y supervisor
图2-5 - 设置开机自启动
systemctl enable supervisord
- supervisord管理命令
systemctl stop supervisord
systemctl start supervisord
systemctl status supervisord
systemctl reload supervisord
systemctl restart supervisord
图2-6
- 修改配置文件
输入指令vim /etc/supervisord.conf
图2-7
输入指令cat /etc/supervisord.conf
图2-8
图2-9 - 创建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
- 创建日志文件
mkdir /etc/supervisord.log
cd /etc/supervisord.log
touch {error_supervisord.log,access_supervisord.log}
图2-12
- 重启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
四、部署前端包
-
将前端包放到/usr/local/develop/web-front-end中
图4-1 -
修改nginx配置(/etc/nginx/nginx.conf)
图4-2 - 重启nginx
systemctl restart nginx
-
访问 公网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,进程就关了,所以需要写启动关闭脚本 + 服务