Pull to refresh

Решение проблем с портами в Apache в Windows

Reading time 3 min
Views 188K
Уже не раз сталкивался с проблемой, что 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.

Более быстрый способ найти имя процесса предложил 074909, за что ему отдельное спасибо:

В консоли надо ввести следующую команду:
for /f "tokens=1,2,3,4,5*" %i in ('netstat -aon ^| findstr ":80" ^| findstr /i listening') do echo %j %l & @tasklist | findst
r %m

которая и вернет имя необходимого процесса.

Тут существует несколько решений и какое вам подойдет одному только богу известно.
Первое.
Это проделки некоторых служб:
  • Windows Remote Management — Службы удаленного управления
  • Sql server reporting services(MSSQLSERVER) — Cлужбы Reporting Services (SSRS) — Службы отчетов SQL Server
  • Web Deployment Agent Service


Собственно необходимо эти службы отключить.

  1. ПКМ по «Мой компьютер»
  2. Управление
  3. Службы и приложения
  4. Службы
  5. Находим необходимые службы и останавливаем их.


Если не помогло, то можете включить их обратно =) и переходить к следующему пунтку. Тоже самое нужно сделать если вы не нашли этих служб у себя( я у себя на win7 только WinRM нашел).

Второе.
Проделки 'http.sys'
Тут я нашел 2 способа, не сильно отличающиеся друг от друга, мне помог именно 2ой, однако судя по комментариям 1ой тоже помог не малому количеству народа.
Начинаются они одинаково.

1) Идем в реестр. Выполнить->regedit
2) В ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP
И отличие в этих способах:
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/
Tags:
Hubs:
+6
Comments 13
Comments Comments 13

Articles