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