Node.js
centos7

centos7で標準のsystemdを使いnode.js製サーバーをデーモン化する

centos7で標準のsystemdを使いnode.js製サーバーをデーモン化する

はじめに

node.jsをデーモン化するにはforever、pm2、supervisorなどいろいろありますが
centos7になってから標準のスタートアップスクリプトでもとくに問題がでていないので紹介します

プロセスマネージャーに一般に必要とされる機能

以下の機能は標準のsystemdで満たしています

  • ターミナルからプロセスの切り離し
  • マシン再起動による自動起動
  • プロセスダウンによる自動再起動

systemdではやってくれない機能

  • マルチコアスケールアウト(PM2)

設定ファイルサンプル

  • サーバー名称:sample-server
  • 実行ユーザー:centos

ディレクトリ /etc/systemd/system/ の下に サーバー名称.serviceというファイルを作ります

/etc/systemd/system/sample-server.service
[Unit]
Description=sample server
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/usr/bin/node /home/centos/server/app.js
WorkingDirectory=/home/centos/server
KillMode=process
Restart=always
User=centos
Group=centos

[Install]
WantedBy=multi-user.target

起動、終了、再起動コマンド

以下のコマンドが使えるようになります。
起動と終了が問題なくできれば自動起動登録すればマシン起動時に自動で立ち上がります

自動起動登録
systemctl enable sample-server
起動
systemctl start sample-server
終了
systemctl stop sample-server
再起動
systemctl restart sample-server

その他

foreverはそのまま置き換え可能です
pm2はクラスタ化によるhttpのロードバランス機能が必要な時に選択すればよいと思います

ログについて

systemdをつかって標準出力に出力した場合、journalctlコマンドで内容を確認できる
標準ではlessが使われるがtailを使いたい場合は-fオプションを使うとログを目視で監視できる