Как мне узнать, как macPorts украл мой порт:80?
У меня была установлена MAMP (и она работает нормально), затем я попытался установить mongoDB через macPorts. Затем macports начал устанавливать кучу зависимостей. после этого http://localhost/ начал давать "Это работает!" экран. после перезагрузки, чтобы посмотреть, может ли это исправить, я обнаружил, что не могу запустить свой сервер 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->stackru.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 ответов
Из того, что вы описываете об ошибках запуска и /private/etc/apache2/httpd.conf, похоже, что копия Apache, установленная с базовой ОС, включена. Проверьте Системные настройки -> Сервисы -> Веб-сервис и отключите его при необходимости. Если он там не включен, попробуйте:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
... и если это не сработает, загляните в /Library/LaunchDaemons, чтобы узнать, было ли установлено что-то еще, запускающее системную копию Apache (/usr/sbin/httpd).
На Max OS 10.1, Mountain Lion, отключение apache устранило эту проблему для меня.
sudo apachectl stop
В OS X был установлен встроенный веб-сервер Apache, который находится в /etc/apache2. Сообщение "Это работает!" Отображается, когда каким-то образом запускается веб-сервер Apache. Ниже описан процесс его остановки / запуска.
sudo apachectl stop
sudo apachectl start
sudo необходим в качестве порта 80 доступа к веб-серверу.
Если какой-либо сервис определит, что он будет прослушивать порт 80, launchd зарезервирует его во время начальной загрузки. Это может быть apache, но это может быть и что-то еще. Если у вас нет apache, но есть проблема, попробуйте
cd ~/Library/LaunchAgents
grep -R 80 .
cd /System/Library/LaunchDaemons
grep -R 80 .
Он должен показать вам агенты, слушающие порт 80. Удалите и перезапустите!
Порт MongoDB не устанавливает ничего, что потребовало бы или использовал порт 80. Ни одна из его зависимостей. Кроме того, единственный способ, которым порт MacPorts может захватить порт 80 при запуске, - это если он установил демон запуска, но MacPorts не активирует никаких демонов запуска самостоятельно (вы должны сделать это вручную).
Тем не менее, вы можете узнать, какая программа прослушивает определенный порт, выполнив
$ lsof -i :<port>
Например,
$ lsof -i :80
покажет вам программу, прослушивающую порт 80. Это должно сузить то, что захватывает порт.
Убедитесь, что ваши httpd.conf файлы правильные. Это означает: не более 1 "Слушай 80". Если у вас есть Listen 80 (или любой другой порт) более одного раза, это вызовет ошибку привязки.
Я надеюсь, что это полезно для вас:)