サーバー管理の現場において今まで役に立ったことをまとめた小ネタ集です。お役に立てれば幸いです。なお、不完全な情報や時代遅れになってしまった情報もあるかもしれませんが何卒ご了承ください。

Apache : Address already in use: が出てApacheが再起動できないときの対処方法

症状

Apacheを起動しようとすると「Address already in use」が表示されて起動できない。

対処例(CentOS6での例)

ポートを使用しているプロセスをkillしましょう。
障害になっているプロセスIDを調べましょう。
/usr/sbin/lsof -i | grep http
を実行するとこんな感じです。

httpd 20127 apache 4u IPv6 2348741 0t0 TCP *:http (LISTEN)
httpd 20127 apache 6u IPv6 2348745 0t0 TCP *:https (LISTEN)
httpd 20128 apache 4u IPv6 2348741 0t0 TCP *:http (LISTEN)
httpd 20128 apache 6u IPv6 2348745 0t0 TCP *:https (LISTEN)
httpd 20129 apache 4u IPv6 2348741 0t0 TCP *:http (LISTEN)
httpd 20129 apache 6u IPv6 2348745 0t0 TCP *:https (LISTEN)

これらの20127、20128、20129などがプロセスIDです。
それらのプロセスを強制終了しましょう。
kill -9 20127
kill -9 20128
kill -9 20129

killコマンドの書式は、
kill -[option] [プロセスID]
です。
オプションの9は強制終了を意味します。
Apacheを再起動しましょう。
CentOS6なら、
/etc/rc.d/init.d/httpd restart
CentOS7なら、
systemctl restart httpd
等、環境に合わせて再起動してください。