ESC

apacheがコケた謎の原因。

FTPSSHはIPベースでも、名前ベースでも、接続できていた。


ログの肥大化が原因かと思い、restartする前に、ログを別名で保存しておいた。
それから、restartしたところ、下記のようなエラーが出力された。

[crit] (98)Address already in use: make_sock: could not bind to port 80

直後、

ps -eaf | grep httpd

とやると

nobody 3740 3739 0 13:16 ? 00:00:00 /usr/local/apache/bin/httpd -DSS
nobody 3741 3739 0 13:16 ? 00:00:00 /usr/local/apache/bin/httpd -DSS
nobody 3742 3739 0 13:16 ? 00:00:00 /usr/local/apache/bin/httpd -DSS
nobody 3743 3739 0 13:16 ? 00:00:00 /usr/local/apache/bin/httpd -DSS
nobody 3744 3739 0 13:16 ? 00:00:00 /usr/local/apache/bin/httpd -DSS
nobody 3752 3739 0 13:16 ? 00:00:00 /usr/local/apache/bin/httpd -DSS
nobody 3753 3739 0 13:16 ? 00:00:00 /usr/local/apache/bin/httpd -DSS
nobody 3754 3739 0 13:16 ? 00:00:00 /usr/local/apache/bin/httpd -DSS
nobody 3756 3739 0 13:17 ? 00:00:00 /usr/local/apache/bin/httpd -DSS
nobody 3759 3739 0 13:18 ? 00:00:00 /usr/local/apache/bin/httpd -DSS

子プロセスだけで、親がいない???(プロセスIDは仮)
netstatコマンドを叩いてみても、*:443はLISTENなのに、80番ポートは開いていない様子。


ここでようやく、restartのコマンドが、通常と違うことに気がついた。
(とはいえ、それが原因だとは、この時点ではわからず、コマンド間違えてた、くらいにしか思ってなかった)


ソースからインストールしたapacheSSLも動かしているので、
スタートのコマンドは

/usr/local/apache/bin/apachectl startssl

つまり、startさせるには、手動でstopさせないといけないわけで、

/usr/local/apache/bin/apachectl restart

は使えない。*1
おそらく、restart時、一旦STOPして、startsslしなかったため、

[crit] (98)Address already in use: make_sock: could not bind to port 80

このエラーが出たと思われる。
(とかいって、的外れだったらど〜したもんか…)


【参考サイト】


一旦STOPさせて、startsslしたところ、apacheが起動して、WEBページも見えるようになった。
そして、念のため、error_logを見ると、

[warn] pid file /usr/local/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?

という、ちょっと気になるエラーが。
でも、参考サイトの内容から想像するに、プロセスIDのファイルがどうの、ってことだから、もう1回apacheをrestartさせて、エラーが出なかったら大丈夫っぽそう、と判断してみた。
「[crit] (98)Address already in use: make_sock: could not bind to port 80」のせいで出てきたっぽいし。
で、再度、stop & startssl。
今度は、エラーログには何も出力されなかった。
ということで、このエラーは気にしないことにする。


ここまでは、自分なりに解決できたので、エラーの内容はわかったものの、そもそも、WEBが見えていなかった(apacheがコケていた)理由がよくわからない。
てゆ〜か、このエラーだって、正しくやってれば出なかったかもしれないエラーなわけだし、とんだ回り道。


根本的な原因こそ、ログの肥大化だったりして!?
こないだは、エラーログの肥大化でapacheがコケてたからなぁ…。(レンタルサーバ会社情報)
原因としてあり得るといえばあり得るのだろうけど。


ソースからのインストールだと、ローテートが設定されないらしいので、とりあえずは、ログローテートさせておくことで、ひとつ問題を解決させようと思う。


別名で保存する前に、正しく、restartさせておけば、もう少し潰せたかもしれないかった…。
ちょっともったいないことをした。
restartさせる前に、少し原因を絞るべきだった〜。
次回以降の反省材料としよう。


最後に、関係あるかないかわかんないけど、メモとして。


− ぼやき −
いろんなサイトで、こ〜ゆう現象を、こう解決した、って書いてあるのはよく見かけるんだけど、「こう考えたから、原因が判明して、こういうプロセスで、こういう解決に至った」っていう風に書いてくれればいいんだけどなぁ…。
そしたら、全然関係なくても、そのプロセスが参考になることもあるのになぁ。
今回、すごい、参考にしたいブログを見つけたんだけど、その人が、どうしてそういう解決法を見出したのかがすごく知りたかった。
現象が似ているんだけど、ソフトや状況が異なるので、その解決に至った理由がわかれば、あたしの解決の糸口になるのに〜〜〜、ってね。

*1:とくに何も設定していないため。