「Address already in use」とか出てNginxを起動できない時の対応策

Nginxを起動する際、ごくごく稀に起動できないことがあります。

例えば Address already in use というエラー。文字通りポート番号やアドレスが別のサービスですでに使われている場合に発生します。

今回はその解決方法についてまとめます。

LISTENポートを調べる

lsof コマンドを使い、ポート番号がすでに使われていないか調べることができます。lsofコマンドがない場合はインストールします。

lsof -i -P | grep "LISTEN"

今回はなぜかNginx自身がゾンビ状態になってポートを占有していた模様。。

ポートを占有しているサービスを止める

ポートを占有しているサービスを止めます。

systemctl stop nginx

↑これでダメならプロセスを強制終了します。

念のため ps コマンドでプロセスを確認し、

ps ax | grep nginx

pkillします。
pkill -15 -f nginx

Nginxが起動するか確認する

ポートを占有しているサービスを止めたら、Nginxが無事起動するはず。

systemctl start nginx
systemctl status nginx

まとめ

対処療法ではありますが、 lsof でLISTENポートを確認し、対象のプロセスを pkill することで一旦は解決します。