pm2自动化部署node项目到阿里云服务器
阿里云服务器对应的操作系统是centos
1. 电脑端和阿里云服务器端全局安装pm2
安装这条命令前需要先确保阿里云服务器端安装了node,npm,可以参考https://www.cnblogs.com/zhenfeng95/p/12848819.html安装,然后npm install pm2 -g
2. 在项目根目录下初始化部署脚本的文件
在项目根目录下新建一个deploy.yaml文件
# deploy.yaml
apps:
- script: ./start.js # 入口文件
name: ‘app‘ # 程序名称
env: # 环境变量
COMMON_VARIABLE: true
env_production:
NODE_ENV: production
deploy: # 部署脚本
production: # 生产环境
user: lentoo # 服务器的用户名
host: # 服务器的ip地址
port: 22 # ssh端口
ref: origin/master # 要拉取的git分支
ssh_options: StrictHostKeyChecking=no # SSH 公钥检查
repo: https://github.com/**.git # 远程仓库地址
path: /home # 拉取到服务器某个目录下
pre-deploy: git fetch --all # 部署前执行
post-deploy: npm install && pm2 reload deploy.yaml --env production # 部署后执行
env:
NODE_ENV: production
3. 配置git的ssh免密认证
在服务器中生成rsa公钥和私钥,前提服务器要安装git,没有安装的先安装git,可以参考https://www.cnblogs.com/zhenfeng95/p/12848819.html安装,然后通过ssh-keygen -t rsa -C ""生成公钥,在~/.ssh目录下有 id_rsa和 id_rsa.pub两个文件,其中id_rsa.pub文件里存放的即是公钥key,登录到GitHub,点击右上方的头像,选择settings ,点击Add SSH key,把id_rsa.pub的内容复制到里面即可。
4. 使用pm2部署项目
每次部署前先将本地的代码提交到远程git仓库,首次部署:pm2 deploy deploy.yaml production setup ,部署完成后,既可登陆服务器查看配置的目录下是否从git上拉取了项目,再次部署,
pm2 deploy deploy.yaml production update。
5. 阿里云后台添加安全组
(1)选择实例列表 --》 更多 --》 网络和安全组 --》安全组配置
(2)选择配置规则
(3)在入方向定义自己的端口号
pm2常用命令:
启动一个node程序
pm2 start start.js
启动进程并指定应用的程序名
pm2 start app.js --name application1
集群模式启动
// -i 表示 number-instances 实例数量
// max 表示 PM2将自动检测可用CPU的数量 可以自己指定数量
pm2 start start.js -i max
添加进程监视
// 在文件改变的时候会重新启动程序
pm2 start app.js --name start --watch
列出所有进程
pm2 list
pm2 ls // 简写
从进程列表中删除进程
// pm2 delete [appname] | id
pm2 delete app // 指定进程名删除
pm2 delete 0 // 指定进程id删除
删除进程列表中所有进程
pm2 delete all
查看某个进程具体情况
pm2 describe app
查看进程的资源消耗情况
pm2 monit
重启进程
pm2 restart app // 重启指定名称的进程
pm2 restart all // 重启所有进程
查看进程日志
pm2 logs app // 查看该名称进程的日志
pm2 logs all // 查看所有进程的日志
设置pm2开机自启
开启启动设置,此处是CentOS系统,其他系统替换最后一个选项(可选项:ubuntu, centos, redhat, gentoo, systemd, darwin, amazon)
pm2 startup centos
然后按照提示需要输入的命令进行输入
最后保存设置
pm2 save
pm2参考链接:https://www.jianshu.com/p/e15fd72727fe
阿里云服务器防火墙相关命令:https://www.cnblogs.com/yuanzipeng/p/10813494.html