エラー「(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 しなくていいプロセスも殺してしまう可能性があるためおすすめはしません。

コメントを残す