Apache httpd には起動関連の様々なコマンドオプションがあります。
状況や目的に応じて、使い分けることが必要になると思います。
ここでは、httpd.conf などの設定変更時の再起動・設定反映時にどのようなオプションを使うべきなのか整理しておきたいと思います。
まず、コマンド自体を確認しておきます。
下記の2通りあります。ここでの起動という目的を考えた場合には、いずれを使用しても同じです。
- service httpd オプション
- /etc/init.d/httpd オプション
ここでは、service httpd オプション で説明します。
さて、このオプションを次のようにして確認してみます。
[root ~]# service httpd 使い方: httpd {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}
ここで、再起動に関係するオプションは次の4つです。
- restart
- condrestart
- reload
- graceful
それぞれどのような処理になるのでしょうか。
1.restart
停止処理と開始処理を連続して行います。
開始処理の際に、変更した設定が反映されます。
停止処理は、TERMシグナル(SIGTERM)を送って、プロセスを即終了します。
処理中のリクエストはすべて中止して、すべての子プロセスを終了してから、親プロセスも終了します。
その後、起動処理を行います。
親プロセスIDは変更されます。
2.condrestart
restart の処理と同じですが、Apache httpd が起動しているときだけ再起動を行います。
3.reload
HUPシグナル(SIGHUP)を送って、子プロセスを終了します。
ただし、子プロセスのみを即終了して、親プロセスは終了しません。
処理中のリクエストはすべて中止されます。
すべての子プロセスが終了したあとに、親プロセスは設定を再読み込みし、変更した設定が反映されます。
変更後の設定の反映だけを行いたい場合に使用します。
4.graceful
USR1シグナルを送って、子プロセスを終了します。
ただし、子プロセスは実行中のリクエストの処理が完了してから終了します。
すべての子プロセスが終了したあとに、親プロセスは設定を再読み込みし、変更した設定が反映されます。
実行中のリクエストの処理を中止させたくない場合に使用します。
上記各オプションの用途表
オプション | 用途 |
---|---|
restart | Webサービスを即終了して再起動する。 |
condrestart | Webサービスを即終了して再起動する。 |
reload | Webサービスを終了しないで、設定変更を反映する。実行中のリクエストの処理を中止しても構わない場合に使用する。 |
graceful | Webサービスを終了しないで、設定変更を反映する。実行中のリクエストの処理を中止させたくない場合に使用する。 |