Не запускается служба IIS: порт 80 занят — как найти процесс через netstat
Почему веб-сервер IIS не может запуститься?
При попытке запустить веб-сайт или службу World Wide Web Publishing Service (W3SVC) в диспетчере служб IIS администратор сталкивается с ошибкой:
Не удается запустить веб-сайт. Процесс не может получить доступ к файлу, так как этот файл занят другим процессом (The process cannot access the file because it is being used by another process. Exception from HRESULT: 0x80070020).
Симптомы сбоя:
- Веб-сайт в консоли
inetmgrимеет статус Остановлен. - Код ошибки в журнале событий:
0x80070020. - Стандартный порт HTTP (
80) или HTTPS (443) уже занят сторонним приложением.
Кто чаще всего занимает порт 80 в Windows: Служба отчетов SQL Server Reporting Services (SSRS), Skype, служба публикации веб-развертывания (Web Deployment Service), BranchCache или сторонний сервер Apache/Nginx (XAMPP/OpenServer).
Шаг 1. Находим номер процесса (PID), занявшего порт 80
Откройте Командную строку от имени администратора и выполните команду:
netstat -ano | findstr ":80"Пример вывода:
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4128
TCP [::]:80 [::]:0 LISTENING 4128Последнее число в строке — это идентификатор процесса PID (в нашем примере: 4128).
Шаг 2. Узнаем имя программы по ее PID
Выполните команду получения имени приложения по найденному номеру PID:
tasklist /fi "pid eq 4128"Команда выведет имя программы (например, ReportingServicesService.exe, skype.exe или httpd.exe).
Шаг 3. Освобождаем порт для IIS
Случай А: Порт занят процессом SYSTEM (PID 4)
Если порт 80 слушает системный процесс PID 4 (драйвер http.sys), значит, порт держит другая служба Windows. Отключите службы веб-развертывания и отчетов:
# Остановка службы Web Deploy:
net stop MsDepSvc
# Остановка SQL Server Reporting Services:
net stop ReportServer
# Остановка службы публикации узлов BranchCache:
net stop PeerDistSvcСлучай Б: Запуск веб-сайта IIS на другом порту
Если конфликтующую программу нельзя отключить, измените привязку порта в самом IIS:
- Откройте Диспетчер служб IIS (
inetmgr). - В левом дереве выберите ваш сайт -> в правой панели нажмите Привязки (Bindings).
- Выберите строку
http 80-> нажмите Изменить -> укажите порт8080-> нажмите ОК. - Запустите сайт!
Частые вопросы (FAQ)
Что означает код ошибки 0x80070020 в IIS?
Код 0x80070020 расшифровывается как ERROR_SHARING_VIOLATION (Нарушение общего доступа). Сетевой порт, к которому пытается привязаться IIS, уже монопольно заблокирован другим приложением.
Как принудительно завершить зависший процесс, занявший порт?
Выполните команду принудительного закрытия: taskkill /F /PID 4128 (замените 4128 на ваш реальный номер процесса).
Как посмотреть полный список всех занятых портов на сервере в реальном времени?
Используйте встроенную команду: Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess | Sort-Object LocalPort.
Может ли антивирус блокировать запуск сайта на порту 80?
Да, некоторые антивирусные экраны (Web Antivirus) перехватывают 80 порт для фильтрации трафика. Попробуйте временно отключить веб-защиту в настройках антивируса.