Cambie la dirección IP y el número de puerto de TeamCity en Windows Server 2008 con múltiples hosts que ejecute IIS 7


20

Después de dos días completos de "investigación" (léase: golpear mi cabeza contra mi teclado) y maldecir la documentación de TeamCity / MSDN / Tomcat, así como los enlaces fantasmas de IIS, he encontrado una respuesta a un problema muy desconcertante: ¿Cómo puede ¿Cambio la dirección IP y el número de puerto de TeamCity en un servidor con múltiples hosts que ejecuta Windows Server 2008, así como IIS 7, que cumple un propósito necesario? .

Primero, un poco de historia. Nuestro servidor de compilación ejecuta Windows Server 2008 con dos direcciones IP (192.168.1.30 y 192.168.1.31) en una NIC. He configurado IIS para vincular explícitamente su único sitio a 192.168.1.30 en el puerto 80. En este punto, estoy pensando que 192.168.1.31 está completamente abierto y listo para ser utilizado para TeamCity ... no del todo.

Primera molestia: al instalar TeamCity, se ignora por completo el hecho de que hay varias direcciones IP asociadas con este servidor que solo preguntan a qué puerto debe unirse. Para el software de nivel de servidor, esto es bastante sorprendente.

Segunda molestia: TeamCity se predetermina al puerto 8080 (¿qué?). Debido a la primera molestia, la selección del puerto es algo ambigua: ¿TeamCity se unirá al puerto 8080 en ambas direcciones IP? Cambiar la selección del puerto a 80 produce una advertencia de que otro servicio ya está vinculado al puerto 80. Hmm, IIS solo debería estar vinculado al puerto 80 en 192.168.1.30; nada debe estar vinculado a 192.168.1.31. Obviamente TeamCity está compitiendo con IIS en 192.168.1.30.

Al finalizar la instalación de TeamCity, después de elegir el puerto 80 e ignorar la advertencia de enlace, abro "C: \ TeamCity \ server.xml". Nota al margen: "C: \ TeamCity \" es el directorio de instalación predeterminado para TeamCity, mientras que "C: \ Users \ .BuildServer" es el directorio de datos predeterminado . De todos modos, "server.xml" es el archivo de configuración donde puede configurar cosas como el puerto y la dirección IP de la interfaz web de TeamCity. Después de un poco de investigación, se me ocurrió la configuración para vincular la dirección IP 192.168.1.31 en el puerto 80:

Busque cualquiera

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

o

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

dependiendo del puerto que elija durante la instalación. Cambie a ( nota: ¡cambie la dirección IP! )

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

Debería ser tan fácil como eso, ¿verdad ... verdad? Bueno, reiniciar el servidor web de TeamCity (a través del Administrador de servicios de Windows) no produce nada en 192.168.1.31. Ugh

Resulta que, aunque el único sitio de IIS se ha vinculado explícitamente a 192.168.1.30 en el puerto 80, IIS todavía escucha en todas las direcciones IP. Esto, por supuesto, arroja el servidor web de TeamCity (Tomcat) que se detiene incluso antes de conectarse. Después de iniciar manualmente Tomcat desde la línea de comandos para diseccionar su error estándar e incluso más investigación, me encuentro con esta pequeña joya de StackOverflow: ¿Cómo puedo controlar qué dirección IP usa IIS7?

Entonces, desde una línea de comando administrativo que ejecuto ( nota: ¡otra vez, cambie la dirección IP! Esta vez a la dirección IP que desea que IIS esté vinculada )

netsh http add iplisten ipaddress = 192.168.1.30

Ahora reinicio el servidor web de TeamCity y listo, ¡funciona! Puedo navegar a 192.168.1.31 sin tener que especificar un número de puerto y aparece la interfaz web de TeamCity. Una comprobación rápida de la cordura muestra que IIS todavía está correctamente vinculado a 192.168.1.30. Todo está bien.

Perdón por la larga publicación de una solución tan simple. Espero que esto ayude a alguien más, ya que seguramente me habría ahorrado horas de molestia.


Editar: Después de usar TeamCity durante un tiempo, noté que el Agente de compilación que se había instalado con TeamCity no se reconocía correctamente. Para solucionar esto, tuve que señalar el Build Agent a la nueva URL para TeamCity. Este cambio de configuración se realiza en "C: \ TeamCity \ buildAgent \ conf \ buildAgent.properties". Nuevamente, esta es la ruta para una instalación predeterminada de TeamCity y puede ser diferente dependiendo de cómo personalice su instalación de TeamCity.

Dentro de "buildAgent.properties" asegúrese de que "serverUrl" apunte a la nueva URL de TeamCity. En mi caso, lo actualicé a:

serverUrl = http \: //192.168.1.31

Después de realizar este cambio, reinicie TeamCity Web Server y TeamCity Build Agent.


1
En serio, esto es asombroso. Esto es exactamente lo que yo y uno de nuestros administradores finalmente descubrimos por nuestra cuenta (lo que apestaba). Gracias por publicar una excelente reseña.
Ryan Montgomery

55
Es posible que desee para romper la pregunta y la respuesta, aunque ...
Ryan Montgomery

Respuestas:


10

La respuesta es parte de la "pregunta" original anterior.


2
¡+1 por salvarme unas horas!
Tim Long
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.