Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8900

Node.js製サーバの起動方法をforeverからsystemdに移行する

$
0
0

foreverで起動していたExpressのサーバをOS再起動時に自動起動させたかったのでSystemd管理に移行します。
initd向けにforeverの自動起動の仕組みを提供するinitd-foreverというパッケージもあったり、forever自体を起動する方向もアリですが、Systemdでは自動再起動の制御が細かくなっているなど、foreverに期待していた役割自体も担えそうでしたのでシンプルにSystemd → Nodeにしました。
最低限の設定をイメージしてこんな感じになりました。

/etc/systemd/system/mydaemon.service
[Unit]
Description=My Node.js Daemon

[Service]
User=myuser
Group=mygroup
#Environment="NODE_ENV=production"
WorkingDirectory=/path/to/
ExecStart=/usr/bin/node app.js
Restart=always

[Install]
WantedBy=multi-user.target

あとは
systemctl enable mydaemon.serviceで自動起動有効化し、
systemctl start mydaemon.serviceで起動します。

User/Groupは指定しなければrootになってしまうため指定しています。
Environmentは今回不要でしたがExpressで使う機会が多そうなのでコメントアウト状態でサンプルとして入れています。
対象のスクリプトはnode app.jsで起動して、Ctrl+Cで終了させるような動きになっている必要があります。
Restart=alwaysによってプロセスが落ちても自動的に復帰させます。
デフォルトで10秒に5回の再起動に制限されますがStartLimitIntervalStartLimitBurstで調整できます。

foreverのwatchに対応する機能は無さそうですが今回の目的には不要でした。


Viewing all articles
Browse latest Browse all 8900

Trending Articles