温馨提示×

centos如何设置nodejs开机启动

小樊
37
2026-09-21 03:05:35
栏目: 编程语言

在 CentOS 上让 Node.js 应用开机启动,常见有几种方式,取决于你的 CentOS 版本(CentOS 6 用 init.d,CentOS 7+ 用 systemd)。下面以 CentOS 7 / 8(systemd) 为例,最推荐这种方式。


一、使用 systemd(推荐,CentOS 7+)

1. 准备 Node.js 启动脚本

假设你的 Node 项目在:

/opt/myapp/app.js

2. 创建 systemd 服务文件

sudo vi /etc/systemd/system/nodeapp.service

内容示例(根据实际情况修改):

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

[Service]
Type=simple
User=root
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/node /opt/myapp/app.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

说明:

  • ExecStart:node 的绝对路径(可用 which node 查看)
  • User:建议用非 root 用户(如 nodeuser
  • Restart:崩溃自动重启

3. 重载并启动

sudo systemctl daemon-reload
sudo systemctl start nodeapp
sudo systemctl enable nodeapp

4. 查看状态

systemctl status nodeapp

二、使用 pm2(最简单,生产常用)

1. 安装 pm2

npm install -g pm2

2. 启动应用

pm2 start /opt/myapp/app.js --name myapp

3. 设置开机启动

pm2 startup
pm2 save

CentOS 7+ 会自动生成 systemd 服务


三、CentOS 6(init.d,老系统)

创建脚本:

vi /etc/init.d/nodeapp

示例:

#!/bin/bash
# chkconfig: 2345 90 10
# description: node app

case "$1" in
start)
  /usr/bin/node /opt/myapp/app.js &
  ;;
stop)
  pkill node
  ;;
esac
exit 0
chmod +x /etc/init.d/nodeapp
chkconfig nodeapp on

四、常见问题

  • node 命令找不到:用绝对路径
  • 端口权限问题:1024 以下端口需 root 或 nginx 反代
  • 日志查看journalctl -u nodeapp

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

  • CentOS 版本
  • Node 安装方式(源码 / nvm / yum)
  • 是否用 pm2

我可以给你一份完全适配你环境的配置

0