Решение проблем с портами в Apache в Windows
Apache *
Уже не раз сталкивался с проблемой, что 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 | findstr %m
которая и вернет имя необходимого процесса.
Тут существует несколько решений и какое вам подойдет одному только богу известно.
Первое.
Это проделки некоторых служб:
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_MACHINE\SYSTEM\CurrentControlSet\Services\HT TP
И отличие в этих способах:
3) Создаем параметр типа Dword c именем «NoRun» и присваиваем ему значение «1» без кавычек.
или
3) Ищем параметр «Start» и меняем значение на «0» без кавычек естественно.
4) Перезагружаем компьютер.
Радуемся жизни =)
PS: еще быстрее - смените порт в конфиге апача например на 8081