PM2使用詳細解説:Node.jsアプリケーションのプロセスマネジメントツール

PM2は、Node.jsアプリケーション専用に設計されたプロセスマネジメントツールで、アプリケーションのデプロイと管理を簡素化することを目的としています。アプリケーションの起動、停止、再起動、監視などの機能を提供し、自動再起動、負荷分散、ログ管理などの高度な特性も備えています。以下にPM2の詳細な紹介と使い方を説明します。

主な機能

  1. プロセスマネジメント:アプリケーションの起動、停止、再起動、削除。
  2. 監視:アプリケーションの状態、CPU、メモリ使用状況をリアルタイムで監視。
  3. ログ管理:アプリケーションのログを表示および管理。
  4. 負荷分散:クラスターモード(Cluster Mode)を通じて負荷分散を実現。
  5. 自動再起動:アプリケーションがクラッシュまたはエラー発生時に自動的に再起動。
  6. 起動スクリプト:システム起動時にアプリケーションを自動的に起動。
  7. 設定管理:JSON設定ファイルを使用して複数のアプリケーションを管理。

PM2のインストール

PM2を使用するには、まずインストールする必要があります。npmを通じてインストールできます:

Terminal window
1
npm install -g pm2

基本的な使い方

アプリケーションの起動

アプリケーションを起動するには、pm2 startコマンドを使用し、エントリファイルを指定します:

Terminal window
1
pm2 start app.js

アプリケーションの状態を確認

現在実行中のすべてのアプリケーションとその状態を確認するには、pm2 listコマンドを使用します:

Terminal window
1
pm2 list

アプリケーションの停止

特定のアプリケーションを停止するには、pm2 stopコマンドを使用します:

Terminal window
1
pm2 stop app.js

またはアプリケーションIDを使用して停止します:

Terminal window
1
pm2 stop 0

アプリケーションの再起動

特定のアプリケーションを再起動するには、pm2 restartコマンドを使用します:

Terminal window
1
pm2 restart app.js

またはアプリケーションIDを使用して再起動します:

Terminal window
1
pm2 restart 0

アプリケーションの削除

特定のアプリケーションを削除するには、pm2 deleteコマンドを使用します:

Terminal window
1
pm2 delete app.js

またはアプリケーションIDを使用して削除します:

Terminal window
1
pm2 delete 0

高度な使い方

複数インスタンスの起動(クラスターモード)

-iオプションを使用すると、複数のインスタンスを起動してマルチコアCPUを利用できます:

Terminal window
1
pm2 start app.js -i max

maxはCPUコア数と同数のインスタンスを起動することを意味します。また、具体的なインスタンス数を指定することもできます(例:-i 4で4つのインスタンスを起動)。

ログの管理

特定のアプリケーションのログを表示するには:

Terminal window
1
pm2 logs app.js

またはすべてのアプリケーションのログを表示するには:

Terminal window
1
pm2 logs

アプリケーションの監視

pm2 monitコマンドを使用すると、すべてのアプリケーションの状態をリアルタイムで監視できます:

Terminal window
1
pm2 monit

JSON設定ファイルの使用

PM2は、JSON設定ファイルを使用してアプリケーションを管理できます。まず、ecosystem.config.jsファイルを作成します:

1
module.exports = {
2
apps: [
3
{
4
name: "app",
5
script: "./app.js",
6
instances: "max",
7
exec_mode: "cluster",
8
watch: true,
9
env: {
10
NODE_ENV: "development",
11
},
12
env_production: {
13
NODE_ENV: "production",
14
},
15
},
16
],
17
};

次に、pm2 startコマンドを使用して設定ファイル内のアプリケーションを起動します:

Terminal window
1
pm2 start ecosystem.config.js

起動時に自動スタート設定

PM2は、システム起動時にアプリケーションを自動的に起動するように設定できます。まず、スタートアップスクリプトを生成します:

Terminal window
1
pm2 startup

次に、現在のプロセスリストを保存します:

Terminal window
1
pm2 save

アプリケーションのリロード

サービスを中断することなくアプリケーションをリロードするには、pm2 reloadコマンドを使用します:

Terminal window
1
pm2 reload app.js

またはアプリケーションIDを使用します:

Terminal window
1
pm2 reload 0

よく使うコマンドのまとめ

  • アプリケーションの起動:pm2 start <app>
  • アプリケーションの停止:pm2 stop <app>
  • アプリケーションの再起動:pm2 restart <app>
  • アプリケーションの削除:pm2 delete <app>
  • アプリケーションリストの表示:pm2 list
  • アプリケーションログの表示:pm2 logs <app>
  • リアルタイム監視:pm2 monit
  • 自動起動設定:pm2 startuppm2 save

これらの機能を通じて、PM2はNode.jsアプリケーションのライフサイクルを管理するための完全なソリューションを提供し、開発から本番環境へのデプロイに至るまで、アプリケーション管理の複雑さを大幅に簡素化し、運用の安定性と信頼性を向上させます。