温馨提示×

ubuntu nodejs如何守护

小樊
51
2026-10-13 12:18:56
栏目: 编程语言

在 Ubuntu 上“守护(daemonize / 后台稳定运行)Node.js 服务”,常见有几种方式,从简单到生产级依次是:


一、最基础:nohup(不推荐生产)

nohup node app.js > app.log 2>&1 &
  • 退出终端不会停
  • 服务器重启会丢
  • 崩溃不会自动重启

✅ 适合:临时测试


二、systemd(✅ 推荐,Ubuntu 官方方式)

1️⃣ 创建服务文件

sudo nano /etc/systemd/system/myapp.service

内容示例:

[Unit]
Description=Node.js App
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/app.js
Restart=on-failure
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

⚠️ 确保 node 路径正确(which node)

2️⃣ 启动 & 开机自启

sudo systemctl daemon-reexec
sudo systemctl enable myapp
sudo systemctl start myapp

3️⃣ 常用命令

systemctl status myapp
journalctl -u myapp -f
sudo systemctl restart myapp

✅ 优点:

  • 崩溃自动重启
  • 开机自启
  • 日志统一管理

三、PM2(✅ Node 项目最常用)

安装

sudo npm install -g pm2

启动

pm2 start app.js --name myapp

开机自启

pm2 startup
pm2 save

常用命令

pm2 list
pm2 logs
pm2 restart myapp
pm2 stop myapp

✅ 优点:

  • Node 专用
  • 自动重启
  • 日志 / 监控友好

四、Docker(生产级推荐)

FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "app.js"]

配合:

  • docker restart=always
  • systemd / k8s

五、如何选择?

场景 推荐
学习 / 测试 nohup
单台服务器 systemd / PM2
多服务 / 微服务 Docker
生产环境 systemd + PM2 / Docker

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • Node 版本
  • 是否是 Web 服务(如 Express / Nest)
  • 是否要用 npm start

我可以直接帮你写一份可用的 systemd 或 PM2 配置。

0 踩