NodeJsのプロセス管理ツール pm2 のアップデートと自動起動の設定

Node-RED のプロセス管理ツールとして PM2 を利用しています。
少し時間が立ったので pm2 自体をアップデートしたので方法をメモしておきます。

現在の状態を保管

pm2 save
sudo npm install pm2 -g

利用しているユーザ(pi) で pm2 updateを実行します。
この際、登録していたアプリケーションが消えてしまったので再起動しておきます。

Raspberry pi の場合には systemd を利用していますので pm2 startup コマンドでシステム起動時の自動起動が設定できます。

もし自動起動をしていない場合には次のコマンドで登録できます。こんかい場合には ndenv を入れているので次のコマンドに成ります。

sudo env PATH=$PATH:/usr/local/ndenv/versions/v6.12.2/bin /usr/local/ndenv/versions/v6.12.2/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi

これで /etc/systemd/system/pm2-pi.service が生成されます。

[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=pi
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/local/ndenv/versions/v6.12.2/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/pi/.pm2
PIDFile=/home/pi/.pm2/pm2.pid

ExecStart=/usr/local/ndenv/versions/v6.12.2/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/local/ndenv/versions/v6.12.2/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/local/ndenv/versions/v6.12.2/lib/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

これでsystemdに登録されれています。ランレベルは multi-user レベル(昔のランレベル3,4,5に相当)となっていますね。

$ systemctl status pm2-pi
● pm2-pi.service - PM2 process manager
   Loaded: loaded (/etc/systemd/system/pm2-pi.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2018-02-04 11:54:39 JST; 8min ago
     Docs: https://pm2.keymetrics.io/
 Main PID: 16500 (PM2 v2.9.3: God)
   CGroup: /system.slice/pm2-pi.service
           ‣ 16500 PM2 v2.9.3: God Daemon (/home/pi/.pm2)

Feb 04 11:54:37 homepi pm2[6414]: [PM2] Process /usr/local/bin/homebridge restored
Feb 04 11:54:38 homepi pm2[6414]: [PM2] Process /home/pi/local/node-red/node_modules/node-red/red.js restored
Feb 04 11:54:39 homepi pm2[6414]: ┌────────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬───────────┬─────
Feb 04 11:54:39 homepi pm2[6414]: │ App name   │ id │ mode │ pid  │ status │ restart │ uptime │ cpu │ mem       │ user      │ watc
Feb 04 11:54:39 homepi pm2[6414]: ├────────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼───────────┼─────
Feb 04 11:54:39 homepi pm2[6414]: │ homebridge │ 0  │ fork │ 6511 │ online │ 0       │ 2s     │ 49% │ 17.2 MB   │ undefined │ disa
Feb 04 11:54:39 homepi pm2[6414]: │ red        │ 1  │ fork │ 6517 │ online │ 0       │ 2s     │ 26% │ 16.7 MB   │ undefined │ disa
Feb 04 11:54:39 homepi pm2[6414]: └────────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴───────────┴─────
Feb 04 11:54:39 homepi pm2[6414]:  Use `pm2 show <id|name>` to get more details about an app
Feb 04 11:54:39 homepi systemd[1]: Started PM2 process manager.

最後、いちおうRaspberryPiを再起動して確認しておきます

上部へスクロール