エラー「(98)Address already in use:」が出てApacheが起動しない

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

みたいなエラーが出て起動できなかったわけですが・・・

エラー内容は「80番ポートが使えないから起動できないよ!」というもの。

大抵は予期せぬシャットダウンとかでプロセスの残骸が邪魔してることが多いんですが・・・

今回は違います。

ちゃんと理由はわかってるんです。

昨晩SSL導入の作業を行いました。

SSL対応をするとApacheの起動時に毎回パスフレーズが尋ねられるようになります。

その状態で、Apacheを自動起動に設定したままサーバーをシャットダウンして帰宅。

朝会社に来てサーバーの電源をON。

サーバー起動後、Apacheが立ち上がろうとしますがパスフレーズの所で詰まります。

そして80番ポートが占領された状態になりSTOPも効かない状態に。

・・・なんて初歩的な。

この場合も予期せぬシャットダウンの場合と対処は同じで、邪魔しているプロセスをkillコマンドで排除してあげます。

まず下記コマンドで80番ポートを使用しているプロセスを探します。
/usr/sbin/lsof -i | grep http

今回はこんな感じ
httpd 1987 root 5u IPv6 13278 0t0 TCP *:http (LISTEN)
httpd 1987 root 7u IPv6 13282 0t0 TCP *:https (LISTEN)

右から2番目の数字(今回は1987)がプロセスIDです。

下記コマンドでプロセスIDを指定して殺します。
kill -9 1987

面倒な場合は下記コマンドでApacheを一掃できます。
kill -9 httpd

ただし、killしなくていいプロセスも殺してしまう可能性があるためおすすめはしません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です