1. 什么是 PM2?
PM2 是一个 Node.js 的进程管理器,可以帮助我们方便地管理 Node.js 应用的启动、重启、停止等操作。通过 PM2,我们可以实现进程守护、进程多实例负载均衡、进程日志管理等功能。
2. PM2 的安装和启动
安装 PM2 的命令如下:
npm install pm2 -g
安装完成后,我们就可以使用 PM2 来启动我们的 Node.js 应用了。例如,我们有一个名为 app.js
的 Node.js 应用,我们可以使用 PM2 来启动它,命令如下:
pm2 start app.js
使用 PM2 启动的应用会在后台以 daemon 的方式运行。如果需要停止或重启应用,我们可以使用以下命令:
pm2 stop <app-id> pm2 restart <app-id>
其中,<app-id>
是我们启动的应用的 ID,可以通过 pm2 list
命令查看已经启动的应用的 ID。
3. PM2 配置文件
PM2 可以通过配置文件来进行更细粒度的配置。配置文件必须是一个符合 JSON 格式的文件,建议将其命名为 ecosystem.config.js
。
-- -------------------- ---- ------- -------------- - - ---- - - - ----- --------- ------- ----------- ---------- ------ ---------- ---------- ---- - --------- ------------ - - - -
上面的配置文件定义了一个名为 my-app
的应用,它使用 app.js
作为启动脚本,使用集群模式运行,在生产环境下运行(设置 NODE_ENV 为 production)。
4. PM2 进程管理
使用 PM2 进行进程管理,我们可以实现进程守护、进程多实例负载均衡、进程日志管理等功能。
4.1 进程守护
PM2 可以监控我们的应用,在应用在意外退出时自动重启它。我们可以通过 --watch
参数来启用进程守护功能,例如:
pm2 start app.js --watch
4.2 进程多实例负载均衡
PM2 可以启动多个进程实例,将负载均衡在多个实例之间。我们可以通过 instances
参数来指定启动的实例数,例如:
pm2 start app.js -i 4
上面的命令会启动 4 个实例。
4.3 进程日志管理
PM2 可以方便地管理每个进程实例的日志。我们可以使用 logrotate
来自动压缩和备份日志文件。例如:
pm2 set pm2-logrotate:compress true pm2 set pm2-logrotate:max_size 1m pm2 set pm2-logrotate:retain 7
上面的命令启用了日志压缩功能,并设置了最大大小为 1MB,保留最近 7 个日志文件。
5. PM2 与 Docker
如果我们使用 Docker 来部署 Node.js 应用,我们可以使用 PM2 来管理容器中的进程。我们只需要在 Dockerfile 中安装并启动 PM2,然后将应用作为一个子进程来启动即可。例如:
-- -------------------- ---- ------- ---- ------- - -- --- --- --- ------- --- -- - ------ ------- ---- - ------ ---- ------------ --------- ----- --- ---- - --------- ---- - ---- - -- ------------ --- --------------- -------- --------- ----------
结论
通过 PM2,我们可以方便地进行 Node.js 应用的进程管理,实现进程守护、进程多实例负载均衡、进程日志管理等功能,提高我们的应用的健壮性和可靠性。同时,PM2 也可以与 Docker 集成,方便我们在容器中管理 Node.js 应用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66ee607e6fbf960197218c46