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をデプロイする場合に使用します。