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

スポンサーリンク

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

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

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。

スポンサーリンク
 
スポンサーリンク

Leave Your Message!