apache

(98)Address already in use: と出てapacheが再起動できない場合の対策

2016/12/14

apache の設定を行い再起動しようとすると、Address already in use というエラーが出ました。
調べてみると、他のプロセスが80番ポートを占有しているからとのこと。

再起動できないってのは都合がわるいので、その対策です。

Address already in use: 対策

再起動失敗とエラー内容

他のプロセスが80番ポートを使用しているために apache がポートを使えないために起こるエラーらしい。

調査

ポートを使用しているプロセスの確認。

プロセスID:21746 ~ 21781までが apache を使っています。

プロセス停止、再起動

ということで、該当するプロセスを停止させます。

この状態で再度調査(sudo lsof -i | grep http)すると、何も出ません。
ちなみに、apache が停止しているので、ブラウザでアクセスすると当然ながら「404エラー」が出ます。

再起動したいだけなのになぁ…

最後に起動

これで再び起動するはずです。

なお、原因は『httpdが異常終了する等して古いhttpdプロセスが残っていること』とのことですが、手元にある(実験用)サーバは毎回この状態で、何故そうなるのかは現状ではまだわかりません。

もうちょっと探る必要があるかな…。

(おまけ)apacheの再起動コマンドについて

↑ クライアントと接続中の httpd プロセスを停止してしまうため、クライアントとの通信が強制的に切断してしまう

↑ graceful はすべてのクライアントとの通信が終了するまで再起動しません
Webサーバなどを公開していて、httpdサービスの停止が出来ない場合はかなり効果的。

参考サイト

-apache
-, , ,