2016年12月7日水曜日

Node.js PM2をサーバー再起動後も自動起動するように登録

pm2_nodejs仮想サーバーがメンテナンスで再起動してもPM2が自動起動するように設定したときの覚書。

環境: CentOS 7.2.1511, Node.js 4.6.2, PM2 2.1.6

PM2はNode.js向けの高機能プロセスマネージャー。自動起動のスクリプトを自動生成してくれる機能がある。

$ pm2 startup

[PM2] You have to run this command as root. Execute the following command:
      sudo su -c "env PATH=$PATH:/home/node/.nvm/versions/node/v4.6.2/bin pm2 startup linux -u node --hp /home/node"

 

rootになって、言われた通りのコマンドを実行してみる
# sudo su -c "env PATH=$PATH:/home/node/.nvm/versions/node/v4.6.2/bin pm2 startup linux -u node --hp /home/node"

-bash: sudo: コマンドが見つかりません

 

sudoなしで実行
# su -c "env PATH=$PATH:/home/node/.nvm/versions/node/v4.6.2/bin pm2
startup linux -u node --hp /home/node"

bash: update-rc.d: コマンドが見つかりません

 

platformオプションをcentosに変更して実行
# su -c "env PATH=$PATH:/home/node/.nvm/versions/node/v4.6.2/bin pm2
startup centos -u node --hp /home/node"

[PM2] Done.

[PM2] Now you can type
$ pm2 save

 

nodeユーザーになって今のプロセスリストを保存
# su - node
# pm2 save

 

自動起動登録されているか確認
# chkconfig --list

スクリプト実体は/etc/init.d/に配置される。これをSysVが読み込んで実行される。

ちなみにCentOS7からはsystemdでサービス管理するようになったので、そちらで管理されているサービスを表示するにはsystemctlを使う。
# systemctl list-unit-files --state=enabled

 

SysVとsystemdの違いに関する参考サイト

 

Node.jsはnvmで管理しているのでNode.jsをアップデートしたら自動登録し直さないといけない。

 

< Related Posts >

コメントを投稿
Related Posts Plugin for WordPress, Blogger...

Blog Archives