コマンドSudo nginx
を使用してMac OS Xでnginxを起動しようとしています
次のエラーで失敗します
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] still could not bind()
Sudo apachectl stop
を使用してApacheサービスを停止しようとしています
これは私に次のエラーを投げます
launchctl: Error unloading: org.Apache.httpd
この答え によると、それはおそらくApacheがすでに実行されていないことを意味します
次に、Sudo lsof -i:80
を使用して、ポート80で何が実行されているかを把握しようとしました
これはこれに出力します
Google 441 jaskaran 68u IPv4 0xa3f4d891ed1a8373 0t0 TCP 192.168.1.45:50993->www.google:http (ESTABLISHED)
Google 441 jaskaran 143u IPv4 0xa3f4d891ed054b5b 0t0 TCP 192.168.1.45:51017->www.scorecardresearch.com:http (ESTABLISHED)
Google 441 jaskaran 150u IPv4 0xa3f4d891eb9a1b5b 0t0 TCP 192.168.1.45:51018->www.scorecardresearch.com:http (ESTABLISHED)
Google 441 jaskaran 152u IPv4 0xa3f4d891ed1a4373 0t0 TCP 192.168.1.45:51019->www.scorecardresearch.com:http (ESTABLISHED)
Google 441 jaskaran 156u IPv4 0xa3f4d891ed071b5b 0t0 TCP 192.168.1.45:51020->www.scorecardresearch.com:http (ESTABLISHED)
このコマンドの出力は、時間とともに変化し続けます。
Nginxを動作させるにはどうすればよいですか?
nginx
を開始する前に、次のように、ポート '8080'で何かがすでに実行されているかどうかを確認します。ポート「8080」と言います。これは、投稿したエラーメッセージに表示されるポート番号です。
$ Sudo netstat -nlp | grep ':8080' tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2355/nginx
tcp6 0 0 :::8080 :::* LISTEN 2355/nginx
私の場合、ポート8080で実行されているプロセスIDが2355の「nginx」という名前のプロセスが表示されています。
上記のように、関連するプロセスIDにkill -TERM 2355
を発行して停止し(実行したくない場合)、_netstat
で確認します。自分のプロセスIDに一致するように「2355」を変更します。
nginx
を開始する前に、その部分で何も実行されていないことを確認した場合でも、まだエラーが発生することがあります。その場合、Nginxはそのポートに関して競合するエントリを持っている可能性があります。 Nginx構成で8080
を検索します。複数の言及がある場合は、関連する構成のドキュメントを確認して、何度も使用していないことを確認してください。