在 CentOS 上配置并启动 Node.js,通常分为 安装 Node.js、配置环境、运行/开机自启 这几步。下面给你一套 生产环境常用做法(systemd),从零开始说明。
# 安装依赖
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
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
假设你的项目目录是:
/opt/app/my-node-app
进入目录并安装依赖:
cd /opt/app/my-node-app
npm install
确认可以手动启动:
node app.js
# 或
npm start
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 查看sudo systemctl daemon-reload
sudo systemctl start nodeapp
sudo systemctl enable nodeapp
systemctl status nodeapp
journalctl -u nodeapp -f
node app.js
npm start
systemd 写法:
ExecStart=/usr/bin/npm start
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
journalctl -u nodeapp -n 50
systemctl status nodeapp
常见原因:
| 场景 | 推荐 |
|---|---|
| 生产环境 | systemd / PM2 |
| 开发环境 | nvm |
| 进程守护 | PM2 |
| 自动重启 | systemd + Restart |
如果你愿意,可以告诉我:
npm start 或 node app.js?我可以给你 完全定制的一整套配置方案。