成功安装但无法在我的Windows 7系统上启动apache 2.4

时间:2013-02-22 03:00:58

标签: apache service windows-7 install

我正在尝试在Windows 7系统上安装并运行apache 2.4 我去了apache 2.4 bin目录并运行以下命令: 注意:我以管理员身份打开了cmd窗口。 C:\ Apache24 \ bin> httpd.exe -k install

其输出如下:

Installing the Apache2.4 service
The Apache2.4 service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service can be started.
(OS 10013)An attempt was made to access a socket in a way forbidden by its acces
s permissions.  : AH00072: make_sock: could not bind to address [::]:80
(OS 10013)An attempt was made to access a socket in a way forbidden by its acces
s permissions.  : AH00072: make_sock: could not bind to address 0.0.0.0:80
AH00451: no listening sockets available, shutting down
AH00015: Unable to open log

因此它将apache 2.4安装为服务但无法启动。似乎正在使用localhost端口80。这是“[::]:80”的意思吗?

然后我停止了我运行的apache 2.0服务和mysql服务,希望停止其中一个可以释放localhost端口80。

我还运行netstat -o来查看是否正在使用端口80。事实并非如此。

但是,我后来发现一个进程正在使用上面的socket,这是一个正在侦听上面的socket的进程

 TCP    [::]:80                User-PC:0              LISTENING       4

然后我运行了任务列表并发现系统正在使用pid 4. 4位于pid列

之下
System                           4 Services                   0        544 K

最后,从失败的尝试启动服务 我收到了一个在Windows系统事件中记录的错误。

Log Name:      System
Source:        Service Control Manager
Date:          2/21/2013 1:58:03 PM
Event ID:      7024
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      User-PC
Description:
The Apache2.4 service terminated with service-specific error Incorrect function.

Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" />
    <EventID Qualifiers="49152">7024</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8080000000000000</Keywords>
    <TimeCreated SystemTime="2013-02-21T18:58:03.723988900Z" />
    <EventRecordID>87756</EventRecordID>
    <Correlation />
    <Execution ProcessID="560" ThreadID="7596" />
    <Channel>System</Channel>
    <Computer>User-PC</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="param1">Apache2.4</Data>
    <Data Name="param2">%%1</Data>
  </EventData>
</Event>

尝试启动时的错误说由于缺少访问权限,make-sock无法绑定到我看起来像localhost端口80的套接字。例如,

  (OS 10013)An attempt was made to access a socket in a way forbidden by its acces
    s permissions.  : AH00072: make_sock: could not bind to address [::]:80

谁能说出我做错了什么?

11 个答案:

答案 0 :(得分:19)

很抱歉这个问题很严重。为了解决我的问题,我刚刚告诉apache 2.4来监听httpd.conf中的另一个端口。由于系统正在使用正在侦听端口80的pid 4,我不想再进一步探讨这一点。

我将以下内容放入httpd.conf中。 听127.0.0.1:122

答案 1 :(得分:16)

最可能的罪魁祸首是Microsoft Internet Information Server。您可以从Windows 7 / Vista上的命令行停止服务:

net stop is / y

或XP:

net stop iisadmin / y

读这个 http://www.sitepoint.com/unblock-port-80-on-windows-run-apache/

答案 2 :(得分:7)

将win7升级到win10之后我也遇到了同样的问题。 然后我检查services.msc并找到&#34; 万维网发布服务&#34;默认情况下自动运行。 所以我禁用了它,并再次运行Apache服务。

答案 3 :(得分:5)

Port 80 maybe used by Microsoft HTTPAPI

Try to stop the following service:
  Web Deployment Agent Service
  SQL Server Reporting Service
  SQL Server VSS Writer

答案 4 :(得分:2)

我最终解决了这个问题,这是因为某些系统如skype和系统进程占用了端口80,你可以使用netstat -ao查看端口80

请找到以下步骤

  1. 安装Apache HTTP后,使用cmd

  2. 转到bin文件夹
  3. 使用httpd.exe -k install将其作为服务安装,即使您看到错误也没关系

  4. 现在确保根据您的操作系统安装服务(即使没有启动)

  5. 重新启动系统,然后你会发现Apache服务将是第一个采用80端口的服务,

  6. 祝贺问题得到解决。

答案 5 :(得分:1)

如果您使用的是Windows操作系统并且认为Skype不是嫌疑人,那么您可能需要检查任务管理器并检查&#34;显示所有用户的进程&#34;并确保httpd.exe没有条目。否则,结束其过程。这解决了我的问题。

答案 6 :(得分:1)

所以,这就是我做两个(或更多)帖子的原因。

启动服务时遇到同样的问题(无法打开日志)。

我认为这是因为我试图在一个VeraCrypt encripted容器中设置htdocs,这是荒谬的,因为我已经安装了这样的包含,并且我使用了一个不会影响路径的连接。

我读到原因可能是低ram:经过一些测试后我得出了下一个结论。

Windows不会向虚拟RAM发送页面以释放足够的内存(如果它是一项服务),对于它正在执行的应用程序,我有超过200GiB的页面文件可以在4GiB 64位Windows 10中用作虚拟内存。

我的解决方案:

  1. 运行免费的ram(我的测试中为512MiB)
  2. 启动服务后立即开始,没有错误
  3. 真正的原因:

    • 我使用的是使用1/2物理自由ram(1.5GiB)的虚拟机

    希望这有助于他人。

答案 7 :(得分:0)

我也遇到了同样的问题,然后我尝试在每次更改后重新启动系统,它对我有用 - 1)使用以下命令在cmd提示符(运行管理员)中卸载Apache2.4: httpd -k uninstall 2)重启系统。 3)使用以下命令打开cmd提示符(运行管理员): httpd -k install。 4)然后httpd -k install。

希望你觉得有用。

答案 8 :(得分:0)

您可以解决

sudo nano /etc/apache2/ports.conf
  

并更改为收听8080

答案 9 :(得分:0)

就我而言,这是由于Apache正在监听的IP地址所致。以前我已将其设置为192.168.10.6,而最近Apache服务未运行。我注意到,由于我的笔记本电脑的wifi最近更改了,新IP也有所不同。将wifi IP固定为笔记本电脑的先前IP后,Apache服务再次运行,没有任何错误。

此外,如果您不想更改wifi IP,请删除/注释httpd.conf文件中的硬编码IP以解决冲突。

答案 10 :(得分:-6)

这可能是因为物理RAM不足。

检查文档中的最低系统要求,并尽可能尝试关闭不必要的程序。