![VisualSVN Server 的 apache 无法通过 TCP 端口启动](https://linux22.com/image/494953/VisualSVN%20Server%20%E7%9A%84%20apache%20%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%20TCP%20%E7%AB%AF%E5%8F%A3%E5%90%AF%E5%8A%A8.png)
由于某种原因,在我的 Windows XP 工作站上将 SSH Tectia 客户端从 v6.0 升级到 6.1 后,VisualSVN 2.0.7 无法在重启后启动其 Apache 服务。
Event Type: Information
Event Source: VisualSVN Server 2.0
Event Category: Apache
Event ID: 1000
Date: 9/30/2009
Time: 3:37:48 PM
User: N/A
Computer: 4-J25A
Description:
Disabled use of AcceptEx() WinSock2 API
Event Type: Error
Event Source: VisualSVN Server 2.0
Event Category: Apache
Event ID: 1002
Date: 9/30/2009
Time: 3:37:48 PM
User: N/A
Computer: 4-J25A
Description:
alloc_listener: failed to get a socket for (null)
(OS 10106) The requested service provider could not be loaded or initialized.
Event Type: Error
Event Source: VisualSVN Server 2.0
Event Category: Apache
Event ID: 1000
Date: 9/30/2009
Time: 3:37:48 PM
User: N/A
Computer: 4-J25A
Description:
Syntax error on line 25 of C:/Program Files/VisualSVN Server/conf/httpd.conf:
Event Type: Error
Event Source: VisualSVN Server 2.0
Event Category: Apache
Event ID: 1000
Date: 9/30/2009
Time: 3:37:48 PM
User: N/A
Computer: 4-J25A
Description:
Listen setup failed
如果我直接启动 VisualSVNServer.exe apache 进程,它可以工作并接受请求,但 VisualSVN 管理控制台仍然认为该服务已停止。我对 Windows 版本的 Apache 不够熟悉,无法理解是什么阻止它保护其指定的 8443 端口(或者可以是任何其他端口号)?
答案1
我尝试修复并重新安装 VIsualSVN Server,但无济于事。只有在卸载 SSH Tectia Client 后,VisualSVN Server 的 apache 才可以再次正常启动。之后安装 SSH Tectia Client 似乎不会再出现问题。希望一直如此。
答案2
我解决了 VisualSVN Server 安装问题。我发现了许多错误,包括上面的错误。我运行 VisualSVN Server 很长时间了,但最近更新 Windows 并重新启动后,我的服务器没有恢复。支持人员最终将其恢复在线,但 SVN 服务器没有运行,我无法启动它,所以我想我只需升级它并让安装修复任何问题。我想可能是硬盘损坏了,这样就可以修复了。
我最终了解到,服务器上的第二个 IP 地址不再配置。之前我将 SVN/Apache 服务器配置为使用不再存在的特定 IP 地址。
[HKEY_LOCAL_MACHINE\SOFTWARE\VisualSVN\VisualSVN Server]
该注册表项正是指定缺失 IP 地址的注册表项,并且可能导致我的所有问题。一旦我将该 IP 地址添加为附加 IP 地址,我就能成功运行安装并从我的 SVN 客户端访问服务器。
此注册表项具有 ServerBinding 和 ServerName 的值,必须使用这些值才能启动 Apache。不幸的是,VisualSVN Server 安装过程不允许我查看或更改 IP 地址或服务器名称。这可以省去很多麻烦,并揭示我遇到麻烦的真正原因。
至于在具有 2 个 IP 地址的同一台服务器上管理 IIS 和 Apache,您需要告诉 IIS 不要使用第二个 IP 地址。以下命令可实现此目的。
netsh http delete iplisten ipaddress=333.333.333.333
显然,这是一个假的 IP 地址。将其替换为您的第二个 IP 地址。下一个命令将显示 IIS 被允许使用的 IP 地址。
netsh http show iplisten
您可能需要重新启动 IIS 或重新启动计算机才能成功应用这些更改。Windows 在启动周期的早期分配列出的 IP 地址的控制权,因此您需要确保它们未被使用,以便 Apache 可以使用它们。
如果再次遇到问题,请仔细检查服务器是否配置了第二个 IP 地址。我遇到的所有问题都只是由于缺少 IP 配置。