【node记录】使用pm2和git自动化部署远程nuxt.js和node项目
1、pm2简介
pm2(process manager)是一个进程管理工具,维护一个进程列表,可以用它来管理你的node进程,负责所有正在运行的进程,并查看node进程的状态,也支持性能监控,负载均衡等功能。
1.1、使用pm2管理的node程序的好处
1.监听文件变化,自动重启程序
2.支持性能监控
3.负载均衡
4.程序崩溃自动重启
5.服务器重新启动时自动重新启动
6.自动化部署项目
2、pm2安装与使用
2.1、全局安装(在安装node的环境下)
npm install pm2 -g
2.2、常用命令
启动index.js文件node服务,并且监听文件改变。
pm2 start index.js --watch
查看当前所有pm2启动node进程的列表
pm2 list
根据pm2进程的id停止对应的进程。
pm2 stop id | all为停止所有进程
根据pm2进程的id删除对应的进程
pm2 delete id | all为删除所有进程
根据pm2进程id重启该进程
pm2 restart id | all为重启所有进程*
2.3 启动npm run dev等命令
pm2 start npm --name "my-nuxt" -- run dev
3.采用git和pm2进行自动化部署远程nuxt.js和node项目
3.1 在项目根目录下新建一个 deploy.yaml 文件
# deploy.yaml
apps:
- script: ./index.js # 入口文件
name: 'text' # 程序名称
env: # 环境变量
COMMON_VARIABLE: true
env_production:
NODE_ENV: production
deploy: # 部署脚本
production: # 生产环境
user: lentoo # 服务器的用户名
host: 0.0.0.0 # 你的服务器的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.2 要在服务器端配置好git的ssh免密认证秘钥
ssh-keygen -t rsa -C "xxx@xxx.com"
在~/.ssh目录下有 id_rsa和 id_rsa.pub两个文件,其中id_rsa.pub文件里存放的即是公钥key,然后把里面内容复制到你的github账号里面。
秘钥配置好就可以部署项目了
3.3 初始化部署
首先把代码全部提交到远程仓库,然后执行
pm2 deploy deploy.yaml production setup
第一次部署的时候会多次提升输入服务器密码,按照提示输入服务器密码即可。
可能会出现的问题:
1.22端口连接失败,可以检查服务器是不是防火墙没关,service iptables stop关闭防火墙。
2.git的ssh秘钥没有配置好也会导致连接失败。
如果部署全部没问题,在短暂的等待后就可以看到最后scuess成功的提示,就可以去打开域名进行查看项目是否部署好了。
3.4每次更新代码后再次自动化部署
在把新代码也推送到远程仓库后,执行
pm2 deploy deploy.yaml production upddate
就会重新部署代码,自动重启远程项目,成功后可以查看项目是否更改成功。
4.不仅可以部署node项目和nuxt.js,该部署同样适用于签到所有的静态文件项目