httpd(apache2)が起動しなくなっていろいろ勉強になった

起動しなかった原因

  • mod_unique_idでOSのホスト名の名前解決ができなかったから。

起動しなくなった根本的原因

  • たぶん、テキトーに /etc/hosts をいじってしまったんじゃないかと。このへんは不確か。

解決策

  • OSのhost名を /etc/hosts に書いて名前解決できるようにした。

ハマリ内容詳細

  • 環境はFreeBSD 6.1-Release on VMwareで、httpdports/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 も参考になる。