Apacheの構文テスト

4月 9, 2009

Apacheの設定ファイル httpd.confまたはconf.d配下の関連ファイルを書き換えた時に、
構文に誤りがないかチェックするためのコマンド。
普段Apacheいじっている人にしてみたら何を今更、な話ではあるがやはり基本は大事!
ということで。
チェックするには以下のコマンドを実行する。

# httpd -t

または

# apachectl configtest
※パスは適宜指定。


ちなみにhttpd -Tというのもある。違いは以下の通り。

-t : run syntax check for config files (with docroot check)
-T : run syntax check for config files (without docroot check)


docroot checkって何?とググってみたがどうも適当なのがヒットしない。
が、おそらく、通常よく使われる-t オプションだと、httpd.confに記述されている他の
ファイルやディレクトリのチェックもしてくれるが(つまり全体として整合性を
チェックする)、-T オプションだとそれがない、ってことなのかな。
そういう意味でいうと、-T オプションは何のためにあるのかよく分からなくなってくる。

追記
-T オプションはこちらによると「DocumentRootに設定された値は検査しない」
ということだそうだ。
と分かったところで、このオプションを利用するのはどんなシーンなのかは依然として不明だが、、

以下、上は特に問題ない場合。何か間違いがあると下のようにエラーを指摘したうえ、
誤っている箇所も教えてくれる。

# httpd -t
Syntax OK

# httpd -t
Syntax error on line 255 of ……(以下略)


ただし、ここでチェックしてくれるのは構文や仕組みそのものの整合性であり、
“Syntax OK “だからってすべてが絶対正しいとは言い切れない。
このテストで拾いきれない誤りが存在する可能性があることは、念頭におく必要がある。

また、Web上で何か不具合がある時、httpd.confの記述を見直しても原因が分からないときもある。
/var/log/httpd/error_logも合わせて確認するのが基本かな、と。

構文テストは必ず必要というわけではないものの、どこか誤りがあるとApacheを
再起動した時にやはり”Syntax error”となってしまい、起動できない。
結局そこでイライラッとしながら調査するはめになるので、淡々とタスクを
遂行するには、事前にテストする方がベターかと思う。


Categories: Apache