pm2 是一個帶有負載均衡功能的 Node 應用的進程管理器。
1. pm2 主要特點
- 內建負載均衡(使用Node cluster 集群模塊)
- 保持后台運行
- 進程守護,系統崩潰后自動重啟
- 啟動多進程,充分利用CPU和內存
- 自帶日志記錄功能
- 控制台檢測
- 提供 HTTP API
2. pm2 安裝及常用命令
安裝
$ npm install pm2 -g // 全局安裝
$ pm2 --version // 查看版本
pm2 命令
啟動(入口文件為app.js, 配置文件為pm2.conf.json):
// 直接啟動
$ pm2 start app.js
// 通過配置文件啟動
$ pm2 start app.js
查看啟動歷史:
$ pm2 list
重啟:
修改代碼后需要執行:
$ pm2 restart <AppName>/<id>
<!-- <AppName>/<id> 可通過 pm2 list 查看-->
停止進程(可重新啟動)
$ pm2 stop <AppName>/<id>
刪除進程(不可重新啟動)
$ pm2 delete <AppName>/<id>
其他命令
pm2 info <AppName>/<id> // 查看進程詳細信息
pm2 log <AppName>/<id> // 查看進程日志, 執行后,可進行線上調試,查看打印日志
pm2 monit <AppName>/<id> // 打開監控 logs
3. pm2 常用配置
根目錄下,新建空文件 /logs/err.log 和 /logs/out.log
新建配置文件 pm2.conf.json
pm2.conf.json:
{
"apps": {
"name": "pm2-test-server", // 起個進程名,即AppName
"script": "app.js", // 啟動的入口文件(koa2項目中為/bin/www.js)
"watch": true, // 監聽文件變化,自動重啟
"ignore_watch": [ // 不需要監聽的文件
"node_modules",
"logs"
],
"instances": 4, // 設置多進程
"error_file": "logs/err.log", // 錯誤日志存儲的文件
"out_file": "logs/out.log", // console.log()打印的都會放進去
"log_date_format": "YYYY-MM-DD HH:mm:ss" // 給每行日志標記一個時間
}
}
修改package.json:
{
"name": "pm2-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "cross-env NODE_ENV=dev nodemon app.js",
"prd": "cross-env NODE_ENV=production pm2 start pm2.conf.json"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
...
"cross-env": "^5.2.0",
"nodemon": "^1.19.1"
...
}
}
配置完后,執行下面命令,即可啟動項目
$ npm run prd