apacheがコケた謎の原因。
FTP・SSHはIPベースでも、名前ベースでも、接続できていた。
ログの肥大化が原因かと思い、restartする前に、ログを別名で保存しておいた。
それから、restartしたところ、下記のようなエラーが出力された。
[crit] (98)Address already in use: make_sock: could not bind to port 80
直後、
とやると
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のコマンドが、通常と違うことに気がついた。
(とはいえ、それが原因だとは、この時点ではわからず、コマンド間違えてた、くらいにしか思ってなかった)
ソースからインストールしたapacheでSSLも動かしているので、
スタートのコマンドは
/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
このエラーが出たと思われる。
(とかいって、的外れだったらど〜したもんか…)
【参考サイト】
- 玄箱HGハック:/etc/init.d/apache restartがよく失敗する。
http://kurobox.ath.cx/?Apache#content_1_3
一旦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させる前に、少し原因を絞るべきだった〜。
次回以降の反省材料としよう。
最後に、関係あるかないかわかんないけど、メモとして。
- ユーザリソースを制限する方法について(ulimit)
http://www.express.nec.co.jp/linux/tech/knowledge/system/ulimit.html
− ぼやき −
いろんなサイトで、こ〜ゆう現象を、こう解決した、って書いてあるのはよく見かけるんだけど、「こう考えたから、原因が判明して、こういうプロセスで、こういう解決に至った」っていう風に書いてくれればいいんだけどなぁ…。
そしたら、全然関係なくても、そのプロセスが参考になることもあるのになぁ。
今回、すごい、参考にしたいブログを見つけたんだけど、その人が、どうしてそういう解決法を見出したのかがすごく知りたかった。
現象が似ているんだけど、ソフトや状況が異なるので、その解決に至った理由がわかれば、あたしの解決の糸口になるのに〜〜〜、ってね。
*1:とくに何も設定していないため。