web-dev-qa-db-ja.com

Mac OSX 10.9 Mavericksでnginxの起動が失敗する

Nginxを数か月間問題なく使用してきましたが、Mac OS X 10.9 Mavericksにアップグレードした後、nginxを起動しようとすると、次のようになります。

nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] still could not bind()

これらの指示 を試してみましたが、出力が少し違って見えるので、あまり運がありません。

出力:

ps ax -o pid,ppid,%cpu,vsz,wchan,command|egrep '(nginx|PID)'

です:

  PID  PPID  %CPU      VSZ WCHAN  COMMAND
 15015 12765  0.0  2432784 -      egrep (nginx|PID)

そのPIDを使用してプロセスを強制終了しようとしましたが、決して死ぬことはないようです... nginxを再度実行する方法に関するアイデアはありますか?どんな助けでも大歓迎です!!

27
gjunkie

君の ps ... | egrepコマンドは、nginxのインスタンスではなく、それ自体を検出しています(「COMMAND」列を見てください)。ポート80が使用されているので、おそらく他のプログラム(OSに付属しているApacheなど)が実行されていて、それを取得している可能性があります。調べるには、次を実行:

Sudo lsof -i:80

システムのApache( "httpd")プログラムの場合は、おそらく次のコマンドでシャットダウンできます。

Sudo launchctl unload -w /System/Library/LaunchDaemons/org.Apache.httpd.plist

それでもうまくいかない場合は、ポート80を取得しているものとそれがどのように開始されているのかを理解するために、より多くの情報が必要になります。

55
Gordon Davisson

おそらくまだnginxが実行されており、ポート80でリッスンしています。このコマンドを試してください

Sudo killall nginx
2
pashaplus