Edited at

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

More than 1 year has passed since last update.


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オプションを使うとログを目視で監視できる