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 までご連絡ください。