[Apache] 2.2でVirtualhostの構成が正しく読み込まれるかを確認する方法

2020/04/19

author

masyus

Apacheで、新たに追加したVirtualhostの設定が正しく読み込まれるかを確認したいことがありました。今回はその時活用したコマンドを紹介します。検証したApacheのバージョンは2.2系です。

virtualhostの構成はhttpd -Sもしくはapachectl -Sで確認可能

見出しにも書きましたが、

httpd -S
apachectl -S

のどちらでも確認可能です。実行結果の例は下記のようになります。

httpd -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server local.hogehoge.jp (/etc/httpd/conf.d/virtualhost.conf:5)
         port 80 namevhost local.hogehoge.jp (/etc/httpd/conf.d/virtualhost.conf:5)
         port 80 namevhost local.fugafuga.jp (/etc/httpd/conf.d/virtualhost-additional.conf:5)
Syntax OK

Syntax OKとあるので、文法チェックもしてくれるようです。

httpd -SもしくはSもしくはapachectl -Sの使いどころ

大抵の場合、httpd.confにはconf.dディレクトリ配下の.confファイルを読み込む設定が書いてあります。

// ...

#
# Load config files from the config directory "/etc/httpd/conf.d".
#
Include conf.d/*.conf

// ...

そのため、もし新たにVirtualhostの設定を追加したい場合は

  • 既存のvirtualhost.confに追記する
  • 新たなconfファイルを設置し、そこに新しいVirtualhostの設定を記載する

の2択になります。その後、

apachectl configtest

で文法に問題が無いか確認した後に

apachectl graceful

で、改めてconfファイルの設定を読み込ませるのが定石です、

もしgracefulまで問題なく完了できたのに想定したリクエストがVirtualhostで意図通りに処理されなかった場合、今回のhttpd -Sを使えば問題の切り分けがしやすくなります。