服务器上的 Node.js 程序怎样保证在重启时正常运行?

服务器上的 Node.js 程序怎样保证在重启时正常运行?

forever 管理一般很不错了, 可有时服务器不小心或者 VPS 就被意外重启了… 遇到这种情况, forever 有没有恢复的方案? 或者搭配别的软件来重启应用的?

7 回复

服务器上的 Node.js 程序怎样保证在重启时正常运行?

在生产环境中,确保 Node.js 应用程序在服务器重启后能够自动恢复运行是非常重要的。虽然 forever 是一个常用的解决方案,可以管理 Node.js 应用程序并确保它们在意外退出时重新启动,但在服务器整体重启的情况下,可能需要更全面的解决方案。

使用 PM2 进行进程管理

PM2 是另一个强大的进程管理工具,它不仅可以管理单个 Node.js 进程,还能管理整个集群,并提供日志管理和监控功能。PM2 在处理服务器重启时表现得更加稳定和可靠。

安装 PM2:

npm install -g pm2

使用 PM2 启动 Node.js 应用程序:

pm2 start app.js

配置 PM2 在系统启动时自动启动应用程序:

pm2 startup

执行上述命令后,PM2 会生成一条命令,你需要将这条命令复制并粘贴到终端中执行,以设置 PM2 在系统启动时自动启动你的应用程序。

保存 PM2 进程列表以便于恢复:

pm2 save

这一步骤非常重要,因为它确保了在系统重启后,PM2 能够恢复之前保存的进程列表并重新启动这些进程。

示例代码

假设你有一个简单的 Node.js 应用程序 (app.js),内容如下:

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

使用 PM2 管理这个应用程序的步骤如下:

  1. 安装 PM2:
    npm install -g pm2
    
  2. 启动应用程序:
    pm2 start app.js
    
  3. 设置 PM2 自动启动:
    pm2 startup
    
  4. 保存 PM2 进程列表:
    pm2 save
    

通过以上步骤,你可以确保你的 Node.js 应用程序在服务器重启后能够自动恢复运行。


linux系统启动完毕之后会运行 /etc/rc.d/rc.local 的脚本 你编辑一下这个文件 加上你要运行的命令就可以了,有的系统在/etc/rc.local。 或者在/etc/init.d/里面写一个服务脚本,不过会麻烦些,具体的请问google把

前一条知道的, 就是觉得管理起来不方便, 也有过卡在这个位置的经历… 服务脚本… 其实我想找个方便的方案, 没的话只能去学下配置成服务了

Ubuntu的话可以使用upstart,非常方便。

谢. 想不到还有文档, 我去看看

为了确保在服务器重启时 Node.js 应用能够自动重启并恢复正常运行,可以使用 pm2 这样的进程管理工具。pm2 不仅能自动重启你的应用,还能帮助你更好地管理日志、监控等。

以下是如何使用 pm2 的步骤:

  1. 首先,你需要在你的服务器上安装 pm2。如果你还没有安装 Node.js 和 npm,也需要一并安装。
npm install -g pm2
  1. 安装完成后,你可以使用 pm2 启动你的 Node.js 应用。假设你的应用文件名为 app.js,你可以通过以下命令启动它:
pm2 start app.js
  1. 为了确保即使服务器重启后也能自动启动你的应用,你可以让 pm2 在系统启动时运行。这可以通过保存当前的进程列表到 pm2 的启动脚本来实现:
pm2 save

然后,你可以生成并安装启动脚本:

pm2 startup

执行上述命令后,系统会提示你运行一条命令来设置开机自启。复制并粘贴那条命令即可完成设置。

  1. 为了确保即使服务器意外重启,你的应用也能自动重启,pm2 已经默认设置了这种机制。但如果你想要进一步定制行为(比如当内存或CPU使用率超过一定阈值时重启),可以在启动时指定这些选项:
pm2 start app.js --max-memory-restart 100M

这样,如果 Node.js 应用占用的内存超过100MB,pm2 将自动重启该应用。

总之,使用 pm2 能够非常方便地确保你的 Node.js 应用即使在服务器意外重启的情况下也能自动恢复并继续运行。

回到顶部