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