Depois de dois dias completos de "pesquisa" (leia-se: bater a cabeça no teclado) e xingar a documentação do TeamCity / MSDN / Tomcat, além de ligações fantasmas do IIS, encontrei uma resposta para um problema muito desconcertante: como pode Altero o endereço IP e o número da porta do TeamCity em um servidor com hospedagem múltipla executando o Windows Server 2008 e o IIS 7, que serve a um propósito necessário? .
Primeiro, um pouco de fundo. Nosso servidor de compilação está executando o Windows Server 2008 com dois endereços IP (192.168.1.30 e 192.168.1.31) em uma NIC. Eu configurei o IIS para ligar explicitamente o seu primeiro e único site a 192.168.1.30 na porta 80. Neste ponto, estou pensando que 192.168.1.31 está aberto e pronto para ser usado no TeamCity ... não exatamente.
Primeiro aborrecimento: ao instalar o TeamCity, desconsidera completamente o fato de haver vários endereços IP associados a este servidor, perguntando apenas a qual porta ele deve se ligar. Para software de servidor, isso é bastante surpreendente.
Segundo aborrecimento: O TeamCity assume como padrão a porta 8080 (wha ??). Devido ao primeiro incômodo, a seleção de portas é um tanto ambígua: o TeamCity vinculará à porta 8080 nos dois endereços IP? Alterar a seleção da porta para 80 gera um aviso de que outro serviço já está vinculado à porta 80. Hmm, o IIS só deve estar vinculado à porta 80 em 192.168.1.30; nada deve estar vinculado a 192.168.1.31. Obviamente, o TeamCity está competindo com o IIS em 192.168.1.30.
Terminando a instalação do TeamCity, depois de escolher a porta 80 e ignorar o aviso de ligação, abro "C: \ TeamCity \ server.xml". Nota: "C: \ TeamCity \" é o diretório de instalação padrão do TeamCity, enquanto "C: \ Users \ .BuildServer" é o diretório de dados padrão . De qualquer forma, "server.xml" é o arquivo de configuração onde você pode definir coisas como a porta e o endereço IP da interface da web do TeamCity. Depois de um pouco de pesquisa, criei a configuração para vincular o endereço IP 192.168.1.31 na porta 80:
Procure por
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
ou
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
dependendo da porta que você escolheu durante a instalação. Mude para ( nota: altere o endereço IP! )
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
address="192.168.1.31" />
Deve ser tão fácil quanto isso, certo ... certo? Bem, reiniciar o servidor Web do TeamCity (via Gerenciador de serviços do Windows) não produz nada em 192.168.1.31. Ugh.
Acontece que, embora o único site do IIS tenha sido explicitamente vinculado a 192.168.1.30 na porta 80, o IIS ainda escuta em todos os endereços IP. Isso, é claro, descarta o servidor Web do TeamCity (Tomcat), que pára antes mesmo de ficar online. Depois de iniciar o Tomcat manualmente a partir da linha de comando para dissecar seu erro stdout e ainda mais pesquisas, deparei-me com esta pequena jóia do StackOverflow: Como posso controlar qual endereço IP o IIS7 usa?
Portanto, em uma linha de comando administrativa, eu corro ( note: novamente, altere o endereço IP! Dessa vez, para o endereço IP que você deseja que o IIS seja vinculado )
netsh http: add iplisten ipaddress = 192.168.1.30
Agora, reinicio o servidor Web do TeamCity e pronto, funciona! Posso navegar até 192.168.1.31 sem precisar especificar um número de porta e a interface da web do TeamCity é exibida. Uma verificação rápida de sanidade mostra que o IIS ainda está vinculado corretamente a 192.168.1.30. Tudo está bem.
Desculpe pela postagem longa de uma correção tão simples. Espero que isso ajude outra pessoa, pois com certeza teria me poupado horas de agravamento.
Edit: Depois de usar o TeamCity por um tempo, notei que o Build Agent que foi instalado com o TeamCity não estava sendo reconhecido corretamente. Para corrigir isso, tive que apontar o Build Agent para o novo URL do TeamCity. Essa alteração de configuração é feita em "C: \ TeamCity \ buildAgent \ conf \ buildAgent.properties". Novamente, esse é o caminho para uma instalação padrão do TeamCity e pode ser diferente dependendo de como você personaliza sua instalação do TeamCity.
Dentro de "buildAgent.properties", verifique se "serverUrl" aponta para o novo URL do TeamCity. No meu caso, eu atualizei para:
serverUrl = http \: //192.168.1.31
Após fazer essa alteração, reinicie o TeamCity Web Server e o TeamCity Build Agent.