下面分几种常见方式来说明 如何在 CentOS 上配置 Node.js 服务,从安装到以服务方式运行(推荐 systemd)。
# 安装依赖
sudo yum install -y curl
# 添加 Node.js 18.x 源(可换成 16、20 等)
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
# 安装 Node.js
sudo yum install -y nodejs
# 查看版本
node -v
npm -v
sudo yum install -y epel-release
sudo yum install -y nodejs npm
mkdir -p /opt/nodeapp
cd /opt/nodeapp
上传或创建你的项目,例如:
// app.js
const http = require('http');
const server = http.createServer((req, res) => {
res.end('Hello Node.js');
});
server.listen(3000, () => {
console.log('Server running on port 3000');
});
运行测试:
node app.js
sudo vi /etc/systemd/system/nodeapp.service
内容示例:
[Unit]
Description=Node.js App
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/nodeapp
ExecStart=/usr/bin/node /opt/nodeapp/app.js
Restart=always
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
⚠️ 建议不要用
root用户运行,可新建用户:
sudo useradd -r -s /bin/false nodeuser
然后 User=nodeuser
sudo systemctl daemon-reload
sudo systemctl start nodeapp
sudo systemctl enable nodeapp
systemctl status nodeapp
journalctl -u nodeapp -f
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload
sudo yum install -y nginx
sudo systemctl enable --now nginx
sudo vi /etc/nginx/conf.d/nodeapp.conf
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
}
}
sudo nginx -t
sudo systemctl reload nginx
npm install -g pm2
pm2 start /opt/nodeapp/app.js --name nodeapp
pm2 startup
pm2 save
which node
如果路径不对,使用绝对路径:
ExecStart=/usr/bin/node
netstat -tunlp | grep 3000
✅ 生产环境最佳实践
如果你愿意,可以告诉我:
我可以给你一套 完全贴合你项目的配置方案。