在开发 Node.js 应用时,我们通常需要确保服务在后台运行,并且能够自动恢复。为了实现这些功能,我们可以使用 PM2 这个进程管理器。PM2 可以让我们轻松地管理 Node.js 进程和集群,并自动进行应用程序的日志记录、监控和自动重启。
环境要求
在开始使用 PM2 进行 Node.js 进程守护之前,我们需要先确保以下环境已经安装:
- Linux、macOS 或 Windows 操作系统
- Node.js 版本大于 8.0
- npm 包管理器
安装 PM2
安装 PM2 的最简单方式就是通过 npm 包管理器来安装。执行以下命令即可:
npm install -g pm2
安装完成之后,可以使用以下命令来检查 PM2 是否已经成功安装:
pm2 --version
启动应用程序
首先,让我们创建一个简单的 Node.js 应用程序,作为后续演示使用。
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - ------------------ ---------------- --------------- --------------- --------- --- ------------------- -- -- - ------------------- --------- -- ---- ---------- ---
将以上代码保存为 app.js
文件,然后通过以下命令启动:
node app.js
现在这个程序已经在命令行终端中启动运行了。但是如果我们关闭终端,程序将停止运行。因此我们需要使用 PM2 进行守护进程。
使用 PM2 守护进程
我们可以使用 PM2 管理应用程序。以下是使用 PM2 命令启动应用程序的步骤:
- 进入应用程序所在的目录。
cd /path/to/app
- 启动应用程序。
pm2 start app.js
通过以上两个步骤,你的应用程序已经开始运行了。PM2 会自动创建守护进程,并将日志文件输出到默认位置 /home/<username>/.pm2/logs
中。要查看日志文件,请使用以下命令:
pm2 logs
如果你想使用 PM2 监控你的应用程序,请使用以下命令:
pm2 monit
现在,你可以关闭终端并保持你的应用程序一直运行在后台了。如果你想要停止程序,可以使用以下命令:
pm2 stop app
如果想要重新启动程序,可以使用以下命令:
pm2 restart app
如果要从 PM2 中删除应用程序,可以使用以下命令:
pm2 delete app
自动重启应用程序
PM2 支持自动重启应用程序,这对于保证程序一直处于运行状态至关重要。PM2 默认情况下会在应用程序崩溃或者退出时自动重启程序。
如果你想要在应用程序代码发生变化时自动重启程序,你可以使用以下命令来监视你的应用程序的代码变化:
pm2 start app.js --watch
如果你还想要自动重启 Nginx 或 Node.js 进程,你可以使用以下命令:
pm2 startup
这个命令可以创建一个进程管理器服务,并且自动启动当前系统的 PM2 进程。
遇到问题
如果你在使用 PM2 过程中遇到问题,请使用以下命令将错误日志保存为文件:
pm2 logs > error.log
然后,你可以将这个日志文件发送给你的同事或者 PM2 社区成员,以便快速解决问题。
支持多个应用程序
PM2 允许我们在同一个终端里运行多个应用程序。
首先,我们需要创建一个 PM2 配置文件 ecosystem.config.js
:
-- -------------------- ---- ------- -------------- - - ----- - - ----- ------ ------- ----------- ------ ----- ---- - --------- -------------- -- --------------- - --------- ------------- -- -- - ----- --------- ------- -------------- ------ ----- -- -- --
然后,我们可以使用以下命令来启动应用程序:
pm2 start ecosystem.config.js --env production
以上命令将启动所有的应用程序。如果你只想启动其中的一个应用程序,请使用以下命令:
pm2 start ecosystem.config.js --only app
总结
本文介绍了如何使用 PM2 自动守护 Node.js 进程。我们学习了如何安装 PM2、使用 PM2 守护应用程序、自动重启应用程序、支持多个应用程序等内容。希望这篇文章对你有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64700bee968c7c53b0e3235a