Fedora 11-httpdサーバーのrestartがうまく働かない

投稿日: 2009年7月21日 | カテゴリ:『自宅サーバー』>トラブルシュート

バックアップPCのFedoraを11にアップグレードする過程で、ウエッブ・サーバー(httpd)の再スタートコマンドがうまく働かないことが発覚しました。色々と調査した結果、pidファイルが作成されるパスと起動ファイルにおけるパスが異なっていることが解かりました。

Fedora11ではHTTPDはデフォルトでインストールされます。confファイルの設定を終えて、「service httpd start」コマンドを発してhttpdを開始させます。ここまでは問題なく働きます。しかし、細部の変更後、restartをかけると以下のようなメッセージが出て、再起動がうまくいきません。

(98)Address already in use: make_sock: could not bind to address [::]:80 no listening sockets available, shutting down Unable to open logs

ネットで調べましたが、「他のプロセスがポート80を使用している」という指摘がありましたが、「lsof -i:80」コマンドを発して調べてみましたが、別のプロセスがこのポートを使用しているような兆候はありません・・・(1) 。
そこで別の面から原因追求をしてみることにしました。その契機は以下の通りです。

  1. 上記の(1)から他のプロセスがポート80を使用しているという事実はない。
  2. stopをかけると「失敗」が表示されることから、プロセスを停止できていない。
  3. restartでは、上記のようなメッセージがでるがこれはプロセスの停止ができていないために再スタートしたときにポートが既に使用されているというメッセージが出る。

以上の考察から、原因は起動ファイルにある、と推測して「/etc/rc.d/init.d/httpd」ファイルを調べてみました。その結果、pidファイルの実際のパス(/var/run/)が起動ファイルにおけるpidファイルのパス(/var/run/httpd/)と異なっているために、stopができていない(つまりpidファイルを削除できない)ことがわかりました。そこで、このパスを次のように修正しました。また文法上間違いと思われる(?)箇所も修正しておきました。★の部分を☆の部分に直してみてください。

45行目当り
★ pidfile=${PIDFILE-/var/run/httpd/httpd.pid}
       ↓
☆ pidfile=${PIDFILE-/var/run/httpd.pid}

102行目当り
★ if  status -p ${pidfile} $httpd >&/dev/null  ; then
       ↓
☆ if [ status -p ${pidfile} $httpd >&/dev/null ] ; then

[注意]
メインサーバーにFedora 11をインストールしたところ上記のような不具合は発生しませんでした。pidファイルも/var/run/httpd/に作成されています。バックアップ・サーバーでは、ストーレジ設定を手動で行ったのに対してメインの場合には全て自動にしたこと位しかインストール上の相違はありません。バックアップPCでhttpdを再インストールしてみましたが事態は改善しませんでした。どうもpidファイルが、/var/run/に作成されることが根本的原因のようです。今の所、上記の対応を行えば不具合は起きていませんのでこの状態で使用することにしています。


関連記事



Fedora 11-httpdサーバーのrestartがうまく働かない” への3件のコメント

  1. アップグレードしてhttpdが動かず、参考に致しました。現在(2009/08/19)の所、変更された様で、/var/run/httpd/httpd.pidのままで動作しました。
    それよりも、httpd.confの方で、mod_file_cache.soが必要なくなった様で、新しいhttpd.confで作り直すか、コメントアウトが必要でした。
    ご参考までに・・・。

  2. ピンバック: 突然Apacheが再起動できなくなった時のメモ 【ブログ】 » 群馬県の写真撮影・ウェブ制作・デザイン事務所 | Kiraba(キラバ)

コメントを残す




空欄に計算式を満たす数値を記入してください(必須)