在运行 IIS 7 的多宿主 Windows Server 2008 上更改 TeamCity IP 地址和端口号

在运行 IIS 7 的多宿主 Windows Server 2008 上更改 TeamCity IP 地址和端口号

经过整整两天的“研究”(即用头敲打键盘)和对 TeamCity/MSDN/Tomcat 文档以及幻影 IIS 绑定的咒骂,我终于找到了一个非常令人困惑的问题的答案:如何在运行 Windows Server 2008 和 IIS 7 的多宿主服务器上更改 TeamCity 的 IP 地址和端口号(以满足必要用途)?

首先,介绍一下背景。我们的构建服务器运行的是 Windows Server 2008,在一个 NIC 上有两个 IP 地址(192.168.1.30 和 192.168.1.31)。我已将 IIS 配置为将其唯一站点明确绑定到端口 80 上的 192.168.1.30。目前,我认为 192.168.1.31 完全可用,可以用于 TeamCity... 还不完全是。

第一个烦恼:安装 TeamCity 时,它完全忽略了与此服务器关联的多个 IP 地址这一事实,只询问应绑定到哪个端口。对于服务器级软件来说,这相当令人惊讶。

第二个烦恼:TeamCity 默认使用端口 8080(什么??)。由于第一个烦恼,端口选择有些模糊:TeamCity 是否会在两个 IP 地址上绑定到端口 8080?将端口选择更改为 80 会产生警告,提示另一项服务已绑定到端口 80。嗯,IIS 应该只绑定到 192.168.1.30 上的端口 80;192.168.1.31 上不应绑定任何内容。显然,TeamCity 正在与 192.168.1.30 上的 IIS 竞争。

完成 TeamCity 的安装后,选择端口 80 并忽略绑定警告,我打开了“C:\TeamCity\server.xml”。旁注:“C:\TeamCity\”是默认值安装TeamCity 的目录,而“C:\Users\.BuildServer”是默认目录数据目录。无论如何,“server.xml”是配置文件,您可以在其中设置 TeamCity 的 Web 界面的端口和 IP 地址等内容。经过一番研究,我想出了在端口 80 上绑定 IP 地址 192.168.1.31 的配置:

寻找

<Connector
    port="8080"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

或者

<Connector
    port="80"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

取决于您在安装过程中选择的端口。将其更改为(注意:修改IP地址!

<Connector
    port="80"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443"
    address="192.168.1.31" />

应该就这么简单,对吧……对吧?好吧,重新启动 TeamCity 的 Web 服务器(通过 Windows 的服务管理器)在 192.168.1.31 上没有任何效果。呃。

事实证明,尽管 IIS 的唯一站点已明确绑定到 192.168.1.30 的 80 端口,但 IIS 仍然监听全部IP 地址。这当然会导致 TeamCity 的 Web 服务器 (Tomcat) 停止运行,甚至在上线之前就停止了。在从命令行手动启动 Tomcat 以剖析其 stdout 错误并进行更多研究后,我偶然发现了 StackOverflow 上的这个小宝藏:我如何控制 IIS7 使用哪个 IP 地址?

因此,从管理命令行我运行(注意:再次更改 IP 地址!这次更改为您IIS 受约束

netsh http 添加 iplisten ipaddress=192.168.1.30

现在我重新启动 TeamCity 的 Web 服务器,瞧,它工作正常了!!我可以浏览 192.168.1.31无需指定端口号然后 TeamCity 的 Web 界面就出现了。快速的健全性检查显示 IIS 仍然正确绑定到 192.168.1.30。一切正常。

抱歉,这么简单的修复却发了这么长的帖子。我希望这能帮助其他人,因为它肯定能让我免去几个小时的烦恼。


编辑:使用 TeamCity 一段时间后,我注意到与 TeamCity 一起安装的 Build Agent 无法正确识别。为了解决这个问题,我必须将 Build Agent 指向 TeamCity 的新 URL。此配置更改在“C:\TeamCity\buildAgent\conf\buildAgent.properties”中完成。同样,这是 TeamCity 的默认安装路径,可能会有所不同,具体取决于您如何自定义 TeamCity 的安装。

在“buildAgent.properties”中,确保“serverUrl”指向新的 TeamCity URL。就我而言,我将其更新为:

serverUrl=http\://192.168.1.31

进行此更改后,重新启动 TeamCity Web Server 和 TeamCity Build Agent。

答案1

答案是上面原始“问题”的一部分。

相关内容