啟用集群模式
只需要在啟動應用時帶上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 <app_name>
或者
pm2 reload process.json
pm2 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: production
deploy :
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的方法
在實際操作中可能由於操作系統不同和權限的原因會遇到一些坑,大家參考報錯信息都可以尋得答案