Nuxt.jsプロジェクトをPM2でデプロイし、安定稼働させる方法
✅ 🚀 はじめに:なぜWordPressからNuxt.jsへ移行したのか
長らくRaspberry Pi(ラズパイ)とWordPressの組み合わせでブログを運用してきましたが、表示速度の向上と、モダンなフロントエンド技術への挑戦を兼ねて、サイトのフルリニューアルを決意しました。選んだのは、当時高い人気を誇っていたVue.jsベースのフレームワーク「Nuxt.js」です。WordPressのような動的なCMSも便利ですが、自分好みのデザインやパフォーマンスを追求できるNuxt.jsへの移行は、インフラエンジニアとしてのスキルアップにも繋がりました。今回は、ビルドしたNuxtプロジェクトをLinuxサーバー上で永続的に稼働させるために不可欠なツール「PM2」の導入手順を解説します。
✅ PM2とは?なぜ必要なのか
通常、Node.jsのアプリケーション(Nuxtなど)を起動する際はnpm run startなどのコマンドを実行します。しかし、この方法ではターミナルを閉じたり、SSHの接続が切れたりすると、プロセスが終了してサイトがダウンしてしまいます。これを防ぎ、サーバーが再起動した際やエラーでプロセスが落ちた際にも、自動的にアプリケーションを再起動・維持してくれる「プロセス管理ツール」が PM2 です。
✅ 📝 ステップ1:PM2のインストール
まずは、サーバー環境にPM2をグローバルインストールします。管理者権限(sudo)を使用して実行してください。
📌 npmを使用する場合
sudo npm install pm2 -g
📌 yarnを使用する場合
sudo yarn global add pm2 --prefix /usr/local
インストール完了後、pm2 -vでバージョンが表示されれば準備完了です。
✅ 📝 ステップ2:ecosystem.config.jsによる詳細設定
PM2はコマンド一つで起動することも可能ですが、設定ファイル(ecosystem.config.js)を用意することで、クラスタモードの利用や環境変数の管理が容易になります。プロジェクトのルートディレクトリに移動し、ファイルを新規作成します。
vim ecosystem.config.js
設定内容は以下の通りです。
module.exports = {
apps: [
{
name: 'NuxtAppName', // プロセス一覧に表示される任意の名前
exec_mode: 'cluster', // クラスタモード(複数プロセスによる負荷分散)
instances: 'max', // CPUのコア数に合わせて最大インスタンスを起動
script: './node_modules/nuxt/bin/nuxt.js',
args: 'start' // nuxt startコマンドを実行
}
]
}
📌 ポイント:exec_mode: 'cluster' の利点
ラズパイのようなマルチコアCPUを搭載した環境では、clusterモードを指定することで、すべてのコアを有効活用し、より高いパフォーマンスを発揮させることができます。
✅ 📝 ステップ3:ビルドとプロセスの起動
設定が完了したら、Nuxtプロジェクトをビルドし、PM2でプロセスを登録・開始します。
# Nuxtプロジェクトをプロダクション用にビルド
npm run build
# PM2でプロセスを開始
pm2 start ecosystem.config.js
これで、ターミナルを閉じてもブログが公開され続ける状態になりました。
✅ 📝 ステップ4:稼働状況の確認と管理
PM2には強力なモニタリング機能が備わっています。運用中によく使うコマンドをいくつか紹介します。
📌 プロセス一覧の確認
pm2 ls
ここで、ステータスがonlineになっていれば正常です。
📌 ログの確認
エラーが発生した際や、アクセスログを確認したい時に便利です。
pm2 logs [name]
📌 プロセスの再起動・停止
pm2 restart all # すべてのプロセスを再起動
pm2 stop [name] # 特定のプロセスを停止
✅ 📌 まとめ:モダンな環境への移行を終えて
WordPressからNuxt.jsへの移行は、単なるツールの変更ではなく、プロセスの永続化やリバースプロキシの設定など、サーバーサイドの深い理解を深める良い機会となりました。PM2は非常に多機能で、今回紹介した設定以外にも、ログの自動ローテーションや、サーバー起動時の自動立ち上げ設定(pm2 startup)など、商用環境でも通用する機能が豊富です。現在はAstroなど、より軽量なフレームワークへの移行も進んでいますが、「Node.jsアプリケーションを安定して動かす」というPM2の知見は、今後も様々なプロジェクトで活かせる技術だと確信しています。
LEE
SIチーム管理職
2024年よりSIチームの管理職に従事。技術とマネジメントの両立をモットーに、現場のリアルな知見を発信しています。趣味は車とガジェット。