只須要在啓動應用時帶上i參數git
pm2 start app.js -i max
max:意味着PM2將自動檢測可用的CPU數量和運行多個進程能夠在負載均衡模式(可是不推薦使用)github
或者使用json文件啓動的npm
{ "apps" : [{ "script" : "api.js", "instances" : "max", "exec_mode" : "cluster" }] }
固然還支持js和ylm文件,js示例以下
相關資料json
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" // 集羣模式 }] }
而後再啓動進程ubuntu
pm2 start processes.json
重載應用api
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
第一次發佈本地執行app
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的方法
在實際操做中可能因爲操做系統不一樣和權限的緣由會遇到一些坑,你們參考報錯信息均可以尋得答案