PM2 - Express.js

  • 作成日:
  • 最終更新日:2025/06/25

PM2 とは?

PM2は、Node.js を本番環境で起動するためツールで、プロセスをデーモン化したり、アプリの起動を管理することができます。

インストールするには、以下のコマンドを実行します。

npm install -g pm2

アプリケーションの起動

アプリケーションを起動するには、アプリケーションのルートディレクトリに移動して、次のコマンドを実行します。

pm2 start npm --name myapp

--name オプションをつけると、起動するアプリに任意の名前をつけることができます。

アプリケーションの一覧を表示するには、以下のコマンドを実行します。

アプリケーションの一覧を表示

pm2 list

アプリケーションの停止

アプリケーションを停止するには、以下のコマンドを実行します。

# プロセスidを指定
pm2 stop 0

# 全てのプロセスを停止
pm2 stop all

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

アプリケーションを起動するには、以下のコマンドを実行します。

# プロセスidを指定
pm2 restart 0

# 全てのプロセスを再起動
pm2 restart all

アプリケーションの削除

アプリケーションを削除するには、以下のようにします。

# プロセスidを指定
pm2 delete 0

logを確認する

pm2 logs

# 行数指定
pm2 logs --lines 100

# すべてのログをクリア
pm2 flush

console.log()の出力はログファイルに出力されます。

Apache で Proxy 設定をしたアプリの起動

Apache で Proxy 設定をした場合のアプリの起動は、アプリのルートディレクトリに移動して、以下のコマンドを入力します。

pm2 start ./bin/www --name myapp

PM2で環境変数を設定する

アプリのルートディレクトリに設定ファイルを保存します。ここでは「 pm2myapp.json 」というファイル名にしています。

「 bin/www 」がサーバー起動用のファイルになります。

pm2myapp.json

// pm2myapp.json
{
    "name": "myapp",
    "script": "./bin/www",

    "env_development": {
        "NODE_ENV": "development"
    },

    "env_production": {
        "NODE_ENV": "production"
    }
}

コマンドから利用する環境変数を参照します。

# envを指定しない場合には、設定ファイル内のenvが利用されます。
pm2 start pm2myapp.json

# --envオプションの指定方法は、env_xxx の「 xxx 」の部分を指定します。「 env_production 」を利用したい場合は、以下のようにします。
pm2 start pm2myapp.json --env production

環境変数を利用するには、「 process.env.NODE_ENV 」とすれば利用できます。

自動起動の設定

まず、pm2 を使い Express アプリケーションを起動した状態にして、次のコマンドを実行します。

pm2 startup

上記のコマンド実行後、「 sudo env 」から始まるコマンドが表示されるので、そのコマンドを実行します。

サーバーを再起動して、アプリケーションが起動しているか確認します。