PM2是node程序管理工具,可以利用它來簡化很多node應用管理的繁瑣任務,如性能監控、自動重新開機、負載均衡等,而且使用非常簡單。
首先了解基本指令,靈活運用
PM2安裝
npm install pm2 -g
//或
yarn global add pm2
啟動
pm2 start app.js //啟動app.js應用
pm2 start app.js --name demo //啟動應用并設定name
pm2 start app.sh //腳本啟動
停止
pm2 stop all //停止所有應用
pm2 stop [AppName] //根據應用名停止指定應用
pm2 stop [ID] //根據應用id停止指定應用
删除
pm2 delete all //關閉并删除應用
pm2 delete [AppName] //根據應用名關閉并删除應用
pm2 delete [ID] //根據應用ID關閉并删除應用
建立開機自啟動
pm2 startup
更新PM2
pm2 updatePM2
pm2 update
監聽模式
pm2 start app.js --watch //當檔案發生變化,自動重新開機
靜态伺服器
pm2 serve ./dist 9090 //将目錄dist作為靜态伺服器根目錄,端口為9090
啟用群集模式(自動負載均衡)
//max 表示PM2将自動檢測可用CPU的數量并運作盡可能多的程序
//max可以自定義,如果是4核CPU,設定為2者占用2個
pm2 start app.js -i max
重新啟動
pm2 restart app.js //同時殺死并重新開機所有程序。短時間内服務不可用。生成環境推薦使用reload
0秒停機重新加載
pm2 reload app.js //重新啟動所有程序,始終保持至少一個程序在運作
pm2 gracefulReload all //優雅地以群集模式重新加載所有應用程式
檢視啟動清單
pm2 list
檢視每個應用程式占用情況
pm2 monit
顯示應用程式所有資訊
pm2 show [Name] //根據name檢視
pm2 show [ID] //根據id檢視
日志檢視
pm2 logs //檢視所有應用日志
pm2 logs [Name] //根據指定應用名檢視應用日志
pm2 logs [ID] //根據指定應用ID檢視應用日志
儲存目前應用清單
pm2 save
重新開機儲存的應用清單
pm2 resurrect
清除儲存的應用清單
pm2 cleardump
儲存并恢複PM2程序
pm2 update
PM2配置檔案方式生成示例配置檔案
pm2 ecosystem //生成一個示例JSON配置檔案pm2 init
配置檔案示例(實際使用自行删除)
module.exports = {
apps : [{
name : 'API', //應用名
script : 'app.js', //應用檔案位置
env: {
PM2_SERVE_PATH: ".", //靜态服務路徑
PM2_SERVE_PORT: 8080, //靜态伺服器通路端口
NODE_ENV: 'development' //啟動預設模式
},
env_production : {
NODE_ENV: 'production' //使用production模式 pm2 start ecosystem.config.js --env production
},
instances:"max", //将應用程式分布在所有CPU核心上,可以是整數或負數
watch:true, //監聽模式
output: './out.log', //指定日志标準輸出檔案及位置
error: './error.log', //錯誤輸出日志檔案及位置,pm2 install pm2-logrotate進行日志檔案拆分
merge_logs: true, //叢集情況下,可以合并日志
log_type:"json", //日志類型
log_date_format: "DD-MM-YYYY", //日志日期記錄格式
}],
deploy : {
production : {
user : 'node', //ssh 使用者
host : '212.83.163.1', //ssh 位址
ref : 'origin/master', //GIT遠端/分支
repo : '[email protected]:repo.git', //git位址
path : '/var/www/production', //伺服器檔案路徑
post-deploy : 'npm install && pm2 reload ecosystem.config.js --env production' //部署後的動作
}
}
};
進入正題,啟動服務方式有很多種不細講看圖說話,舉例1,npm start指令,就相當于執行 node ./bin/www

VUE項目舉例2,npm run dev 實際就是運作node腳本檔案:dev-server.js
舉例3,或者更多不一樣的代碼,實際都是運作腳本檔案
比如 npm run dev,都可以這樣啟動服務
pm2 start npm -- run dev
現在已經啟動
這裡serve對應腳本裡面的scripts,通過指令更改名稱并進行熱啟動 hello 是自定義名稱
pm2 start npm --watch --name hello -- run serve
已經修改成功
Express這個NodeJS架構我們同樣看package.json配置檔案,相當于執行 node ./bin/www,隻不過後面改成對應scripts裡面的start
pm2 start npm --watch --name wwwtest -- run start
wwwtest 是自定義名稱
控制台輸入:pm2,控制台會給出日常指令,并且會對這些指令給出對應說明,還是很友善的。