快速入门Node进程管理工具PM2

Mr.Bai 1,957 浏览 0

PM2 是一个守护进程管理器,它将帮助您管理和保持您的应用程序在线。PM2 入门很简单,它以简单直观的 C​​LI 形式提供,可通过 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]
快速入门Node进程管理工具PM2

PM2

显示日志

实时显示日志:

$ pm2 logs

显示指定多少行日志:

$ pm2 logs --lines 200

基于终端的仪表板显示

这是一个直接适合终端的实时仪表板:

$ pm2 monit

快速入门Node进程管理工具PM2

pm2.io:监控和诊断 Web 界面

基于 Web 的仪表板,带有诊断系统的跨服务器:

$ pm2 plus

快速入门Node进程管理工具PM2

集群模式

对于 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

官方文档: https://pm2.keymetrics.io/docs/usage/quick-start/

发表评论 取消回复
表情 图片 链接 代码

分享
请选择语言