启用集群模式
只需要在启动应用时带上i参数
pm2 start app.js -i max
max:意味着PM2将自动检测可用的CPU数量和运行多个进程可以在负载均衡模式(但是不推荐使用)
或者使用json文件启动的
{ "apps" : [{ "script" : "api.js", "instances" : "max", "exec_mode" : "cluster" }]}
当然还支持js和ylm文件,js示例如下
module.exports = { apps : [{ name : "worker",//应用名称 script : "./worker.js", //脚本路径相对于pm2开始 watch : true, //开启监察,文件改变自动重启 env: { "PORT": 3000, "NODE_ENV": "development", }, env_production : { "PORT": 80 "NODE_ENV": "production" } },{ name : "api-app", script : "./api.js", cwd : "/home/www/project_root/current",// "error_file": "./logs/app.err.log", "out_file": "./logs/app.out.log", "log_date_format" : "YYYY-MM-DD HH:mm Z" instances : 4, // 实例(多核) exec_mode : "cluster" // 集群模式 }]}
然后再启动进程
pm2 start processes.json
重载应用
pm2 reload
或者
pm2 reload process.jsonpm2 reload process.json --only api
一键发布
yml的书写方式(process.yml)
apps: - script : server.js name : 'pm2 test' watch : true env : NODE_ENV: development env_production: NODE_ENV: productiondeploy : production : user : root key : C:/Windows/SSH-ubuntu.pem #服务器sshkey(阿里云再服务器镜像创建的时候会生成 然后保存到本地) host : - 120.78.174.212 #服务器ip port : 22 ref : origin/master repo : git@gitee.com:artiely/pm2test.git #仓库地址 path : /www/pm2test/production #发布地址 ssh_options : StrictHostKeyChecking=no #ssh权限 pre-deploy : git fetch --all #发布前的操作 post-deploy : 'npm install && npm run build && pm2 startOrRestart process.yml --env production' env : NODE_ENV : production
第一次发布本地执行
pm2 deploy process.yml production setup
然后每次发布只需本地执行如下命令,服务器就会自动拉取创库代码并发布
pm2 deploy process.yml production
注意事项
github上必须有服务器的公钥和本地的公钥
https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/
这里有各个系统生成id_rsa的方法
在实际操作中可能由于操作系统不同和权限的原因会遇到一些坑,大家参考报错信息都可以寻得答案