Modifica l'indirizzo IP e il numero di porta di TeamCity su Windows Server 2008 multi-homed con IIS 7


20

Dopo due giorni interi di "ricerca" (leggi: sbattere la testa contro la mia tastiera) e imprecare contro la documentazione di TeamCity / MSDN / Tomcat e i collegamenti fantasma IIS, ho trovato una risposta a un problema molto imbarazzante: come posso Cambio l'indirizzo IP e il numero di porta di TeamCity su un server multihome con Windows Server 2008 e IIS 7 che serve allo scopo necessario? .

Innanzitutto, un po 'di background. Il nostro server di build esegue Windows Server 2008 con due indirizzi IP (192.168.1.30 e 192.168.1.31) su una scheda NIC. Ho configurato IIS per associare esplicitamente il suo unico sito a 192.168.1.30 sulla porta 80. A questo punto sto pensando che 192.168.1.31 è completamente aperto e pronto per essere utilizzato per TeamCity ... non del tutto.

Primo fastidio: durante l'installazione di TeamCity, ignora completamente il fatto che ci sono più indirizzi IP associati a questo server che chiedono solo a quale porta deve essere associato. Per i software di livello server, questo è piuttosto sorprendente.

Secondo fastidio: TeamCity si imposta automaticamente sulla porta 8080 (wha ??). A causa del primo fastidio, la selezione della porta è alquanto ambigua: TeamCity si legherà alla porta 8080 su entrambi gli indirizzi IP? La modifica della selezione della porta su 80 genera un avviso che un altro servizio è già associato alla porta 80. Hmm, IIS dovrebbe essere associato alla porta 80 solo su 192.168.1.30; nulla dovrebbe essere vincolato a 192.168.1.31. Ovviamente TeamCity è in competizione con IIS il 192.168.1.30.

Terminata l'installazione di TeamCity, dopo aver scelto la porta 80 e ignorato l'avviso di associazione, apro "C: \ TeamCity \ server.xml". Sidenote: "C: \ TeamCity \" è la directory di installazione predefinita per TeamCity mentre "C: \ Users \ .BuildServer" è la directory di dati predefinita . Comunque, "server.xml" è il file di configurazione in cui è possibile impostare cose come la porta e l'indirizzo IP dell'interfaccia web di TeamCity. Dopo un po 'di ricerca mi viene in mente la configurazione per l'associazione dell'indirizzo IP 192.168.1.31 sulla porta 80:

Cerca uno dei due

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

o

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

a seconda della porta scelta durante l'installazione. Cambia in ( nota: cambia l'indirizzo IP! )

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

Dovrebbe essere facile come quello, giusto ... giusto? Bene, il riavvio del server Web di TeamCity (tramite Gestione servizi di Windows) non produce nulla su 192.168.1.31. Ugh.

Si scopre che anche se l'unico e unico sito di IIS è stato esplicitamente associato a 192.168.1.30 sulla porta 80, IIS continua ad ascoltare su tutti gli indirizzi IP. Questo, ovviamente, elimina il Web Server di TeamCity (Tomcat) che si interrompe prima ancora di essere online. Dopo aver avviato manualmente Tomcat dalla riga di comando per analizzare il suo errore stdout e ancora più ricerche, mi capita questa piccola gemma da StackOverflow: come posso controllare quale indirizzo IP IIS7 utilizza?

Quindi, da una riga di comando amministrativa che eseguo ( nota: di nuovo, cambia l'indirizzo IP! Questa volta nell'indirizzo IP che vuoi che IIS sia associato )

netsh http add iplisten ipaddress = 192.168.1.30

Ora riavvio il server Web di TeamCity e voilà, funziona !! Posso passare a 192.168.1.31 senza dover specificare un numero di porta e viene visualizzata l'interfaccia Web di TeamCity. Un rapido controllo di integrità mostra che IIS è ancora correttamente associato a 192.168.1.30. Tutto bene.

Ci scusiamo per il lungo post per una soluzione così semplice. Spero che questo aiuti qualcun altro perché sicuramente mi avrebbe risparmiato ore di aggravamento.


Modifica: dopo aver usato TeamCity per un po ', ho notato che l'agente build che era stato installato con TeamCity non veniva riconosciuto correttamente. Per risolvere questo problema, ho dovuto indirizzare Build Agent al nuovo URL di TeamCity. Questa modifica alla configurazione viene eseguita in "C: \ TeamCity \ buildAgent \ conf \ buildAgent.properties". Ancora una volta, questo è il percorso per un'installazione predefinita di TeamCity e potrebbe essere diverso a seconda di come personalizzare l'installazione di TeamCity.

All'interno di "buildAgent.properties" assicurati che "serverUrl" faccia riferimento al nuovo URL di TeamCity. Nel mio caso, l'ho aggiornato per:

serverURL = http \: //192.168.1.31

Dopo aver apportato questa modifica, riavviare TeamCity Web Server e TeamCity Build Agent.


1
Seriamente, è fantastico. Questo è esattamente ciò che io e uno dei nostri amministratori alla fine abbiamo capito da soli (che ha fatto schifo). Grazie per aver pubblicato un ottimo commento.
Ryan Montgomery,

5
Potresti voler rompere la domanda e la risposta però ...
Ryan Montgomery,

Risposte:


10

La risposta fa parte della "domanda" originale sopra.


2
+1 per avermi salvato un paio d'ore!
Tim Long,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.