在使用 Node.js 构建 Web 应用程序时,我们经常会遇到应用程序因错误而奔溃的情况。为了解决这个问题,我们可以使用 PM2 进行进程的自动重启。PM2 是一种先进的进程管理器,它可以轻松地管理我们的 Node.js 服务器进程。
下面是一份使用 PM2 进行 Node.js 进程自动重启的指南,让你的应用程序能够在失败时自动重启。
安装 PM2
首先,我们需要安装 PM2。
npm install pm2 -g
我们还需要一个 Node.js 应用程序来测试 PM2。以下是一个简单的应用程序,用于在 3000 端口上侦听 HTTP 请求,并返回 “Hello, World!”。
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - ------------------ ---------------- --------------- --------------- --------- --- ------------------- -- -- - ------------------- ------- -- ------------------------ ---展开代码
我们将这个代码存储在一个名为 server.js
的文件中。
现在,我们可以使用以下命令启动应用程序:
node server.js
运行后将在控制台看到 Server running at http://localhost:3000
,同时我们可以在浏览器中访问地址 http://localhost:3000
,看到 “Hello, World!” 的输出。
使用 PM2
接下来,我们将使用 PM2 进行进程管理。以下是一些基本的 PM2 命令。
pm2 start
: 启动 Node.js 应用程序。pm2 stop
: 停止 Node.js 应用程序。pm2 restart
: 重启 Node.js 应用程序。pm2 list
: 显示当前正在运行的应用程序列表。pm2 logs
: 显示应用程序的日志。
我们可以使用以下命令使用 PM2 启动之前编写的应用程序。
pm2 start server.js
运行后,我们可以使用以下命令来查看我们的应用程序是否正在运行。
pm2 list
输出类似如下内容:
┌──────┬─────────┬──────────┬───────┬─────────┬──────────┐ │ Name │ status │ restart │ cpu │ mem │ uptime │ ├──────┼─────────┼──────────┼───────┼─────────┼──────────┤ │ app │ online │ 0 │ 0% │ 20.1mb │ 0s │ └──────┴─────────┴──────────┴───────┴─────────┴──────────┘
我们可以使用以下命令来查看应用程序的日志。
pm2 logs
输出类似如下内容:
[Tue Jan 01 2019 00:00:03 GMT+0800 (CST)] INFO Server running at http://localhost:3000
我们还可以使用以下命令停止应用程序。
pm2 stop server.js
现在我们已经使用 PM2 启动和停止了我们的应用程序。但是,如果我们想在应用程序失败时自动重启呢?
自动重启
PM2 允许我们使用 --watch
选项监视应用程序的文件更改,并在更改时自动重启应用程序。以下是使用 --watch
选项启动应用程序的命令。
pm2 start server.js --watch
接下来,我们将更改应用程序代码,使其失败并尝试自动重启。
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - ----- --- ----------------- --- ------------------- -- -- - ------------------- ------- -- ------------------------ ---展开代码
我们使用了 throw new Error('Failed!')
表示应用程序出现错误。
首先,我们使用以下命令启动应用程序,并启用 --watch
选项以自动重启应用程序。
pm2 start server.js --watch
接下来,我们访问应用程序终端会自动抛出错误,PM2会自动停止应用程序并重新启动它。
输出类似如下内容:
[Tue Jan 01 2019 00:00:03 GMT+0800 (CST)] ERROR Failed! [Tue Jan 01 2019 00:00:03 GMT+0800 (CST)] PM2 : Stopping app:server id:0 [Tue Jan 01 2019 00:00:03 GMT+0800 (CST)] PM2 : App [server] with id [0] and pid [19372], exited with code [1] via signal [SIGINT] [Tue Jan 01 2019 00:00:03 GMT+0800 (CST)] PM2 : Starting execution sequence in -fork mode- for app name:server id:0 [Tue Jan 01 2019 00:00:03 GMT+0800 (CST)] PM2 : App name:server id:0 online
我们可以在应用程序主文件的根目录中添加 ecosystem.config.js
文件,对应用程序的配置进行更多的定制。
-- -------------------- ---- ------- -------------- - - ---- - -- ----- --------- ------- -------------- ----- --- ------ ------ ---- - ----------- -------------- -- --------------- - ----------- ------------- - -- -展开代码
现在我们已经成功地使用 PM2 进行了 Node.js 进程自动重启的指南。当我们的应用程序出现问题时,它会自动停止和重启应用程序,从而使我们的应用程序保持在线。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67b81c4f306f20b3a659dc40