nginxが再起動できなかったときの対処法

nginxを再起動したときに、以下のようなエラーが生じる場合があります。

Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)

この場合「古いnginxプロセスが残ってしまっている」、もしくは「他のプロセスがポートを使用している」ため、nginxが再起動できないようです。

なのでnginxを再起動するには、該当のポートを使用しているプロセスを消す必要があります。

利用中のプロセスを表示する

現在起動しているプロセスを表示するには、

sudo lsof -i

を叩きます。

httpやnginxなどのキーワードでgrepしてあげると、プロセス一覧が見やすくなります。

sudo lsof -i | grep nginx

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 27178 nginx 6u IPv4 250336 0t0 TCP *:http (LISTEN)
nginx 27179 nginx 6u IPv4 250336 0t0 TCP *:http (LISTEN)

それぞれのプロセスに番号(PID)が表示されるので、

このPIDを使って以下のように該当のプロセスを削除します。

プロセスを削除

プロセスを削除するには、kill PID を実行します。

sudo kill 27178
sudo kill 27179

これで無事にnginxが再起動できました。

Related Posts