PM2 - Express

PM2 とは?

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

インストール

インストール

sudo 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 --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 」から始まるコマンドが表示されるので、そのコマンドを実行します。

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