温馨提示×

centos nodejs如何开启守护进程

小樊
39
2026-07-20 01:35:57
栏目: 编程语言

在 CentOS 上让 Node.js 以守护进程方式运行,常见有以下几种方案,从简单到生产级依次说明。


一、最简单:使用 nohup(不推荐生产)

适合临时测试。

nohup node app.js > app.log 2>&1 &

查看进程:

ps -ef | grep node

缺点:

  • 服务器重启不会自动启动
  • 崩溃不会自动重启

二、使用 pm2(✅ 强烈推荐)

1️⃣ 安装 pm2

npm install -g pm2

如果 npm 没装:

yum install -y nodejs npm

2️⃣ 启动 Node.js 应用

pm2 start app.js

指定名称:

pm2 start app.js --name my-api

3️⃣ 查看进程

pm2 list
pm2 logs

4️⃣ 设置开机自启(非常重要)

pm2 startup

执行后会提示一条命令,类似:

sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u youruser --hp /home/youruser

复制并执行即可。

保存当前进程列表:

pm2 save

✅ 重启服务器后 Node.js 会自动启动


5️⃣ 重启 / 停止

pm2 restart my-api
pm2 stop my-api
pm2 delete my-api

三、使用 systemd(CentOS 7+ 官方方式)

适合生产环境、服务器部署

1️⃣ 创建 service 文件

sudo vi /etc/systemd/system/node-app.service

内容示例:

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

[Service]
Type=simple
User=root
WorkingDirectory=/opt/node-app
ExecStart=/usr/bin/node /opt/node-app/app.js
Restart=always
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target

⚠️ 注意:

  • node 路径可以用 which node 查看
  • WorkingDirectory 是你的项目目录

2️⃣ 启动并设置开机启动

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

3️⃣ 查看状态

systemctl status node-app
journalctl -u node-app -f

四、三种方式对比

方式 自动重启 开机启动 推荐程度
nohup
pm2 ⭐⭐⭐⭐⭐
systemd ⭐⭐⭐⭐

五、推荐方案 ✅

场景 推荐
快速开发 / 测试 pm2
生产环境 pm2 或 systemd
运维规范 systemd
多 Node 应用 pm2

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

  • CentOS 版本(6 / 7 / 8)
  • Node.js 安装方式(yum / nvm / 编译)
  • 是否使用 Express / Koa / NestJS

我可以给你完全定制化的守护进程配置

0