Alterar o endereço IP e o número da porta do TeamCity no Windows Server 2008 com várias residências executando o IIS 7

20

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.

Brad B.
fonte
11
Sério, isso é incrível. Isso é exatamente o que eu e um de nossos administradores acabamos descobrindo por conta própria (o que foi péssimo). Obrigado por postar uma excelente redação.
Ryan Montgomery
5
Você pode querer acabar com a pergunta ea resposta embora ...
Ryan Montgomery

Respostas:

10

A resposta faz parte da "pergunta" original acima.

Brad B.
fonte
2
+1 por me poupar algumas horas!
22630 Tim Tim