
next start を実行すれば Next.js は動きます。
サイトにアクセスしてみれば、ちゃんとページが表示されます。 しかし、サーバーが再起動したり、何らかの不具合などでプロセスが閉じてしまうとサイトが表示されなくなります。
これを解決するために PM2 によるプロセス管理を導入しています。
PM2 とは何か
PM2(Process Manager 2)は Node.js のプロセス管理ツールです。 npm でグローバルインストールして使います。 グローバルインストールとは、特定のプロジェクトではなくサーバー全体で使えるようにインストールする方法です。
「プロセス管理」というと難しく聞こえますが、やっていることはシンプルです。
next start で起動した Node.js のプロセスを、ずっと面倒見続けてくれるツールです。
具体的には以下のことをやってくれます。
| 機能 | 内容 | |---|---| | デーモン化 | ターミナルを閉じてもバックグラウンドで動き続ける | | 自動再起動 | クラッシュしたら自動で再起動する | | 起動時自動起動 | OS 起動時に自動でプロセスを立ち上げる | | ログ管理 | 標準出力・エラーをログファイルに記録する | | 状態監視 | CPU・メモリ・稼働時間・再起動回数を確認できる |
「デーモン」とは、バックグラウンドで常に動き続けるプログラムのことです。 ターミナルとは切り離されて独立して動くため、SSH 接続を閉じても影響を受けません。
next start だけでは何が起きるか
ターミナルを閉じたらサーバーが止まる
next start はターミナルに紐づいたプロセスとして動きます。
ターミナル → Node.js プロセス(next start)
この関係は、ターミナルが生きている間しか維持されません。
SSH 接続を切った瞬間、または誤ってターミナルウィンドウを閉じた瞬間に、next start のプロセスも一緒に終了します。
サイトを見ようとしたユーザーには、何も表示されません。
VPS が再起動したらサーバーが止まる
VPS は月に1回程度、メンテナンスなどで再起動が発生することがあります。
next start だけで運用している場合、再起動後に誰かが手動で next start を実行するまで、サイトはずっと止まったままです。
気づかなければ、何日も止まり続けます。
クラッシュしても何もしてくれない
メモリ不足や突発的な高負荷でプロセスがクラッシュすることがあります。
next start だけの場合、クラッシュしたらそこで終わりです。
誰かが気づいて手動で再起動するまで、サイトは止まったままです。
PM2 があるとどうなるか
PM2 が管理するプロセスは、ターミナルとは切り離されたデーモンとして動きます。
PM2 デーモン → Node.js プロセス(next start)
↓ ターミナルを閉じても PM2 デーモンは生きている
↓ Node.js プロセスも生き続ける
クラッシュが発生したとき、PM2 は自動で再起動します。
VPS が再起動したとき、pm2 startup と pm2 save の設定があれば自動で Next.js も起動します。
(pm2 startup は「VPS 起動時に自動で PM2 を立ち上げる設定」、pm2 save は「現在のプロセス一覧を保存する設定」です)
| 状況 | PM2 なし | PM2 あり | |---|---|---| | ターミナルを閉じる | サーバーが止まる | 動き続ける | | VPS を再起動する | 手動で起動が必要 | 自動で起動する | | クラッシュが発生する | 止まったまま | 自動で再起動する |
VPS 上のサーバーを自分で監視し続けるのは難しく、再起動や不具合が発生しても、自動的にサイトが閲覧できる状態になるのは、便利であり、サイト運営上とても助かります。
pm2 status で今の状態がわかる
毎日確認するものではないですが、「なんか遅いな」と感じたときや、 デプロイ後の確認に使えます。
bashpm2 status

status が online なら正常に動いています。
restarts の数が多い場合は、何度もクラッシュして再起動していることを意味します。
問題の兆候を早めに気づける点も、VPS 上での運用で PM2 を使う理由の一つです。
PM2 を使うと決めた理由
正直なところ、個人ブログに本格的なプロセス管理ツールが必要なのか、という疑問が最初はありました。 しかし考えてみると、「ターミナルを閉じたらサーバーが止まる」という時点で、本番 VPS での運用としては不完全だと気づきました。
読者がいつアクセスするかわかりません。 夜中にターミナルを閉じて寝たら、その間ずっとサイトが止まっている可能性があります。
それを防ぐために必要な設定が、PM2 のインストールと起動設定でした。 手順は数分で終わります。 それで「動き続ける」保証が得られるなら、使わない理由がありませんでした。
メインブログの関連記事
PM2 の具体的な導入手順はメインブログの第18回で解説しています。





