温馨提示×

centos如何配置nodejs启动

小樊
40
2026-08-29 17:49:45
栏目: 编程语言

CentOS 上配置并启动 Node.js,通常分为 安装 Node.js、配置环境、运行/开机自启 这几步。下面给你一套 生产环境常用做法(systemd),从零开始说明。


一、安装 Node.js(推荐方式)

方式一:使用 NodeSource(推荐 ✅)

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

# 添加 Node.js 20.x 源(可换成 18.x、22.x)
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -

# 安装 Node.js
sudo yum install -y nodejs

# 验证
node -v
npm -v

方式二:使用 NVM(适合开发环境)

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc

nvm install 20
nvm use 20
node -v

二、准备 Node.js 项目

假设你的项目目录是:

/opt/app/my-node-app

进入目录并安装依赖:

cd /opt/app/my-node-app
npm install

确认可以手动启动:

node app.js
# 或
npm start

三、使用 systemd 配置 Node.js 开机自启(生产推荐 ✅)

1️⃣ 创建 systemd 服务文件

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

内容示例:

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

[Service]
Type=simple
User=root
WorkingDirectory=/opt/app/my-node-app
ExecStart=/usr/bin/node /opt/app/my-node-app/app.js
Restart=always
RestartSec=10
Environment=NODE_ENV=production
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

⚠️ 注意:

  • ExecStart 里用 绝对路径
  • node 路径可用 which node 查看

2️⃣ 重载 systemd 并启动

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

3️⃣ 查看状态与日志

systemctl status nodeapp
journalctl -u nodeapp -f

四、常见 Node.js 启动方式

✅ 方式 1:直接启动

node app.js

✅ 方式 2:npm 启动

npm start

systemd 写法:

ExecStart=/usr/bin/npm start

✅ 方式 3:使用 PM2(强烈推荐)

安装 PM2

npm install -g pm2

启动项目

pm2 start app.js --name my-app
pm2 save
pm2 startup

PM2 会自动生成 systemd 服务,服务器重启后自动启动。


五、防火墙放行端口(重要)

假设 Node.js 监听 3000 端口:

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

六、常见问题排查

1️⃣ Node.js 启动后立刻退出?

  • 检查端口是否被占用
  • 是否有未捕获异常
  • 查看日志:
journalctl -u nodeapp -n 50

2️⃣ systemd 启动失败?

systemctl status nodeapp

常见原因:

  • node 路径不对
  • 工作目录不存在
  • 权限不足(不要随便用 root)

七、推荐生产方案总结 ✅

场景 推荐
生产环境 systemd / PM2
开发环境 nvm
进程守护 PM2
自动重启 systemd + Restart

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

  • ✅ CentOS 7 还是 8 / Stream?
  • ✅ Node.js 版本?
  • ✅ 是否用 npm startnode app.js
  • ✅ 是否需要 Nginx 反向代理?

我可以给你 完全定制的一整套配置方案

0