FreeBSD 7.0 で ports からインストールした Apache でエラーが発生する
起動時に、下記のエラーが発生する
# /usr/local/etc/rc.d/apache2 start Performing sanity check on apache22 configuration: Syntax OK Starting apache22. # tail /var/log/httpd-error.log [alert] (EAI 8)hostname nor servname provided, or not known: mod_unique_id: unable to find IPv4 address of "freebsd.example.com"
mod_unique_id とはどういう機能を果たすモジュールなのか?
上記の説明を読むと、「mod_unique_id」は Apache へのリクエストに一意性を保たせるための機能のようだ。
複数構成のサーバーで Apache が稼動している場合、リクエストの一意性が重複する可能性がある。しかし、一意性が崩壊することを許されないサービスを、ユーザーに提供する場合、このモジュールを利用して、より厳密な一意性を保つようにするためのものということらしい。
このモジュールは非常に制限された条件下で、 それぞれのリクエストに「すべて」のリクエストに対して 一意に決まることが保証されている魔法のトークンを提供します。 この一意な識別子は、適切に設定されたクラスタでは複数の マシンの間でさえも一意になります。それぞれのリクエストに対して環境変数 UNIQUE_ID に識別子が設定されます。
このモジュールを利用する目的は色々あるらしいが、
一意な識別子が便利な理由はいろいろありますが、 このドキュメントの目的からは外れるため、ここでは説明しません。
とのこと。
何が問題なのか?
httpd.conf に記述されている ServerName と FreeBSD のマシンに割り当てている hostname が一致していないのが原因である。
FreeBSD のマシンに割り当てている hostname を確認する。
# hostname freebsd.example.com # hostname -s freebsd
表示された結果は次のリンクで確認をする。
hostname と Apache の ServerName を一致すれば、解決する。
もし、hostname を変更した場合
「/etc/hosts」と「/etc/resolve.conf」の設定も修正をする。
Invalid command 'BrowserMatch' のエラーが発生したら
Apache の起動時に下記のエラーが発生した。
Invalid command 'BrowserMatch', perhaps mis-spelled or defined by a module not included in the server configuration
httpd.conf の設定を修正しているときに間違ったようだ。
原因は、setenvif_module をコメントしていただめだった。
# LoadModule setenvif_module libexec/apache22/mod_setenvif.so
コメントアウトをしたら、元に戻った。