2011-01-26 2 views
1

я получил следующее сообщение об ошибке при попытке запустить Apache:Не удается запустить Apache на Windows Server 2008 R2

(OS 10013) была сделана попытка доступа к сокету таким образом, запрещенным правами доступа , : make_sock: не удалось привязать к адресу 0.0.0.0:80, нет доступных сокетов для прослушивания, выключение. Не удалось открыть журналы

Я мог бы начать его раньше. Думаю, после того, как я включил функцию Windows .NET Framework 3.5. теперь я не могу запустить его должным образом. Я проверил порт:

netstat -aon|findstr "80" 
TCP 0.0.0.0:80    0.0.0.0:0    LISTENING  4 
TCP [::]:80    [::]:0     LISTENING  4 
tasklist|findstr "4" 
System Idle Process    0 Services     0   24 K 
System       4 Services     0  304 K 

Как это решить?

+0

Во-первых, принадлежит ServerFault – abatishchev

+0

Во-вторых, вы используете функцию «IIS»? – abatishchev

+0

Я удалил iis. – Tom

ответ

0

Возможно, вы столкнулись с состоянием времени ожидания TCP? http://msdn.microsoft.com/en-us/library/ms819739.aspx

«TIME-WAIT» уверен, что прошло достаточно времени, чтобы убедиться, что любые сегменты TCP, которые могли быть пропущены или отложены, неожиданно не доставляются в новое несвязанное приложение с теми же настройками соединения. RFC 793: Управление передачей Протокол протокола DARPA протокола Интернета указывает время, в течение которого пару сокетов нельзя повторно использовать в качестве двух максимальных сроков жизни (MSL) или четырех минут. Этот период времени является настройкой по умолчанию для TCP/IP для Windows Server 2003 ».

Серверные приложения часто используют опцию сокета SO_REUSEADDR, поэтому их можно быстро перезапустить, но, возможно, в вашей версии Apache нет?

Вы узнаете, если он «работает» через четыре минуты. :)

+0

Извините, я не понимаю, что вы сказали – Tom

+0

@Tom, он все еще сломан? Если это так, то TIME-WAIT не ваша проблема. – sarnold

+0

Sarnold, спасибо. Я изменил номер порта apache form 80 на другой, затем он работает. – Tom

2

После поиска решения в Интернете я видел, как люди обвиняли службы отчетов MS SQL, все службы MS SQL, службу удаленного управления Windows и т. Д. Но у одного сообщения была полезная диагностическая команда, которая позволяла отслеживать прослушивание w3svc.

TMG is Unable to Listen on Port 80 (no IIS was not installed) by Ori Yosefi, MSFT, October 15, 2010

e:\DIR>netsh http show servicestate 

    Snapshot of HTTP service state (Server Session View): 
    ----------------------------------------------------- 

    Server session ID: FF00000320000001 
     [..] 
     URL group ID: FE00000340000001 
       [..] 
       Registered URLs: 
        HTTP://*:80/ 

    Request queues: 
     Request queue name: DefaultAppPool 
      [..] 
      Controller process ID: 2724 
      Process IDs: 
       5412 

я мог видеть услуги под управлением обнаруженного PID с помощью TaskList команды.

e:\DIR>tasklist /svc 
    [..] 
    svchost.exe     2724 W3SVC, WAS 
    [..] 

Я мог бы узнать подробности конфигурации этих служб.

Я не мог остановить их из командной строки, работающей как обычный пользователь.

e:\DIR>net stop w3svc 
    System error 5 has occurred. 

    Access is denied. 


    e:\DIR>net stop was 
    The following services are dependent on the Windows Process Activation Service service. 
    Stopping the Windows Process Activation Service service will also stop these services. 

     World Wide Web Publishing Service 
     Net.Tcp Listener Adapter 
     Net.Pipe Listener Adapter 

    Do you want to continue this operation? (Y/N) [N]: y 
    System error 5 has occurred. 

    Access is denied. 

Тогда я остановился World Wide Web Publishing Service через GUI Services, services.msc. Я также изменил тип запуска для этой службы в Manual. После этого ни один сервис не прослушивал порт TCP 80.

e:\DIR>netstat -ano 
    [..no process listening on TCP port 80..] 
+0

Я должен был использовать «netstat -noa», чтобы найти идентификатор процесса, прослушивающего конкретный TCP-порт. –