- ベストアンサー
突然apacheが落ちて起動しなくなる
質問させていただきます。 WEBサーバとして稼動しているサーバからhttpdダウンのアラートを検出し、サーバにログインしてservice httpd restartを行うと Starting httpd: [w mon dd hh:mm:ss YYYY] [crit] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. Pre-configuration failed [FAILED] となりapacheが起動しません。 /etc/sysconfig/httpdにて HTTPD=/usr/sbin/httpd.worker の行をコメントアウトしてhttpdを再起動するとhttpd自体は立ち上がります。 しかしながら原因が不明なため、どなたか原因についてお分かりになりましたら教えてください。 以上、よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>workerモードで動かす設定は、etc/sysconfigあたりで指定できたと思いますが... prefork,workerの選択はコンパイル時にしか決められない。 みたいな~ 起動時に切り替えたのなら、それぞれのhttpd実行ファイルをあらかじめコンパイルして複数用意するしかない。 みたいな~ >HTTPD=/usr/sbin/httpd.worker この設定は、初めから利用していたのかなぁ?それとも、トラブルが発生した時に確認したら挿入されていたのかなぁ? どちらなのかちょーきになるって感じー 初めからworkerを使用して突然PHPが動かなくなったのならぁ、PHPが自動で更新されたりしてないですかぁ? みたいな~ preforkを使用していたのにぃ、突然workerに変更されていたならぁ、誰かが、workerをインストールしたかもぉ。みたいな~ とりあえず、PHPとapacheのバージョンに変化が無いかみてみたらぁ?って感じー あと、apt-get等で自動更新しているならぁ、dpkg.logみてupdateされちゃってないか見てみてー。 って感じー 会社のサーバ上の話をしているならぁ、第3者が書き換えた可能性も捨てきれないって感じぃ? この場合、apache再起動の前にログインした記録を洗ってみるのがいいかもー
その他の回答 (2)
- kachansa
- ベストアンサー率44% (30/67)
う~ん、他の人が書き換えたとしか言えないような気がしますね。 workerモードで動かす設定は、etc/sysconfigあたりで指定できたと思いますが... workerで動かしたほうがいいなんて情報をえて、設定だけ書き換えて、リスタートしてなかったとか.. とりあえず、システムログとかでログイン状態を確認するですかね...
立ち上がらない理由はエラーログの通りかと・・・ つまり、 「apacheさんがぁ、スレッド方式MPM(※1)を利用しようとしたらぁ、 PHPモジュールがスレッドセーフでコンパイルされてないって感じ~。 ちょーむかつくって感じ~ 。 どぉーしても、※1を利用したいなら PHPモジュールをスレッドセーフで再コンパイルしてね(はぁと)」 と、ログがおっしゃっています ※1:httpd.workerって感じ~ >しかしながら原因が不明なため ログにしっかり原因が書いてありますよ・・・ 対策としては 1.worker(スレッド方式)をあきらめる 2.PHPモジュールをスレッドセーフで再コンパイルして使用する
補足
ご回答ありがとうございます。 ちょっとこちらの言葉が足りなかったようです。 「MPMを切り替えた覚えはないのになぜ勝手にworkerに切り替えられちゃっているの~?」 ってなノリです。
お礼
チョーOK的~みたいなみたいな~。 ありがとうっていうか、アドレーションデミトリオス~って感じ。 とても参考になりました~。