0,0
рейтинг
4 июня 2012 в 17:01

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

Уже не раз сталкивался с проблемой, что 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/
Глобов Александр @sanekglobov
карма
8,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Администрирование

Комментарии (13)

  • +8
    А ещё говорят, что Линукс — сложная система ;-)
  • 0
    Уже было, и не один раз. Да, я говорю о хабре.
    • +1
      Искал, но к сожалению найти не удалось. Если дадите ссылки, буду очень признателен.
  • +2
    netstat -b покажет сразу имена исполняемых файлов, запустивших процесс
    • 0
      Спасибо. Буду знать. Однако она не сильный выигрыш дает в скорости нахождения процесса, потому что отрабатывает она долго. Быстрее будет самому зайти в диспетчер и посмотреть процесс по PID.
      • 0
        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
        • 0
          Эм. Вместо иконки хабраюзера перед echo — символ "@"
          • 0
            Спасибо. Добавлю в пост этот способ.
  • 0
    для win8 это служба Служба веб-публикаций
    • 0
      для win10 так же Служба веб-публикаций
      • 0
        Прошло 4 года, а проблема все также актуальна? =)
  • 0
    Проделал все шаги! Есть удобная прога для просмотра, на каком порту что висит — "CurrPorts". 80 и 443 под индейцем. Добавил параметр Dword c именем «NoRun» в соотв. ветку реестра. Проверил, не грузят ли службы-бяки — нет, или выключены или отсутствуют. Это всё на Win 8. Установил на VM под Win2003 Server начисто денвера — та же ерунда: 500 и всё тут. Я в тупике, товарищи, в полном. Работало-работало годами, потом внезапно отвалилось и всё тут.
    • 0
      Ну судя по всему у вас проблема немного другого плана, чем описана в статье. Если вы видите 500 ошибку вместо своей страницы, то Apache запустился как минимум. Копайте в другую сторону. Включите вывод ошибок и посмотрите что вызывает эту самую 500 ошибку.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.