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を再起動して確認しておきます