PM2 是一个带有负载均衡功能的 Node 应用进程管理器。是管理 node 服务器的良好工具。其具有以下主要特性:
- 内建负载均衡(使用 Node cluster 集群模块)
- 后台运行
- 具有 Ubuntu 和 CentOS 的启动脚本
- 停止不稳定的进程(避免无限循环)
- 控制台检测
- 提供 HTTP API
- 远程控制和实时的接口 API(Nodejs 模块,允许和 PM2 进程管理器交互)
官网 ==>
安装1 2 3
| npm install pm2 -g or yarn global add pm2
|
1 常用命令
1.1 启动
启动命令1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $ pm2 start app.js --name my-api $ pm2 start app.js -i max $ pm2 start app.js -i 3 $ pm2 start app.js -x $ pm2 start app.js -x -- -a 23 $ pm2 start app.js --name serverone $ pm2 stop serverone $ pm2 start app.json $ pm2 start app.js -i max -- -a 23 $ pm2 start app.js -i max -e err.log -o out.log
$ pm2 start my-bash-script.sh -x --interpreter bash $ pm2 start my-python-script.py -x --interpreter python
|
1.2 进程管理
pm2 进程管理1 2 3 4 5 6 7 8 9 10 11 12
| $ pm2 list $ pm2 monit $ pm2 logs $ pm2 stop all $ pm2 restart all $ pm2 reload all $ pm2 stop 0 $ pm2 restart 0 $ pm2 startup $ pm2 web $ pm2 delete 0 $ pm2 delete all
|
基本上进程管理的几个常用维度:
-restart
-reload
-stop
-delete
1.3 主要参数
运行时可加入一些参数控制1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| --name <app_name>
--watch
--max-memory-restart <200MB>
--log <log_path>
-- arg1 arg2 arg3
--restart-delay <delay in ms>
--time
--no-autorestart
--cron <cron_pattern>
--no-daemon
|
1.4 基于配置文件启动
我们知道,使用 pm2 启动服务器进程往往要带各种参数,这样在部署时会带来很多麻烦,pm2 支持使用配置文件的方式来启动服务。使用 pm2 init xx
命令可为当前服务初始化配置文件,通常为根目录下的 ecosystem.config.json
文件。
ecosystem.config.json文件1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| { "apps": [ { "name": "sys-name", "script": "dist/main.js", "log_date_format": "YYYY-MM-DD HH:mm Z", "out_file": "out/log.txt", "instances": 1, "autorestart": true, "restart_delay": 10000, "watch": [ "dist", "static" ], "ignore_watch": [ "node_modules" ], "max_memory_restart": "1G", "env": { "NODE_ENV": "development" }, "env_fat": { "NODE_ENV": "fat" }, "env_uat": { "NODE_ENV": "uat" }, "env_production": { "NODE_ENV": "production" } } ] }
|
写好配置文件之后,可基于配置文件启动服务了。通常会使用 --env xx
带上环境变量:
使用配置文件启动服务1 2
| pm2 start process.json --env production pm2 restart process.json --env development
|
2 特性功能讲解
2.1 秒停机重载
这项功能允许你 reload 程序,而不用失去请求连接。
2.2 web仪表盘
使用此命令后,会启动一个web可视化仪表盘,访问之可以看到非常炫酷的仪表盘展示系统当前所有信息。
3 引用
- pm2 官网