我怎么知道macPorts如何偷走我的端口:80?

时间:2010-09-13 19:35:41

标签: macos macports mamp

我安装了MAMP(并且工作正常)然后我尝试通过macPorts安装mongoDB。然后macports开始安装一堆依赖项。在此之后,http://localhost开始提供“It Works!”屏幕。重新启动以查看它是否可以修复它,我发现我无法启动我的MAMP服务器。控制台说:

9/13/10 1:20:54 PM  [0x0-0x12012].de.appsolute.MAMP[133]    (48)Address already in use: make_sock: could not bind to address [::]:80

我知道macPorts做了些蠢事让我感到困惑。我怎样才能知道它偷了什么东西偷了端口:80?

这是我尝试过的一些命令:(:80没用,所以我只用了80)

$ sudo netstat -an | grep 80 
Password:
tcp46      0      0  *.80                   *.*                    LISTEN
udp6       0      0  fe80::21e:52ff:f.123   *.*                    
udp6       0      0  fe80::1%lo0.123        *.*   

$ lsof -i :80
COMMAND   PID        USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
firefox-b 451 biting_duck   39u  IPv4 0x0ab806b0      0t0  TCP 192.168.0.198:49515->stackoverflow.com:http (ESTABLISHED)
firefox-b 451 biting_duck   40u  IPv4 0x0ab87ec8      0t0  TCP 192.168.0.198:49517->sstatic.net:http (ESTABLISHED)
firefox-b 451 biting_duck   41u  IPv4 0x0ab88aec      0t0  TCP 192.168.0.198:49516->pz-in-f95.1e100.net:http (ESTABLISHED)
firefox-b 451 biting_duck   42u  IPv4 0x0ab97334      0t0  TCP 192.168.0.198:49518->sstatic.net:http (ESTABLISHED)
firefox-b 451 biting_duck   47u  IPv4 0x0ab87abc      0t0  TCP 192.168.0.198:49519->sstatic.net:http (ESTABLISHED)
firefox-b 451 biting_duck   48u  IPv4 0x0ab886e0      0t0  TCP 192.168.0.198:49520->sstatic.net:http (ESTABLISHED)
firefox-b 451 biting_duck   50u  IPv4 0x0ab89b1c      0t0  TCP 192.168.0.198:49521->sstatic.net:http (ESTABLISHED)
firefox-b 451 biting_duck   51u  IPv4 0x0ab86680      0t0  TCP 192.168.0.198:49522->peak-colo-196-216.peak.org:http (ESTABLISHED)
firefox-b 451 biting_duck   54u  IPv4 0x0ab81ef8      0t0  TCP 192.168.0.198:49523->gravatar.com:http (ESTABLISHED)
firefox-b 451 biting_duck   55u  IPv4 0x0ab82710      0t0  TCP 192.168.0.198:49524->gravatar.com:http (ESTABLISHED)
firefox-b 451 biting_duck   56u  IPv4 0x0ab8a334      0t0  TCP 192.168.0.198:49526->64.34.80.176:http (ESTABLISHED)
firefox-b 451 biting_duck   57u  IPv4 0x0ab812d4      0t0  TCP 192.168.0.198:49525->pv-in-f101.1e100.net:http (ESTABLISHED)

6 个答案:

答案 0 :(得分:16)

根据您对launchd errors和/private/etc/apache2/httpd.conf的描述,听起来像安装了基本操作系统的Ap​​ache副本已经打开。检查系统偏好设置 - >服务 - > Web服务,如果需要,请将其关闭。如果它没有打开,请尝试:

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

...如果 不起作用,请查看/ Library / LaunchDaemons以查看是否安装了启动Apache系统副本的其他内容(/ usr / sbin /的httpd)。

答案 1 :(得分:3)

在Max OS 10.1上,Mountain Lion,关闭apache为我解决了这个问题。

sudo apachectl stop

答案 2 :(得分:1)

MongoDB port不会安装需要或使用端口80的任何内容。也不会安装任何依赖项。此外,MacPorts端口在启动时获取端口80的唯一方法是安装启动守护程序,但MacPorts不会自行激活任何启动守护程序(您必须手动执行)。

但是,您可以通过执行

找出正在侦听特定端口的程序
$ lsof -i :<port>

例如,

$ lsof -i :80

将显示正在侦听端口80的程序。这应该缩小抓取端口的范围。

答案 3 :(得分:1)

确保您的httpd.conf文件正确无误。这意味着:不超过1'听80'。如果你有一次侦听80(或任何端口),这将触发绑定错误。

我希望这对你有用:)

答案 4 :(得分:1)

OS X安装了内置的apache webserver,它位于/ etc / apache2上。 当apache webserver以某种方式启动时,会显示消息“”It Works!“。 以下是停止/启动它的过程。

sudo apachectl stop
sudo apachectl start

需要sudo作为webserver访问端口80。

答案 5 :(得分:1)

如果某个服务定义它将侦听端口80,则launchd将在初始引导期间保留它。它可以是apache,但它也可以是其他东西。如果您没有apache,但遇到此问题请尝试

cd ~/Library/LaunchAgents
grep -R 80 .
cd /System/Library/LaunchDaemons
grep -R 80 .

它应该向您显示侦听端口80的代理。卸载并重新启动!