Форум
Если пишет что порт 80 занят, то это означает что у вас на самом деле занят порт 80 или идёт перехват подключения программы к сети антивирусом/фаерволом/прокси. Ниже наиболее частые причины:
— Skype занял порт 80 и 443. Решение: снимите в настройках галочку с опции «Использовать порты 80 и 443 в качестве альтернативных»;
— Порт занят другим сервером (Denwer, XAMPP и т.д.). Решение: настройте Open Server на использование другого IP нежели тот, на котором уже работает другой локальный сервер.
— Порт занят Windows версии 2008/2003 Server на всех IP. Решение: Пуск — Выполнить — services.msc, и отключить все службы где есть слова IIS.
— Порт никем не занят, но Open Server всё равно ругается. Решение: добавьте Open Server в «доверенные программы» или отключите слежение за портами 80/443/21/90xx/3306 в вашем антивирусе/фаерволе/прокси-сервере. В отдельных антивирусах/фаерволах возможны свои доп. настройки связанные с перехватом подключений программ к сети. На крайний случай в настройках Open Server можно включить «быстрый запуск», но делать это очень не рекомендуется, поскольку Open Server не будет проверять корректность запуска своих сервисов.
Age Сообщения: 2 Зарегистрирован: 25 окт 2012, 18:08
Проблема порт 80 занят
Непрочитанное сообщение Age » 25 окт 2012, 18:18
Доброго времени суток!
Больнучая ситуация.
Сегодня обновил OpenServer до версии 4.7.1 прежняя версия работала исправно,
скачал установил последний OpenServer
и вот весь день не могу запустить его.
Отключенные приложения и исключены из автозагрузки
которые потенциально могли занимать порт 80:
1. DropBox;
2. Skype;
3. TeamViewer;
4. ComodoClouds;
5. VM VirtualBox.
Компьютер, отключен от сети интернет.
и все равно лог выдает следующее:
2012-10-25 19:06:53 Начало процедуры запуска сервера
2012-10-25 19:06:53 Невозможно занять порт 80 поскольку он уже используется System
2012-10-25 19:06:53 Сбой запуска!
Прочих лок.серверов не установлено, host файл открыт на запись, антивирус и фаервол отключены.
запись в host файл не производит, сервер не запускает.
Нужна помощь!?
Максим Сообщения: 6022 Зарегистрирован: 11 дек 2010, 20:29
Так а какая вам помощь то нужна? Вам же сервер ясно написал черным по белому — Невозможно занять порт 80 поскольку он уже используется System
Это означает что какая-то системная служба занимает этот порт. Обычно это служба IIS сервера или служба веб-публикаций. Ищите что за служба и отключайте её.
Что делать, если System занимает 80 порт и как освободить порт 80 на Windows
Порой попадаешь в интересные и, местами, казусные ситуации. Мне нужно было срочно доработать один сайт у заказчика и я, естественно, развернул локальный сервер на ноутбуке, который мне там любезно предоставили. Я не стал заморачиваться с отдельными настройками Apache, MySQL, PHP а просто решил использовать готовые продукты типа WAMP.
Конечно, кто занимается или даже пробовал заниматься веб-разработкой, наверняка вспомнят о пресловутом Денвере, который, увы, перестал обновляться. Хорошая вещь некогда была, но сейчас Денвер безнадежно устарел и использовать его бессмысленно. Что ж, такая судьба всегда ждет проекты, построенные на голом энтузиазме…
Раньше для быстрого тестирования и разработке на винде я использовал WAMP, но как то незаметно для себя перешел на XAMPP, хотя, на самом деле, разницы особой я не замечаю и WAMPмне все же как то удобнее кажется. Но дело вкуса.
И вот, когда я установил это все, скинул в директорию архив с сайтом и начал настраивать окружение для работы, Апачи ругнулся на занятый 80 порт в системе.
Я первым делом проверил наличие запущенных программ TeamViewerи Skype, так как они и занимают обычно этот порт. Эти программы установлены не были и моя догадка летела в тартары.
Ладно, запустив команду netstat –ab, мне было выдано, что 80 порт занимает system.exe. Вот это, честно говоря в тупик меня и поставило. Первой мыслью было, что это вирус, но догадка была беспочвенной, так как на ноутбуке стоял хороший антивирус. Тогда я начал экспериментально вырубать службы Windows, и, о чудо, нашел что блокировало порт.
Виновницей оказалась Служба Web-публикаций. Простая остановка службы решила все проблемы с занимаемым портом. Честно говоря, лично мне было досадно, что все оказалось настолько просто, а я почти час мучал ноутбук, пытаясь найти гаденыша..
Надеюсь, что вы не наступите на мои грабли и быстренько решите проблему, когда system.exe занимает 80 порт с PID 4.
- Что делать, если в Windows вместо ярлыков отображаются значки блокнота (нарушена файловая ассоциация)
- Что делать, если слетела активация Windows 7
- Что делать, если не открывается меню Пуск на Windows 10
- Что делать, если после перезагрузки сбивается расположение ярлыков на рабочем столе Windows 10
- Решаем проблему с сетевым обнаружением в Windows 7
- Главная
- Устранение неполадок с компьютером
Как освободить порт 80 windows 10
Часто бывает так, что 80 порт по адресу 0.0.0.0 занимает приложение, имя которого определить не просто. Чаще всего таким приложением выступает какая-нибудь служба, запускающаяся автоматически во время старта системы и прослушивающая данный порт. А если 80 порт занят, тогда при установке нужных приложений, которым необходим этот порт, пользователь начнет испытывать трудности. Конечно же, в настройках можно определить другой порт для успешной работы инсталлируемого приложения, однако узнать, кто именно прослушивает и, порой, говорит по нему все же необходимо.
Первая попытка: netstat
Чтобы узнать, кто именно работает с 80 портом в windows 7, нужно открыть от имени администратора консоль командной строки. Там, понадобится ввести команду вызова утилиты netstat с ключами –aobp для протокола tcp. Так, мы сможем определить все ожидающие порты, исполняемые файлы, которые принимают участие в прослушивании сети, узнать PID исполняемых процессов и указать, что вся эта информация нас интересует в связи с tcp-протоколом.
Рис.1. Результат, выданный утилитой netstat. На 80 порту висит системное приложение, имя задачи которого определить не удается.
Как видим, в нашем случае утилита netstat не в состоянии определить имя файла, принимающего участие в создании подключения, но она в состоянии определить PID процесса, который прослушивает 80 порт. Она обнаружила, что процесс, занявший 80 порт, обслуживается системой, так как его PID = 4, поэтому убить просто данный процесс нельзя. Воспользуемся некоторыми другими методами.
Попытка номер два: спецкоманда для netstat
На просторах сети Интернет можно отыскать команду для netstat, благодаря которой также можно определить имя процесса, чтобы узнать, чем занят порт 80. Эта команда довольно длинна и она полностью приведена на изображении, представленном ниже. Также, представим результат работы этой команды, который также оказывается безрезультатным в нашем случае. Из него можно узнать только, что кто-то этот порт прослушивает, но мы об этом узнали более простым способом.
Рис.2. Результат работы спецкоманды. Как видим, вновь об имени процесса ничего не известно.
Рис.3. Еще результат работы спецкоманды.
Попробуем другой метод: http заголовки
Как известно, если кто-то открывает порт 80 для прослушивания, значит другой кто-то должен хоть когда-то в него «говорить». TCP — транспортный протокол, который используется, например, http-протоколом для передачи данных. В нашем случае необходим запуск веб-сервера apache, но 80 порт на локальном хосте занят, а поэтому, запуская службу этого веб-сервера, мы получаем ошибку, которая изображена на рисунке ниже. Эта ошибка записывается в журналы событий сервисов. Точное ее описание можно обнаружить в директории журналов Windows, в журнале приложений, если открыть консоль управления компьютером. Сервер apache не смог получить доступ к 80 порту, а поэтому он не смог создать сокет, который мог бы прослушивать сеть.
Рис.4. Попытка запустить службу Apache приводит к следующей ошибке. Более подробную информацию о ней можно получить в файле журнала событий указываемого стрелкой.
Рис.5. Первая ошибка с подробным описанием. Привязка к порту 80 невозможна.
Рис.6. Тут также сообщается, что привязка к сокету 0.0.0.0:80 невозможна.
Рис.7. Служба закрывается, так как нет прослушиваемого сокета.
Рис.8. Это уже следствие предыдущих ошибок.
Попробуем поговорить с 80 портом, сделав http запрос на локальный хост, и попробуем получить http заголовки, в которых должна содержаться информация о сервере, что принялся прослушивать нам необходимый порт. Воспользуемся для этого небольшим плагином для firefox под названием «Live http headers». С его помощью определяем, что настоящим именем сервера, что занял порт 80 является Microsoft-HTTAPI/2.0.
Рис.9. С помощью программы просмотра http заголовков определим имя сервера, прослушивающего сокет с портом 80.
Поиск продолжается: возвращаемся к командной строке
Очевидно, что по полученным сведениям мы можем проверить библиотеку httpapi.dll, чтобы узнать, какой из процессов ею пользуется. Вновь запустим от имени администратора командную строку, из которой запустим утилиту tasklist с флагом /m для httpapi.dll. Указанный флаг позволяет узнать все задачи, которые пользуются данной библиотекой. На изображении ниже представлен результат работы утилиты. Она показывает нам задачи, которые потенциально могут использовать порт 80 — т.е. одна из них действительно использует этот порт и является причиной проблем с запуском веб-сервера apache на 80 порту. Теперь нам остается узнать, кого представляют данные задачи.
Рис.10. Результат работы утилиты tasklist.
Применяем Process Explorer
Утилита tasklist услужливо также предоставила сведения о PID задачи, уникальном идентификаторе, который присваивается каждому процессу системы Windows. Для исследования владельцев процессов воспользуемся утилитой Process Explorer Марка Руссиновича, так как она предоставляет весьма глубокую информацию о процессах системы. Возьмемся за процесс MsDepSvc. Его PID — это число 2400. Отыщем его среди запущенных процессов, которые показывает Process Explorer.
Рис.11. В Process Explorer обнаруживаем процесс MsDepServ по PID 2400. В подробной информации видим, что это задача, выполняемая службой агента развертывания веб-сервера IIS.
Утилита Руссиновича показала, что данный процесс запущен службой агента веб-развертывания, как часть родного для Windows сервера IIS. Именно этот остаток с наибольшей долей вероятности и не дает запустить apache на 80 порту. Если это не так, тогда придется определять другие задачи, высвеченные утилитой tasklist. Данная служба запускается автоматически при старте всей системы и работает с «правами» системы (SystemLocal). Чтобы определить является ли причиной наших проблем именно эта служба, ее нужно просто отключить. Поэтому наш путь лежит в консоль служб, где ее нужно обнаружить. В нашем случае остановка агента веб-развертывания освободила 80 порт, а поэтому можем считать, что поиск успешно завершен и можно свободно запускать веб-сервер apache.
Рис.12. Серди служб находим службу агента веб-развертывания. Ее нужно остановить. В нашем случае это выход из ситуации.
После остановки службы и запуска веб-сервера apache, обнаруживаем, что сокет 0.0.0.0:80 занят процессом httpd.exe, который представляет веб-сервер apache.
Рис.13. Как видим, после запуска веб-сервера apache, он нормально «прибиндился» к 80 порту.
Что делать если порт 80 занят процессом SYSTEM
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. Описание у процесса system “NT 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. Радуемся тому, что так быстро нашли нужную информацию.