2

我想在 Windows 机器上安装两个不同的 apache2.2 服务。我已经在端口 80 和 443 上安装并运行了一个。我复制了服务器安装目录并将其粘贴到其他地方。我进入 httpd.conf 并将其从 Listen 80 更改为 Listen 8000。我还将 Listen 443 更改为 Listen 8001。

我可以将它作为服务安装,但它说httpd.conf.

当我尝试启动服务时,它说:

make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down

配置文件中没有说要监听端口 80。

什么可能导致这种情况?

编辑

我发现如果我更改了我复制的原始 Apache 安装中的配置文件,它会更改错误消息。

例如,我更改了原始配置文件以侦听未使用的端口,并且当我尝试启动新的 Apache 服务时,错误消息会消失。但是,在任务管理器中,它没有将服务显示为正在运行,而是显示为STOPPED.

我卸载了该服务并使用标志重新安装它-f以指向正确的配置文件,并且没有任何改变。似乎必须有内部指针或在我复制它时保留的东西?

我还尝试从.msi安装程序安装 Apache,但它不会安装,因为我已经安装了 apache。

第二次编辑

希望我能早点看到这个。根据Using Apache HTTP Server on Microsoft Windows我可能需要从源代码构建 Apache。

请注意,您不能使用二进制安装程序在同一台计算机上安装两个版本的 Apache 2.3。但是,您可以在同一台计算机上安装 1.3 系列版本和 2.3 系列版本而不会出现问题。如果您需要在同一台计算机上安装两个不同的 2.3 版本,则必须从源代码编译和安装 Apache。

我从来没有做过这样的事情,有人可以更清楚地解释一下吗?

4

2 回答 2

5

解决方案是进入原始 Apache 安装目录并运行:

C:\original-apache-install\bin> httpd -k install -n "new service name" -f "new/config/file/location"

只是复制安装并粘贴到其他地方就可以保持与原始配置文件的联系,并没有让我改变它所指向的内容。当我在新的安装目录中运行上述命令时,它不起作用。例子:

C:\new-pasted-apache\bin> httpd -k install -n "new service name" -f "new/config/file/location"
于 2012-05-02T15:17:08.373 回答
0

通过使用已经提到的命令分别安装这两个服务,我成功安装了两个不同的 2.4.x 版本的 apache:

C:\Apache2.4.23> httpd -k install -n "Apache2.4.23" -f "C:/Apache2.4.23/conf/httpd.conf"

C:\Apache2.4.12\bin> httpd -k install -n "Apache2.4.12" -f "C:/Apache2.4.12/conf/httpd.conf"

当我在 Windows 的“服务”界面中检查这两个服务时,我注意到秒服务与第一个安装的服务具有相同的可执行路径。我通过 regedit 编辑服务解决了这个问题(因为 sc 命令不接受附加到可执行路径的参数“-k runservice”):

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

请参阅:https ://superuser.com/questions/222238/how-to-change-path-to-executable-for-a-windows-service/252850#252850

于 2016-12-14T07:54:39.903 回答