首页 > 编程语言 >Node.js应用在Linux上如何自动重启

Node.js应用在Linux上如何自动重启

来源:互联网 2026-07-23 08:14:02

Node.js应用在Linux上自动重启有四种主流方案:PM2操作简便且生态成熟,支持进程崩溃和服务器重启后自动恢复;systemd为系统级服务管理,稳定性强,通过Restart=always实现自动重启;Supervisor作为通用进程控制系统,配置autorestart=true确保进程崩溃后自动拉起;Cron结合Shell脚本适合兜底,定时重启但无法即

在 Linux 环境下实现 Node.js 应用的自动重启,有多种实用方案可供选择。本文将逐一拆解几种主流方法,分析各自的特点与适用场景。

Node.js应用在Linux上如何自动重启

长期稳定更新的攒劲资源: >>>点此立即查看<<<

1. 使用 PM2

PM2 是 Node.js 生态中最常用的进程管理工具之一,相当于应用层面的守护进程。当应用进程崩溃或意外退出时,PM2 会自动将其重新拉起,无需人工干预。

安装 PM2

npm install pm2 -g

启动应用

pm2 start app.js --name my-app

配置自动重启

PM2 的自动重启能力体现在两个层面:一是进程崩溃时自动拉起,二是服务器重启后自动恢复进程。配置方法非常简单,只需两条命令:

pm2 startup
pm2 save

pm2 startup 会生成系统启动脚本,pm2 save 则将当前运行的进程列表保存到磁盘。服务器重启后,PM2 会自动读取该列表,恢复所有之前运行的应用——这正是其核心价值所在。

2. 使用 systemd

如果倾向于使用 Linux 原生的服务管理机制,systemd 是一个极为可靠的选择。作为系统级服务管理器,用它来管理 Node.js 应用,天然具备高稳定性。

创建 systemd 服务文件

/etc/systemd/system/ 目录下创建服务文件,例如 my-app.service

[Unit]
Description=My Node.js Application
After=network.target

[Service]
ExecStart=/usr/bin/node /path/to/your/app.js
Restart=always
User=your-user
Environment=NODE_ENV=production
Environment=PORT=3000

[Install]
WantedBy=multi-user.target

关键配置项是 Restart=always——它告诉 systemd,只要进程退出,无论何种原因,都自动重新拉起。结合 ExecStart 指定的启动命令,整个服务便具备了自动重启能力。

启动服务

sudo systemctl daemon-reload
sudo systemctl start my-app
sudo systemctl enable my-app

enable 命令使服务随系统自动启动,这样即使服务器重启,应用也会自动运行。

3. 使用 Supervisor

Supervisor 是一个经典的进程控制系统,在 Python 社区中广泛使用,但同样适用于管理 Node.js 应用。其核心逻辑是:启动一个守护进程,由它监控和管理应用进程。

安装 Supervisor

sudo apt-get install supervisor -y

配置 Supervisor

/etc/supervisor/conf.d/ 目录下创建配置文件,例如 my-app.conf

[program:my-app]
command=/usr/bin/node /path/to/your/app.js
autostart=true
autorestart=true
stderr_logfile=/var/log/my-app.err.log
stdout_logfile=/var/log/my-app.out.log
user=your-user
environment=NODE_ENV="production",PORT="3000"

autorestart=true 是核心配置,确保进程崩溃后自动被拉起。同时 autostart=true 保证 Supervisor 启动时自动拉起该应用。

更新 Supervisor 配置并启动应用

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start my-app

4. 使用 Cron 和 Shell 脚本

最后一种方法相对“朴素”,但胜在灵活,适合对稳定性要求不极致的场景。本质上是通过定时任务执行脚本,定期重启应用。

创建 Shell 脚本

创建 restart-app.sh 文件:

#!/bin/bash
pm2 restart my-app

如果使用 systemd 或 Supervisor,脚本中可替换为相应的重启命令。

赋予脚本执行权限

chmod +x restart-app.sh

使用 Cron 设置定时任务

编辑 crontab 文件:

crontab -e

添加一行,例如每分钟重启一次:

* * * * * /path/to/restart-app.sh

这种方法的好处是控制粒度较高,但缺点在于并非真正的“崩溃自动重启”,而是定时重启——如果应用在两次定时任务之间崩溃,不会自动恢复。因此它更适合作为兜底方案,或与其他工具配合使用。

总体而言,这几种方案各有侧重:PM2 最适合 Node.js 开发者,操作简单、生态成熟;systemd 是系统级方案,稳定性最强;Supervisor 比较通用,适合多语言团队;Cron 则轻量灵活,但功能有限。可根据实际需求选择一种,或者组合使用以取得更好效果。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。