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