web-dev-qa-db-ja.com

Macでのnginxの起動が48で失敗する:アドレスはすでに使用されています

コマンド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を動作させるにはどうすればよいですか?

5
Yin Yang

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を検索します。複数の言及がある場合は、関連する構成のドキュメントを確認して、何度も使用していないことを確認してください。

1
Mark Stosberg