在 CentOS 上部署 Node.js 服务,通常分为 安装 Node.js → 上传项目 → 启动服务 → 配置进程守护 →(可选)反向代理 几个步骤。下面以 CentOS 7/8 为例,给你一套常见、稳妥的做法。
# 安装依赖
sudo yum install -y curl
# 以 Node.js 18 为例
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
# 安装
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 18
# 示例目录
mkdir -p /www/nodeapp
cd /www/nodeapp
# 上传代码(scp / git / rz 等)
# 例如:
scp -r ./myapp root@服务器IP:/www/nodeapp
安装依赖:
cd /www/nodeapp/myapp
npm install --production
node app.js
# 或
npm start
⚠️ 这样一旦退出终端就会停止。
npm install -g pm2
pm2 start app.js --name mynode
pm2 list
pm2 logs mynode
pm2 restart mynode
pm2 stop mynode
pm2 delete mynode
pm2 startup
pm2 save
假设 Node 服务端口是 3000:
# CentOS 7
firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --reload
# 查看
firewall-cmd --list-ports
如果是云服务器,还要在 安全组 放行端口。
sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
sudo vi /etc/nginx/conf.d/node.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;
proxy_cache_bypass $http_upgrade;
}
}
重启 Nginx:
sudo nginx -t
sudo systemctl restart nginx
Nginx (80)
↓
PM2 (Node.js)
↓
Node App (3000)
✅ 端口被占用
lsof -i:3000
✅ npm install 慢
npm config set registry https://registry.npmmirror.com
✅ 内存不足
pm2 start app.js --max-memory-restart 300M
如果你告诉我:
我可以直接给你 一套可复制的部署方案。