PM2でNode.jsのプログラムを自動起動させる(Amazon Linux 2)
参考:
やり方
pm2 starupを実行すると、実行すべきコマンドが表示される。それを実行する。- 上記を実行すると、
/etc/systemd/system/pm2-ec2-user.serviceが作成された。 pm2 saveを実行すると、~/.pm2/dump.pm2が作成(更新)された。
メモ
dump.pm2に、pm2で実行したいプログラムが記録されていた。現在pm2で実行しているプログラムを自動起動させたい場合、pm2 saveを実行したらいいらしい。pm2 startupで表示されるコマンドは、上記のdump.pm2で記録されているプログラムをpm2で自動起動させるためのコマンド。- 新しいNode.jsバージョンにアップグレードする場合は、PM2起動スクリプトを更新してください。
pm2 unstartup最初に使用し、pm2 startupもう一度使用する
$ pm2 startup[PM2] Init System found: systemdec2-user[PM2] To setup the Startup Script, copy/paste the following command:sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ec2-user --hp /home/ec2-user$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ec2-user --hp /home/ec2-user$pm2 savepm2-ec2-userを確認してみる
$ systemctl status pm2-ec2-user● pm2-ec2-user.service - PM2 process manager Loaded: loaded (/etc/systemd/system/pm2-ec2-user.service; enabled; vendor preset: disabled) Active: inactive (dead) Docs: https://pm2.keymetrics.io/$ systemctl is-enabled pm2-ec2-userenabledpm2-ec2-userの中身
[Unit]Description=PM2 process managerDocumentation=https://pm2.keymetrics.io/After=network.target
[Service]Type=forkingUser=ec2-userLimitNOFILE=infinityLimitNPROC=infinityLimitCORE=infinityEnvironment=PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin:/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binEnvironment=PM2_HOME=/home/ec2-user/.pm2PIDFile=/home/ec2-user/.pm2/pm2.pidRestart=on-failure
ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrectExecReload=/usr/lib/node_modules/pm2/bin/pm2 reload allExecStop=/usr/lib/node_modules/pm2/bin/pm2 kill
[Install]WantedBy=multi-user.targetpm2 resurrectを実行してみる
pm2 resurrectは、以前にダンプされたプロセスを復活させる。pm2 delで、pm2で実行中(pm2 saveで保存した)のプロセスを削除して、pm2 resurrectを実行すると、復活しました。