把 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。