Nginxフォーキングサービスユニット

フォーキングデーモンとしてのNginx用のsystemdユニットファイルを作成します。ExecStartPreによる設定テスト、PIDFile追跡、グレースフルリロード、シグナルベースのライフサイクル管理について解説します。

Infrastructure Services

詳細な説明

systemdでNginxを実行する

Nginxは伝統的にフォーキングデーモンとして実行されます:マスタープロセスがワーカープロセスをforkし、マスターがPIDをファイルに書き込みます。

[Unit]
Description=Nginx HTTP Server
After=network.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-failure
LimitNOFILE=65535
TimeoutStopSec=30

[Install]
WantedBy=multi-user.target

設定の検証

ExecStartPre=/usr/sbin/nginx -t -qは起動前に設定テストを実行します。設定が無効な場合、壊れた設定で起動する代わりに、明確なエラーでサービスが起動に失敗します。

Nginxのシグナル処理

シグナル Nginxの動作 systemdディレクティブ
HUP 設定リロード ExecReload
QUIT グレースフルシャットダウン ExecStop
TERM 高速シャットダウン (systemdデフォルト)

グレースフルリロード

systemctl reload nginxはマスタープロセスにSIGHUPを送信し、ダウンタイムなしで設定を更新します。

ユースケース

設定の検証、ゼロダウンタイム設定変更のためのグレースフルリロード、適切なシグナルベースのライフサイクル管理を備えたプロダクションWebサーバーまたはリバースプロキシとしてNginxをデプロイする場合に使用します。

試してみる — Systemd Unit File Generator

フルツールを開く