无法在 Windows Server 2008 R2 上启动 Apache

Posted

技术标签:

【中文标题】无法在 Windows Server 2008 R2 上启动 Apache【英文标题】:Can't start Apache on Windows Server 2008 R2 【发布时间】:2011-06-15 18:05:46 【问题描述】:

尝试启动 apache 时出现以下错误:

(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

如何解决?

【问题讨论】:

第一,属于ServerFault 二、你有没有安装IIS功能? 【参考方案1】:

在网上搜索解决方案后,我看到有人指责 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

我可以使用 tasklist 命令查看在检测到的 PID 下运行的服务。

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

我可以查询这些服务的配置细节。

    e:\DIR>sc qc w3svc
    [SC] QueryServiceConfig SUCCESS

    SERVICE_NAME: w3svc
            TYPE               : 20  WIN32_SHARE_PROCESS
            START_TYPE         : 2   AUTO_START
            ERROR_CONTROL      : 1   NORMAL
            BINARY_PATH_NAME   : C:\Windows\system32\svchost.exe -k iissvcs
            LOAD_ORDER_GROUP   :
            TAG                : 0
            DISPLAY_NAME       : World Wide Web Publishing Service
            DEPENDENCIES       : WAS
                               : HTTP
            SERVICE_START_NAME : LocalSystem


    e:\DIR>sc qc was
    [SC] QueryServiceConfig SUCCESS

    SERVICE_NAME: was
            TYPE               : 20  WIN32_SHARE_PROCESS
            START_TYPE         : 3   DEMAND_START
            ERROR_CONTROL      : 1   NORMAL
            BINARY_PATH_NAME   : C:\Windows\system32\svchost.exe -k iissvcs
            LOAD_ORDER_GROUP   :
            TAG                : 0
            DISPLAY_NAME       : Windows Process Activation Service
            DEPENDENCIES       : RPCSS
            SERVICE_START_NAME : LocalSystem

我无法阻止他们从命令行以普通用户身份运行。

    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.

然后我通过服务 GUI services.msc 停止了万维网发布服务。我还将此服务的启动类型更改为手动。之后没有服务监听 TCP 80 端口。

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

【讨论】:

我应该使用“netstat -noa”来查找监听特定 TCP 端口的进程的 ID。【参考方案2】:

也许您已经达到 TCP 时间等待状态? http://msdn.microsoft.com/en-us/library/ms819739.aspx

“TIME-WAIT 确保经过足够的时间,以确保任何可能被错误路由或延迟的 TCP 段不会意外传送到具有相同连接设置的新的、不相关的应用程序。RFC 793:传输控制协议 DARPA Internet 程序协议规范将套接字对不应重复使用的时间长度指定为两个最大段生命周期 (MSL),即四分钟。此时间段是 Windows Server 2003 TCP/IP 的默认设置。"

服务器应用程序通常使用SO_REUSEADDR 套接字选项,以便可以快速重新启动它们,但也许您的 Apache 版本没有?

四分钟后您就会知道它是否“有效”。 :)

【讨论】:

对不起,我不明白你说什么 @Tom,它还坏了吗?如果是,那么 TIME-WAIT 不是您的问题。 萨诺德,谢谢。我把apache form 80的端口号改成另一个,就可以了。

以上是关于无法在 Windows Server 2008 R2 上启动 Apache的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Windows Server 2008 R2 上启动 Apache

Windows Server 2008无法远程连接

我无法在 Windows Server 2008 R2 上安装 Lync 2010

无法在 Windows Server 2008 上运行 Visual Studio 2012 远程调试器

用windows loader激活hyper-v虚拟机下windows server 2008 R2 重启 黑屏 无法进入系统

从 Windows server 2000 移动到 2008 现在经典 ASP 目录查询无法正常工作