nginx启动失败的mac osx 10.9小牛队

时间:2013-11-01 03:18:42

标签: macos nginx osx-mavericks

我已经使用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()

我试图关注these directions,但由于我的输出看起来有点不同,我运气不好。

输出:

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再次运行的任何想法?非常感谢任何帮助!!

3 个答案:

答案 0 :(得分:51)

你的ps ... | egrep命令找不到自己,而不是nginx的实例(查看“命令”列)。由于端口80正在使用中,可能是其他程序(可能是OS附带的Apache?)正在运行并抓住它。要找到答案,请运行:

sudo lsof -i:80

如果是系统Apache(“httpd”)程序,您可以将其关闭:

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

如果不这样做,将需要更多信息来弄清楚什么是抓取端口80以及它是如何开始的。

答案 1 :(得分:2)

可能仍然是nginx runnig并在端口80上侦听。尝试此命令

sudo killall nginx

答案 2 :(得分:0)

我首先尝试了以下命令,以查看哪个应用程序正在使用80端口。

sudo lsof -i -n -P | grep TCP

com.docke 1985 KOMP 25u IPv6 0x4e18b4b0735f4091 0t0 TCP *:30299 (LISTEN) com.docke 1985 KOMP 33u IPv6 0x4e18b4b0735f21f1 0t0 TCP *:80 (LISTEN) com.docke 1985 KOMP 43u IPv4 0x4e18b4b06bb5d721 0t0 TCP 127.0.0.1:6443 (LISTEN) com.docke 43889 KOMP 8u IPv4 0x4e18b4b06b933d41 0t0 TCP 127.0.0.1:63347 (LISTEN) node 85239 KOMP 29u IPv4 0x4e18b4b0954cbea1 0t0 TCP 127.0.0.1:4200 (LISTEN)

在上面的结果中看到下面的条目。并停止了docker。

com.docke 1985 KOMP 33u IPv6 0x4e18b4b0735f21f1 0t0
TCP *:80(听)

并尝试了以下两个命令。

sudo killall nginx

sudo nginx

我的应用程序开始工作,并开始从我的nginx.conf文件中选择80端口。