httpd(apache2)が起動しなくなっていろいろ勉強になった
起動しなかった原因
- mod_unique_idでOSのホスト名の名前解決ができなかったから。
起動しなくなった根本的原因
- たぶん、テキトーに /etc/hosts をいじってしまったんじゃないかと。このへんは不確か。
解決策
- OSのhost名を /etc/hosts に書いて名前解決できるようにした。
ハマリ内容詳細
- 環境はFreeBSD 6.1-Release on VMwareで、httpd は ports/www/apache22。
- ある日突然httpdが常駐しなくなる。
- /usr/local/etc/rc.d/apache22.sh start しても正常に開始されたようにしか見えない。
[root@] # /usr/local/etc/rc.d/apache22.sh start Performing sanity check on apache22 configuration: Syntax OK Starting apache22.
- /etc/rc.confにもちゃんと書いてあるのに。
[root@] # cat /etc/rc.conf keymap="jp.106" # -- sysinstall generated deltas -- # Thu Sep 21 19:09:14 2006 ifconfig_lnc0="DHCP" hostname=".localdomain" sshd_enable="YES" apache22_enable="YES" #apache22ssl_enable="YES" samba_enable="YES" mysql_enable="YES" inetd_enable="YES"
- /var/run/httpd.pidは存在しない。つまり常駐していない。
[root@] # ls /var/run/httpd.pid ls: /var/run/httpd.pid: No such file or directory
- 識者に状況を説明したら、とりあえず LoadModule unique_id_module libexec/apache22/mod_unique_id.so をコメントアウトして起動し直してみ?とのこと。
- コメントアウトして起動。成功。
- OSのホスト名は何?
- /etc/rc.conf と uname -aで確認。「.localdomain」である。
[root@] # uname -a FreeBSD .localdomain 6.1-RELEASE FreeBSD 6.1-RELEASE(以下省略
- /etc/hostsに.localdomainを定義。
- mod_unique_idのコメントアウトを戻して再起動。成功。もと通りに直った!
- ちなみにapacheが起動しないときのエラー内容は http.conf の ErrorLog で設定されているファイルに追記される。デフォルトは /var/log/httpd-error.log 。ついでにportsでインストールしたアプリのログはデフォルトはぜんぶ /var/log/ にあるらしい。
- http://www9.plala.or.jp/sasakiss/freebsd/freebsd_truble1.html も参考になる。