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


20

经过两天的“研究”(阅读:用键盘敲打我的头)并诅咒TeamCity / MSDN / Tomcat文档以及幻像IIS绑定后,我想出了一个非常困惑的问题的答案:如何解决我在运行Windows Server 2008以及IIS 7的多宿主服务器上更改TeamCity的IP地址和端口号,IIS 7是否有必要?

首先,有一点背景。我们的构建服务器运行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(wha ??)。由于最初的烦恼,端口选择有些模棱两可:TeamCity是否将绑定到两个IP地址上的端口8080?将端口选择更改为80会产生一个警告,即另一个服务已绑定到端口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的唯一站点在端口80上已明确绑定到192.168.1.30,IIS仍会侦听所有 IP地址。当然,这使TeamCity的Web服务器(Tomcat)停止运行,该服务器甚至在上线之前就停止了运行。从命令行手动启动Tomcat剖析其stdout错误并进行了更多研究之后,我碰巧遇到了StackOverflow上的这个小宝贝:如何控制IIS7使用的IP地址?

所以,从管理的命令行我运行(注:再次,你这时候更改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
说真的,这太棒了。这正是我和我们的一位管理员最终自己弄清楚的结果(糟透了)。感谢您发表出色的文章。
瑞安·蒙哥马利2009年

5
您可能想要分解问题和答案……
Ryan Montgomery

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.