Уже не раз сталкивался с проблемой, что Apache не может запустится из-за того, что другой процесс уже использует 80 порт. Собственно после долгого и мучительного серфинга по просторам русскоязычного, а потом и англоязычного интернета насобирал всесозможные способы устранения и причины появления данной проблемы. Эти самые причины и способы их решения и хочу перечислить здесь.
(OS 10048) Only one usage of each socket address (protocol/network address/port) is normally permitted. : make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Самая простая и обыденная причина появления данной проблемы это Skype.
Первым делом необходимо проверить настройки Skype. Идем в Инструменты/Настройки/Дополнительно/Соединение/ и убираем галочку «Использовать порты 80 и 443 в качестве входящих альтернатив». Сохраняем и перезапускаем Skype чтобы настройки вступили в силу. Да и лучше повторно перепроверить эту настройку, потому что бывало, что она не сохранялась по неизвустной причине.
Если не помогло, то надо поискать что за процесс использует наш порт. Открываем консоль: Главное меню->Выполнить-> вводим cmd и жмем enter.
В консоли вводим следующую команду
netstat -aon | findstr 0.0:80
Левая часть команды вернет нам текущее состояние всех портов, а правая найдет в них нужный нам 80 порт.
Смотрим результат и ищем последний столбец PID. Запоминаем его. Это идентификатор требуемого процесса.
Если это процесс с PID не равный 4, то делаем следующее.
Идем в Диспетчер задач и ищем необходимый нам процесс. По умолчанию PID не выводится. Для этого идем в Вид/Выбрать столбцы и ставим галочку у «ИД процесса(PID)». Сохраняем и видим что рядом с именем процесса появился столбец «ИД процесса».
Ищем процесс с требуемым идентификатором. Там поступаете с этим процессом как хотите, можете просто убить его, убрать из автозагрузки, удалить всё приложение и т.п.
В случае, когда PID был равен 4, это означает что 80 порт используется системой (системным процессом) и в Диспетчере задач вы увидите имя процесса System.
Тут существует несколько решений и какое вам подойдет одному только богу известно.
Первое.
Это проделки некоторых служб:
- Windows Remote Management — Службы удаленного управления
- Sql server reporting services(MSSQLSERVER) — Cлужбы Reporting Services (SSRS) — Службы отчетов SQL Server
- Web Deployment Agent Service
Собственно необходимо эти службы отключить.
- ПКМ по «Мой компьютер»
- Управление
- Службы и приложения
- Службы
- Находим необходимые службы и останавливаем их.
Если не помогло, то можете включить их обратно =) и переходить к следующему пунтку. Тоже самое нужно сделать если вы не нашли этих служб у себя( я у себя на win7 только WinRM нашел).
Второе.
Проделки 'http.sys'
Тут я нашел 2 способа, не сильно отличающиеся друг от друга, мне помог именно 2ой, однако судя по комментариям 1ой тоже помог не малому количеству народа.
Начинаются они одинаково.
1) Идем в реестр. Выполнить->regedit
2) В ветку HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesHTTP
И отличие в этих способах:
3) Создаем параметр типа Dword c именем «NoRun» и присваиваем ему значение «1» без кавычек.
или
3) Ищем параметр «Start» и меняем значение на «0» без кавычек естественно.
4) Перезагружаем компьютер.
Радуемся жизни =)
Материалы:
http://www.mydigitallife.info/how-to-check-and-identify-which-application-is-listening-or-opening-port-80-and-443-on-windows/
http://superuser.com/questions/43307/whys-is-system-process-listening-on-port-80
http://stackoverflow.com/questions/1430141/port-80-is-being-used-by-system-pid-4-what-is-that
http://serverfault.com/questions/65717/port-80-is-being-used-by-system-pid-4-what-is-that
http://www.cameroncooke.com/2009/01/25/windows-7-uses-port-80-and-makes-it-impossible-to-install-apache-solution/
Автор: sanekglobov