温馨提示×

centos怎样设置nodejs服务

小樊
50
2026-10-05 19:04:22
栏目: 编程语言

在 CentOS 上“设置 Node.js 服务”通常包含两部分:安装 Node.js 和 把 Node 项目做成系统服务(开机自启、后台运行)。下面按常见场景一步步说明(以 CentOS 7/8 为例)。


一、安装 Node.js

方式 1:使用 NodeSource(推荐,版本新)

# 安装依赖
sudo yum install -y gcc-c++ make curl

# 以 Node.js 18 为例
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -

# 安装
sudo yum install -y nodejs

# 验证
node -v
npm -v

方式 2:使用 EPEL(版本较旧)

sudo yum install -y epel-release
sudo yum install -y nodejs npm

二、准备 Node.js 项目

假设你有一个项目:

/opt/myapp
├── app.js
└── package.json

测试运行:

cd /opt/myapp
node app.js

确认能正常启动(如监听 3000 端口)。


三、用 systemd 设置 Node.js 服务(推荐)

1️⃣ 创建 systemd 服务文件

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

内容示例:

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

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

[Install]
WantedBy=multi-user.target

说明:

  • User:建议用非 root 用户(如 nodeuser)
  • ExecStart:node 实际路径可用 which node 查看

2️⃣ 创建运行用户(可选但推荐)

sudo useradd -r -s /bin/false nodeuser
sudo chown -R nodeuser:nodeuser /opt/myapp

3️⃣ 启动并设置开机自启

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp

4️⃣ 查看状态与日志

sudo systemctl status myapp
journalctl -u myapp -f

四、使用 PM2(更简单,适合开发/部署)

安装 PM2

sudo npm install -g pm2

启动项目

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

开机自启

pm2 startup
pm2 save

常用命令

pm2 list
pm2 logs
pm2 restart myapp
pm2 stop myapp

五、防火墙(如果需要外网访问)

sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload

六、常见问题

✅ 端口被占用

lsof -i:3000

✅ 权限问题

  • 不要用 root 跑 node
  • 目录权限要正确

✅ systemd 启动失败

  • 看日志:journalctl -u myapp
  • 检查 node 路径是否正确

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

  • CentOS 版本(7 / 8 / Stream)
  • Node 项目类型(Express / Nest / 脚本)
  • 是否要反代(Nginx)

我可以给你更精确的配置示例。

0 踩