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

31.01.2019

Windows 7 – процесс system висит на 80 порту PID 4 ? Замучались искать решение.

Если ответ положительный, то я вас прекрасно понимаю. На одной машинке с windows 7 решил поставить веб-сервер…убил пол дня. Как раз таки из-за падений apache. Ругался он довольно неожиданно для меня. На то, что порт 80 уже занят.

Что ж. Запускаем командную строку и пишем

netstat -o -n -a | findstr 0.0:80

На что получаем:

TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4

Последнее число 4 это PID процесса, т.е. уникальный идентификатор процесса - то, что нужно. Запускаем диспетчер задач. Выбираем вкладку процессы. Далее в меню вид нас интересует пункт «выбрать столбцы» и отмечаем галочкой пункт «ИД процесса (PID)». Находим процесс, у которого PID = 4 это оказывается процесс system.

Описание у процесса systemNT Kernel & system ”. По началу даже возникла мысля что это вирус. Но во превых это встретилось на всех машинах с windows 7 или window server 2008 R2. Процесс System имел PID 4 и везде занимал порт 80.

Прибить его нельзя, да и незачем. Путем длительного обращения к гуглу и изучению тонны материалов. Большинство пишет про то что я и так знал… что порт 80 занял skype, но к сожалению это не наш случай.

На одном из ресурсов было установлено что это компонент нашей любимой windows запускается через обертку system. А именно “http.sys”. Эта бяка оказалась живучей…в службах найти не удалось. Несколько советов отключения через реестр тоже не помагало, гадский драйвер весел. Хотя мне и удалось отключить его автоматический запуск. При старте windows 7 порт 80 был свободен, но как только была попытка запустить Apache тут же поднимался драйвер http.sys и занимал порт 80 . Это поддвердил лично просмотрев утилитой «ProcessExplorer» все потоки (Threads) процесса system там нам показали что http.sys по прежнему запущен…

Освободить порт 80 занятый system в windows 7

удалось следующим путем.

  1. Win+R вводим “regedit” (без ковычек).
  2. Ищем ветку «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP»
  3. Меняем значение ключа “start” с 3 на 4…до этого встречал советы ставить 0. Так вот мне ноль не помог.
  4. Перезапускаем компьютер.
  5. Радуемся тому, что так быстро нашли нужную информацию.

Вопросы и пожелания оставляйте в комментариях, может еще что-то не получается помимо злого процесса system на порту 80 .

И помните, на нашем сайте можно найти много всего

UPDATE Очень полезный комментарий пользователя "Old Daemon" вынесен в статью:

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

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

В консоли надо ввести следующую команду:
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) Перезагружаем компьютер.

Радуемся жизни =)

Как правило, о существовании такого понятия, как закрытый порт, люди узнают не при самых приятных обстоятельствах. Чаще всего это происходит в том случае, когда какая-либо компьютерная программа отказывается работать как следует. Сообщение о необходимости открытия 443 порта может возникнуть в окне самой программы. Также его можно найти на форуме, посвященном данной проблеме. В любом случае, предлагаем вам немного углубиться в данную тему и, соответственно, понять, что такое порт 443, как его открывать и нужно ли это делать.

Что это вообще за «порты»?

Тот факт, что у каждого компьютера есть свой IP-адрес в сети, вряд ли сегодня является чем-то малоизвестным. В то же время о так называемых «портах» большинству пользователей практически ничего не известно.

Итак, чтобы понять суть термина «порт», стоит представить себе длинное здание с огромным числом дверей. Для большего соответствия реальности количество этих дверей должно быть равным 65 536, причем каждая дверь должна иметь свой порядковый номер, начиная с нуля. В данном случае большим зданием является ваш компьютер, находящийся в сети, а портами - эти самые двери.

Зачем нужно так много портов?

Большинство их не несет в себе ничего особенного и используется для разных целей. Например, когда вы скачиваете файл или смотрите фильмы онлайн, ваш компьютер устанавливает соединение между любым своим свободным портом и портом сервера, с которого вы получаете информацию. Как только передача данных заканчивается, порт освобождается.

В то же время некоторые (в том числе и порт 443) имеют вполне четкие назначения. Например, 99.99% процентов сайтов просматривается через порт № 80. То есть когда вы хотите зайти, например, на «Одноклассники», ваш компьютер «стучится» в дверь № 80 сервера «Одноклассникиов» и просит выдать ему страницу.

Что такое порт 443?

Как вы могли догадаться, наш порт также имеет особое предназначение, иначе зачем было бы посвящать ему целую статью? Впрочем, о его назначении мы уже говорили - данный порт также чаще всего используется для просмотра сайтов, однако в то время как его 80-й коллега выдает информацию как есть, 443 порт предварительно ее шифрует, дабы на длинном пути от сервера до вашего компьютера никто не мог перехватить страницу и тем более внести в нее изменения.

Раньше к услугам данного порта прибегали разве что системы Интернет-банкинга, не желающие раскрывать информацию о денежных операциях, в то же время сегодня те же «Одноклассники» или «ВКонтакте» используют «безопасный» порт в самых рядовых случаях, например, когда вы просматриваете свои сообщения или «лайкаете» чужие фото.

Почему порт может быть закрыт?

Итак, почему может быть закрыт порт 443? Тому есть несколько возможных причин:

  • доступ к нему блокирует программа-файрволл (или брандмауэр);
  • порт может быть заблокирован администратором вашей сети;
  • порт может быть не «прописан» на маршрутизаторе.

Утверждая, что порт 443 закрыт, можно иметь в виду несколько вещей: во-первых, это может означать, что программа на вашем компьютере не может получить доступ к порту сервера, а во-вторых, компьютер извне не может получить доступ к порту вашего компьютера. Каждый из данных случаев, а также причины его возникновения требуют довольно подробного рассмотрения, поэтому не ожидайте от нас подробных инструкций. Тем не менее мы можем подсказать вам, куда «копать».

в брандмауэре?

Начнем с простого - программы-файрволла. Данное приложение имеется на каждом современном компьютере и используется для того, чтобы программы не «ломились» куда попало. Несмотря на то что 443 порт редко попадает в список заблокированных, все же есть смысл добавить его в число разрешенных. Давайте рассмотрим, как это можно сделать на примере Windows 7/8/8.1.

Чтобы 443, необходимо сделать следующее:

  1. Откройте панель управления. Универсальный способ сделать это - нажать клавиши Win + R, вписать в появившемся окне слово control и нажать «ОК»;
  2. Убедитесь, что в правом верхнем углу включен режим отображения «Крупные значки» (см. рисунок вверху), после чего щелкните по пункту «Брандмауэр Windows»;
  3. Теперь у вас имеется несколько сценариев дальнейших действий: либо вы отключаете брандмауэр полностью, либо даете полный доступ вашей программе.

На вашем экране должно появиться окно, схожее с этим:


Чтобы отключить брандмауэр, щелкните по пункту «Включение и отключение брандмауэра Windows». Он находится слева, в середине списка. Далее следует выставить все переключатели в положения, которые обведены на следующем рисунке, после чего щелкнуть кнопку «ОК». После того как проблема разрешится, мы бы рекомендовали вернуть все в первоначальную позицию. Ведь если вы оставите брандмауэр отключенным, существует определенный риск, что различная «гадость», попадающая на ваш компьютер, сможет отчитаться об этом своему создателю и начать малополезные для вас действия.


Чтобы добавить конкретную программу в список разрешенных и позволить ей доступ на порт 443, а также любые другие, выберите пункт, который обведен красным на картинке сверху. В появившемся списке стоит разыскать приложение, которое никак как следует, после чего выставить напротив него галочки во всех полях. Так вы дадите операционной системе возможность понять, что данная программа может «общаться» как с вашими домашними устройствами, так и со всем миром. Заканчивает нашу «операцию» изящный клик по кнопке «ОК» и закрытие всех теперь уже ненужных окон.


Что делать, если порт закрыт администратором?

Как 443, 80, 21 и т. д., если они были заблокированы системным администратором? Подобный вопрос чаще всего волнует офисных работников, которые не могут воспользоваться привычной программой на рабочем месте. В данном случае существует всего два варианта решения проблемы: если программа нужна для работы, можно обратиться к руководству или же к администратору лично, дабы он обеспечил вам возможность плодотворно работать, если же программа нужна для развлечения, то тут остается только смириться или же искать подходы к бородатому дядечке в свитере. Подсказка: админы едят и пьют, как бы странно это ни звучало.

Как открыть порт на маршрутизаторе?

Если же вы решили создать у себя на домашнем компьютере небольшой веб или почтовый сервер, то на вопрос о том, как открыть порты 443, 80, 110, 25 и прочие, стоит обращаться к инструкции к вашему маршрутизатору. К сожалению, единого ответа на данный вопрос не существует, так как решение данной проблемы зависит от производителя оборудования, панели управления устройством и многих других факторов.