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

Nginx のプロセスがポートをリッスンしながら死んでしまう事象が発生。以下のとおり、nginx を起動しようとするとエラーになりました。

スポンサーリンク

80番ポートは既に使われているよ、とメッセージが出力され起動できないエラー。

lsof コマンドで、特定のポートを LISTEN しているプロセスを調べる

入ってなかったので、lsof コマンドを入れる。実際には、Chef の Recipe に書いてプロビジョニングしました。

lsof コマンドで80番ポートを Listen しているプロセスを調べる。

COMMAND に nginx とあるので、80番ポートを LISTEN しているのは nginx 自身らしい…。一方で nginx のステータスは…

と、停止しています。nginx が80番ポートを聞きつつプロセス自体は停止している(?)みたいです。

プロセスを kill して nginx 起動

PID を指定して手動でプロセスを kill します。

起動。

これで nginx が起動します。

Chef を使う場合の注意点

注意点として Chef を使う場合、一旦 nginx を停止させたあと、プロビジョニングを実行したほうが良い。

サーバー側で nginx 停止。

ローカルのマシンでプロビジョニング。

こうしないで先にサーバー側で手動で service nginx start させていると、プロビジョニング実行時に Nginx 用の Chef Recipe に書いてる service リソースで同様のエラーが発生しました。nginx が stop した状態で、Chef Recipe を通して nginx を start させると OK。

スポンサーリンク
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!