把 Node.js 应用部署到 VPS 后,直接 node app.js 一旦断开 SSH 就会停止。生产环境需要进程守护、开机自启和反向代理。本文用 PM2 + Nginx 一步步搞定。

1. 安装 Node.js(推荐 nvm)

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

2. 部署代码

git clone https://your-repo.git app
cd app
npm install --production

3. 用 PM2 守护进程

npm install -g pm2
pm2 start app.js --name myapp
pm2 status
pm2 logs myapp

让 PM2 在服务器重启后自动拉起应用:

pm2 save
pm2 startup   # 按提示复制执行那一行 sudo 命令

4. 用 Nginx 反向代理到 80/443

假设应用监听 3000 端口,新建站点配置:

server {
    listen 80;
    server_name yourdomain.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

测试并重载:sudo nginx -t && sudo systemctl reload nginx。之后再用 Certbot 申请 SSL 即可上线 HTTPS。

5. 常见问题

  • 端口被占用:用 lsof -i:3000 查并释放。
  • 内存泄漏导致重启pm2 start app.js --max-memory-restart 300M
  • 更新代码git pull && npm install && pm2 reload myapp(零停机重载)。

需要帮忙排查部署问题,联系客服 Telegram @aliyun370