PM2でnodejsアプリを動かす
foreverは使ったことあるが、pm2の方が高機能という話を聞いたので使ってみる。
PM2のインストール
グローバルインストールする
npm i -g pm2
pm2コマンドが認識されていればインストールOK
PM2を使う
開始するだけなら
pm2 start jsファイル
--name
で名前つきでスクリプトを起動すると便利
というか、名前がないと操作が不便すぎるので必須だと思う
slack-botという名前で起動する
$ pm2 start main.js --name slack-bot [PM2] Starting /home/pi/dev/slack-bot/main.js in fork_mode (1 instance) [PM2] Done. ┌───────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │ ├───────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤ │ slack-bot │ 0 │ fork │ 1432 │ online │ 0 │ 0s │ 12% │ 20.0 MB │ pi │ disabled │ └───────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
再起動
pm2 restart アプリ名
$ pm2 restart slack-bot Use --update-env to update environment variables [PM2] Applying action restartProcessId on app [slack-bot](ids: 0) [PM2] [slack-bot](0) ✓ ┌───────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │ ├───────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤ │ slack-bot │ 0 │ fork │ 1480 │ online │ 1 │ 0s │ 66% │ 15.1 MB │ pi │ disabled │ └───────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘ Use `pm2 show <id|name>` to get more details about an app
いけたっぽい
停止する
pm2 stop アプリ名
$ pm2 stop slack-bot [PM2] Applying action stopProcessId on app [slack-bot](ids: 0) [PM2] [slack-bot](0) ✓ ┌───────────┬────┬──────┬─────┬─────────┬─────────┬────────┬─────┬────────┬──────┬──────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │ ├───────────┼────┼──────┼─────┼─────────┼─────────┼────────┼─────┼────────┼──────┼──────────┤ │ slack-bot │ 0 │ fork │ 0 │ stopped │ 1 │ 0 │ 0% │ 0 B │ pi │ disabled │ └───────────┴────┴──────┴─────┴─────────┴─────────┴────────┴─────┴────────┴──────┴──────────┘ Use `pm2 show <id|name>` to get more details about an app
stoppedになってる
ログを見る
pm2 logs アプリ名
$ pm2 logs slack-bot [TAILING] Tailing last 15 lines for [slack-bot] process (change the value with --lines option) /home/pi/.pm2/logs/slack-bot-error-0.log last 15 lines: ...
モニタリング
起動しているアプリのログやプロセスの確認ができる。
pm2 monit
見やすくて少しカッコいい
設定ファイルを用いた起動指定
YamlとJsonで起動オプションを設定ファイルに定義できる。
今回はYamlで作成してみる。
# ファイル名:pm2config.yml(ファイル名は自由です) name: slack-bot # アプリ名 script: main.js # スクリプトファイルパス watch: true # フォルダやサブフォルダ内のファイルが変更された場合、アプリは再読み込みされます log-date-format: "YYYY-MM-DD HH:mm Z" # ログに日付を追加
設定ファイルで使える項目は以下リンク http://pm2.keymetrics.io/docs/usage/application-declaration/#attributes-available
設定ファイルで起動する
pm2 start pm2.yml pm2 stop pm2.yml pm2 restart pm2.yml