PM2使用手冊
PM2是什么?
PM2(Process Manager 2 )是具有內(nèi)置負(fù)載均衡器的Node.js應(yīng)用程序的生產(chǎn)運(yùn)行時(shí)和進(jìn)程管理器。 它允許您永久保持應(yīng)用程序活躍,無需停機(jī)即可重新加載它們盼忌,并促進(jìn)常見的Devops任務(wù)搀缠。
特性
日志管理:應(yīng)用程序日志保存在服務(wù)器的硬盤中~/.pm2/logs/
負(fù)載均衡:PM2可以通過創(chuàng)建共享同一服務(wù)器端口的多個(gè)子進(jìn)程來擴(kuò)展您的應(yīng)用程序。這樣做還允許您以零秒停機(jī)時(shí)間重新啟動應(yīng)用程序黎烈。
終端監(jiān)控:可以在終端中監(jiān)控您的應(yīng)用程序并檢查應(yīng)用程序運(yùn)行狀況(CPU使用率,使用的內(nèi)存匀谣,請求/分鐘等)照棋。
SSH部署:自動部署,避免逐個(gè)在所有服務(wù)器中進(jìn)行ssh武翎。
靜態(tài)服務(wù):支持靜態(tài)服務(wù)器功能
多平臺支持:適用于Linux(穩(wěn)定)和macOS(穩(wěn)定)和Windows(穩(wěn)定)
安裝
npm install pm2 -g
命令方式
啟動服務(wù)
pm2 start app.js //啟動app.js應(yīng)用
pm2 start app.js --name demo //啟動應(yīng)用并設(shè)置name
pm2 start app.sh //腳本啟動
停止服務(wù)
pm2 stop all //停止所有應(yīng)用
pm2 stop [AppName] //根據(jù)應(yīng)用名停止指定應(yīng)用
pm2 stop [ID] //根據(jù)應(yīng)用id停止指定應(yīng)用
刪除應(yīng)用
pm2 delete all //關(guān)閉并刪除應(yīng)用
pm2 delete [AppName] //根據(jù)應(yīng)用名關(guān)閉并刪除應(yīng)用
pm2 delete [ID] //根據(jù)應(yīng)用ID關(guān)閉并刪除應(yīng)用
創(chuàng)建開機(jī)自啟動
pm2 startup
更新PM2
pm2 updatePM2
pm2 update
監(jiān)聽模式
pm2 start app.js --watch //當(dāng)文件發(fā)生變化烈炭,自動重啟
靜態(tài)服務(wù)器
pm2 serve ./dist 9090 //將目錄dist作為靜態(tài)服務(wù)器根目錄,端口為9090
啟用群集模式(自動負(fù)載均衡)
//max 表示PM2將自動檢測可用CPU的數(shù)量并運(yùn)行盡可能多的進(jìn)程
//max可以自定義宝恶,如果是4核CPU符隙,設(shè)置為2者占用2個(gè)
pm2 start app.js -i max
重新啟動
//同時(shí)殺死并重啟所有進(jìn)程。短時(shí)間內(nèi)服務(wù)不可用垫毙。生成環(huán)境推薦使用reload
pm2 restart app.js
0秒停機(jī)重新加載
pm2 reload app.js //重新啟動所有進(jìn)程霹疫,始終保持至少一個(gè)進(jìn)程在運(yùn)行
pm2 gracefulReload all //優(yōu)雅地以群集模式重新加載所有應(yīng)用程序
查看啟動列表
pm2 list
查看每個(gè)應(yīng)用程序占用情況
pm2 monit
顯示應(yīng)用程序所有信息
pm2 show [Name] //根據(jù)name查看
pm2 show [ID] //根據(jù)id查看
日志查看
pm2 logs //查看所有應(yīng)用日志
pm2 logs [Name] //根據(jù)指定應(yīng)用名查看應(yīng)用日志
pm2 logs [ID] //根據(jù)指定應(yīng)用ID查看應(yīng)用日志
保存當(dāng)前應(yīng)用列表
pm2 save
重啟保存的應(yīng)用列表
pm2 resurrect
清除保存的應(yīng)用列表
pm2 cleardump
保存并恢復(fù)PM2進(jìn)程
pm2 update
配置文件方式
生成示例配置文件
pm2 ecosystem //生成一個(gè)示例JSON配置文件
pm2 init
配置文件示例
module.exports = {
apps : [{
name : 'API', //應(yīng)用名
script : 'app.js', //應(yīng)用文件位置
env: {
PM2_SERVE_PATH: ".", //靜態(tài)服務(wù)路徑
PM2_SERVE_PORT: 8080, //靜態(tài)服務(wù)器訪問端口
NODE_ENV: 'development' //啟動默認(rèn)模式
},
env_production : {
NODE_ENV: 'production' //使用production模式 pm2 start ecosystem.config.js --env production
},
instances:"max", //將應(yīng)用程序分布在所有CPU核心上,可以是整數(shù)或負(fù)數(shù)
watch:true, //監(jiān)聽模式
output: './out.log', //指定日志標(biāo)準(zhǔn)輸出文件及位置
error: './error.log', //錯(cuò)誤輸出日志文件及位置,pm2 install pm2-logrotate進(jìn)行日志文件拆分
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遠(yuǎn)程/分支
repo : 'git@github.com:repo.git', //git地址
path : '/var/www/production', //服務(wù)器文件路徑
post-deploy : 'npm install && pm2 reload ecosystem.config.js --env production' //部署后的動作
}
}
};