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

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

首先,有一点背景。 我们的构build服务器在一个网卡上运行带有两个IP地址(192.168.1.30和192.168.1.31)的Windows Server 2008。 我已经configurationIIS显式绑定其唯一的站点到端口80上的192.168.1.30。在这一点上,我认为192.168.1.31是开放的,准备用于TeamCity …不完全。

首先烦恼:安装TeamCity时,完全忽略了这个服务器有多个IP地址,只询问它应该绑定哪个端口。 对于服务器级的软件,这是相当令人惊讶的。

第二个烦恼:TeamCity默认为端口8080(wha?)。 由于第一个烦恼,端口select有些模棱两可:TeamCity将在两个IP地址上绑定到端口8080? 将端口select更改为80会产生另一个服务已经绑定到端口80的警告。嗯,IIS应该只绑定到192.168.1.30上的端口80; 192.168.1.31上不应该绑定任何东西。 显然,TeamCity正在与192.168.1.30上的IIS竞争。

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

寻找任一

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

要么

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

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

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

应该那么简单,对…对吗? 那么,重新启动TeamCity的Web服务器(通过Windows的服务pipe理器)在192.168.1.31上不会产生任何东西。 啊。

事实certificate,即使IIS的唯一站点已经明确地绑定到端口80上的192.168.1.30,IIS仍然监听所有的 IP地址。 当然,这引发了TeamCity的Web Server(Tomcat),它甚至在上线之前就停止了。 从命令行手动启动Tomcat来剖析它的stdout错误和更多的研究,我发现这个从StackOverflow的小gem: 我怎样才能控制IIS7使用哪个IP地址?

所以,从一个pipe理命令行我运行( 注意:再次,更改IP地址!这一次的IP地址,你希望 IIS被绑定

 netsh http add iplisten ipaddress = 192.168.1.30

现在我重新启动TeamCity的Web服务器,瞧,它的工作原理! 我可以浏览到192.168.1.31 而不必指定一个端口号和TeamCity的Web界面出现。 快速完整性检查显示IIS仍然正确绑定到192.168.1.30。 一切都很好。

对不起,对于这样一个简单的修复长篇文章。 我希望这可以帮助别人,因为它肯定会救我几个小时的恶化。


编辑:使用TeamCity一段时间后,我注意到与TeamCity一起安装的生成代理没有被正确识别。 为了解决这个问题,我必须将构build代理指向TeamCity的新URL。 此configuration更改在“C:\ TeamCity \ buildAgent \ conf \ buildAgent.properties”中完成。 再次,这是默认安装TeamCity的path,可能会有所不同,具体取决于您如何自定义您的TeamCity安装。

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

的serverUrl = HTTP \://192.168.1.31

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

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