如何使 PM2 在系统启动时自动启动 Node.js 应用程序

PM2 是一款功能强大、使用广泛、功能丰富、可用于生产Node.js的流程管理器。每次服务器启动/重启时,使用 PM2 管理的进程重新启动 PM2 至关重要。PM2 的主要功能之一是支持启动脚本(根据服务器上的默认 init 系统动态生成),该脚本在每次服务器重启时重新启动 PM2 和您的进程。
启动脚本将 PM2 设置为 init 系统下的服务。当服务器重新启动时,它将自动重新启动 PM2,然后 PM2 将重新启动它管理的所有Node.js应用程序/进程。
在本文中,我们将向您展示如何将 PM2 部署为一项服务,以可靠地管理您的 Node.js 应用程序。在本指南中,测试系统使用 systemd 服务和系统管理器。本文中的所有命令都将以 root 身份执行(必要时使用 sudo,以便具有调用权限的用户调用它)。

为 Init 系统生成 PM2 启动脚本

PM2 旨在与 Linux 系统上的默认 init 系统(它可以自动检测)配合使用,以生成启动脚本并将 PM2 配置为可在系统启动时重新启动的服务。
要生成启动脚本,只需以 root 身份运行以下命令:
# pm2 startup
启动子命令告诉 PM2 检测可用的 init 系统,生成配置并启用启动系统。

您还可以像这样显式指定 init 系统:
# pm2 startup systems

要确认 PM2 启动服务已在 systemd 下启动并运行,请运行以下命令(将 pm2-root.service 替换为您的服务的实际名称,检查上一个命令的输出):
# systemctl status pm2-root.service

启动 Node.js 应用程序/进程

接下来,您希望使用 PM2 启动 Node.js 应用程序,如下所示。如果您已经启动并运行了它们,并通过 PM2 启动,则可以跳过此步骤:
# cd /var/www/backend/api-v1-staging/
pm2 start src/bin/www.js -n api-service-staging

接下来,您需要通过运行以下命令来注册/保存要使用 PM2 管理的进程的当前列表,以便它们在系统启动时(每次预期或服务器意外重启时)重新生成:
# pm2 save

验证 PM2 在启动时自动启动 Node.js 应用程序

最后,您需要测试设置是否正常工作。重新启动系统,并检查是否所有Node.js进程都在 PM2 下运行。
# pm2 ls
or
pm2 status
请注意,您可以通过运行以下命令来手动恢复进程:
# pm2 resurrect

禁用启动系统

您可以通过运行 unstartup 子命令来禁用启动系统,如下所示。
# pm2 unstartup
OR
pm2 startup systemd

要更新启动脚本,请先禁用它,然后再次启动它,如图所示。
# pm2 unstartup
pm2 startup

转自:https://cn.linux-console.net/?p=2525

 

posted @ 2026-08-26 18:15  刘镇维  阅读(11)  评论(0)    收藏  举报