pm2を使ってExpressアプリケーションを永続化する方法
バックグラウンドで実行されるデーモン化することが出来るので、1つのサーバーで複数のNode.jsアプリケーションを管理するときに便利です。
環境
- OS: CentOS 7.2
- Node.js: v6.9.4
- npm: 3.10.10
- アプリケーションディレクトリ: /home/appuser/work/app
※Expressで作成したアプリケーションが、上記ディレクトリに保存されていることとします。
pm2のインストール
pm2をグローバルインストール
$ npm install -g pm2
インストール確認
$ pm2 -v
2.4.2
※2017/03/06現在、npmからインストールした場合の最新
pm2設定ファイルの作成
アプリケーションディレクトリに設定ファイルをpm2の設定ファイルを作成します。
今回は.jsonで設定ファイルを記述します。(.jsonの他にyamlでも記述可能)
最低限の設定
app.json
{
"name" : "app",
"script" : "./bin/www",
}
環境変数を設定して起動
app.json
{
"name" : "app",
"script" : "./bin/www",
"env" : {
"NODE_ENV" : "development"
},
"env_production" : {
"NODE_ENV" : "production"
}
}
アプリケーションの開始
起動
$ pm2 start app.json
環境変数を指定して起動
$ pm2 start app.json --env production
アプリケーションの停止
起動中アプリケーションの確認
$ pm2 list
| App name | id | mode | pid | status x restart | uptime | cpu | mem >| watching |
| app | 0 | fork | 28638 | online | 2 | 32m | 0% | 55.6 MB | disabled |
Use `pm2 show <id|name>` to get more details about an app
アプリケーションの停止
$ pm2 stop app