PM2 是一个守护进程管理器,它将帮助您管理和保持您的应用程序在线。PM2 入门很简单,它以简单直观的 CLI 形式提供,可通过 NPM 安装。
安装
最新的 PM2 版本可通过 NPM 或 Yarn 安装:
$ npm install pm2@latest -g # or $ yarn global add pm2
启动应用程序
启动、守护和监控应用程序的最简单方法是使用以下命令行:
$ pm2 start app.js
或快速启动任何其他应用程序:
$ pm2 start bashscript.sh $ pm2 start python-app.py --watch $ pm2 start binary-file -- --port 1520
也可以设置一些命令行参数:
# 指定一个应用程序的名称 --name <app_name> # 监听并在文件变化时重启应用程序 --watch # 设置应用重载的内存阈值 --max-memory-restart <200MB> # 指定日志文件 --log <log_path> # 向脚本传递额外的参数 -- arg1 arg2 arg3 # 自动重启之间的延迟 --restart-delay <delay in ms> # 在日志中加入时间前缀 --time # 不自动重启应用程序 --no-autorestart # 指定强制重启的任务(cron) --cron <cron_pattern> # 附加到应用程序日志 --no-daemon
管理应用
管理应用程序状态很简单,命令如下:
$ pm2 restart app_name $ pm2 reload app_name $ pm2 stop app_name $ pm2 delete app_name
app_name
不是必须的,你也可以通过:all
对所有进程操作,id
作用于特定的进程 ID。
列出托管应用程序
列出 PM2 管理的所有应用程序的状态:
$ pm2 [list|ls|status]
显示日志
实时显示日志:
$ pm2 logs
显示指定多少行日志:
$ pm2 logs --lines 200
基于终端的仪表板显示
这是一个直接适合终端的实时仪表板:
$ pm2 monit
pm2.io:监控和诊断 Web 界面
基于 Web 的仪表板,带有诊断系统的跨服务器:
$ pm2 plus
集群模式
对于 Node.js 应用程序,PM2 包含一个自动负载均衡器,它将在每个衍生进程之间共享所有 HTTP[s]/Websocket/TCP/UDP 连接。
以集群模式启动应用程序:
$ pm2 start app.js -i max
查看更多关于集群模式相关信息:https://pm2.keymetrics.io/docs/usage/cluster-mode/
你也可以创建一个配置文件,名为Ecosystem的文件,来管理多个应用程序。生成一个Ecosystem文件:
$ pm2 ecosystem
执行命令后将生成 ecosystem.config.js 文件
module.exports = { apps : [{ name: "app", script: "./app.js", env: { NODE_ENV: "development", }, env_production: { NODE_ENV: "production", } }, { name: 'worker', script: 'worker.js' }] }
使用以下命令就可以快速启动它:
$ pm2 start ecosystem.config.js
设置开机启动脚本
使用您在服务器启动/重新启动时管理的进程重新启动 PM2 至关重要。要解决此问题,只需运行此命令以生成开机自启动脚本:
$ pm2 startup
保存:
$ pm2 save
更新 PM2
更新很简单,版本之间变动也不是很大:
$ npm install pm2@latest -g
然后运行:
$ pm2 update
命令备忘清单
# 普通模式 pm2 start app.js --name my-api # 教程名称 # 集群模式 pm2 start app.js -i 0 # 将根据可用的CPU,用LB启动最大的进程 pm2 start app.js -i max # 与上述相同,但已废弃。 pm2 scale app +3 # 将 "应用程序 "扩大到3个 pm2 scale app 2 # 将 "应用程序 "扩大或缩小到2个工作者总数 #列表 pm2 list # 显示所有进程的状态 pm2 jlist # 以原始JSON格式打印进程列表 pm2 prettylist # 以美化的JSON格式打印进程列表 pm2 describe 0 # 显示关于特定进程的所有信息process pm2 monit # 监控所有进程 # 日志 pm2 logs [--raw] # 以流式方式显示所有进程的日志 pm2 flush # 清空所有日志文件 pm2 reloadLogs # 重新加载所有日志 # 动作 pm2 stop all # 停止所有进程 pm2 restart all # 重新启动所有进程 pm2 reload all # 将0s停机时间重新加载(针对网络应用) pm2 stop 0 # 停止特定的进程ID pm2 restart 0 # 重新启动特定的进程ID pm2 delete 0 # 将从pm2列表中删除进程 pm2 delete all # 将从pm2列表中删除所有进程 # 杂项 pm2 reset <process> # 重置元数据(重启时间...) pm2 updatePM2 # 更新内存中的pm2 pm2 ping # 确保pm2守护进程已被启动 pm2 sendSignal SIGUSR2 my-app # 发送系统信号给脚本 pm2 start app.js --no-daemon pm2 start app.js --no-vizion pm2 start app.js --no-autorestart
本文作者为Mr.Bai,转载请注明。