Altere o endereço IP e o número da porta do TeamCity no Windows Server 2008 multi-homed executando o IIS 7

20

Após dois dias inteiros de "pesquisa" (leia-se: batendo com a cabeça no teclado) e xingando a documentação do TeamCity / MSDN / Tomcat, bem como ligações fantasmas do IIS, descobri uma resposta para um problema muito intrigante : Como posso alterar o endereço IP e o número de porta do TeamCity em um servidor multi-homed executando o Windows Server 2008, bem como o IIS 7, que está servindo a uma finalidade necessária? .

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 vincular explicitamente seu primeiro e único site a 192.168.1.30 na porta 80. Neste ponto, estou pensando que 192.168.1.31 está totalmente aberto e pronto para ser usado para o TeamCity ... não é bem assim.

Primeiro incômodo: ao instalar o TeamCity, ele desconsidera completamente o fato de que há vários endereços IP associados a esse servidor, perguntando apenas para qual porta ele deve ser ligado. Para software de servidor, isso é bastante surpreendente.

Segundo incômodo: o TeamCity usa como padrão a porta 8080 (wha ??). Devido ao primeiro incômodo, a seleção da porta é um pouco ambígua: o TeamCity vai se ligar à porta 8080 em ambos os endereços IP? Alterar a seleção de porta para 80 gera um aviso de que outro serviço já está vinculado à porta 80. Hmm, o IIS só deve ser vinculado à porta 80 em 192.168.1.30; Nada deve ser ligado em 192.168.1.31. Obviamente, o TeamCity está competindo com o IIS em 192.168.1.30.

Finalizando 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 padrão instalação do TeamCity, enquanto "C: \ Users \ .BuildServer" é o diretório padrão data . 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 web do TeamCity. Depois de um pouco de pesquisa eu venho com a configuração para ligar o endereço IP 192.168.1.31 na porta 80:

Procure

<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 assim, certo ... certo? Bem, reiniciar o Web Server do TeamCity (através do Gerenciador de Serviços do Windows) não produz nada no 192.168.1.31. Ugh.

Acontece que, embora o único e único site do IIS tenha sido explicitamente vinculado a 192.168.1.30 na porta 80, o IIS ainda escuta em endereços IP all . Isso, é claro, libera o servidor da Web do TeamCity (Tomcat), que pára antes mesmo de ficar on-line. Depois de iniciar manualmente o Tomcat a partir da linha de comando para dissecar seu erro stdout e ainda mais pesquisas, eu deparei com essa pequena joia do StackOverflow: Como posso controlar qual endereço IP usa o IIS7?

Assim, a partir de uma linha de comando Administrativo eu corro ( note: novamente, mude o endereço IP! Desta vez para o endereço IP que você quer IIS para ser ligado )

netsh http add iplisten ipaddress=192.168.1.30

Agora eu reinicio o servidor Web do TeamCity e voila, funciona !! Eu posso navegar para 192.168.1.31 sem ter que especificar um número de porta e a interface web do TeamCity é exibida. Uma rápida verificação de integridade mostra que o IIS ainda está corretamente vinculado a 192.168.1.30. Tudo está bem.

Desculpe pelo longo post para uma correção tão simples. Espero que isso ajude alguém, pois com certeza me salvaria horas de agravamento.

Editar: Depois de usar o TeamCity por um tempo, notei que o Build Agent que tinha sido instalado com o TeamCity não estava sendo reconhecido corretamente. Para corrigir isso, precisei 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, este é 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, atualizei para:

serverUrl=http\://192.168.1.31

Depois de fazer essa alteração, reinicie o TeamCity Web Server e o TeamCity Build Agent.

    
por Brad B. 24.08.2009 / 20:36

1 resposta

10

A resposta faz parte da "pergunta" original acima.

    
por 24.08.2009 / 20:38