Ändern Sie die TeamCity-IP-Adresse und -Portnummer unter Windows Server 2008 mit mehreren Standorten und IIS 7


20

Nach zwei vollen Tagen "Recherche" (Lesen: Kopf gegen die Tastatur schlagen) und Fluchen in der TeamCity / MSDN / Tomcat-Dokumentation sowie bei Phantom-IIS-Bindungen habe ich eine Antwort auf ein sehr verwirrendes Problem gefunden: Wie kann Ich ändere die IP-Adresse und die Portnummer von TeamCity auf einem mehrfach vernetzten Server unter Windows Server 2008 sowie auf IIS 7, das einem bestimmten Zweck dient. .

Zunächst ein bisschen Hintergrund. Auf unserem Build-Server wird Windows Server 2008 mit zwei IP-Adressen (192.168.1.30 und 192.168.1.31) auf einer Netzwerkkarte ausgeführt. Ich habe IIS so konfiguriert, dass seine einzige Site explizit an 192.168.1.30 auf Port 80 gebunden wird. An dieser Stelle denke ich, dass 192.168.1.31 weit offen ist und für TeamCity verwendet werden kann ... nicht ganz.

Erster Ärger: Bei der Installation von TeamCity wird die Tatsache, dass mehrere IP-Adressen mit diesem Server verknüpft sind und nur gefragt wird, an welchen Port er gebunden werden soll, vollständig ignoriert. Für Server-Software ist dies ziemlich überraschend.

Zweiter Ärger: TeamCity verwendet standardmäßig Port 8080 (was ??). Aufgrund des ersten Ärgers ist die Portauswahl etwas mehrdeutig: Wird TeamCity auf beiden IP-Adressen an Port 8080 gebunden? Wenn Sie die Portauswahl in 80 ändern, wird eine Warnung ausgegeben, dass bereits ein anderer Dienst an Port 80 gebunden ist. Hmm, IIS sollte nur an Port 80 unter 192.168.1.30 gebunden sein. Nichts sollte an 192.168.1.31 gebunden sein. Offensichtlich konkurriert TeamCity mit IIS am 192.168.1.30.

Nach Abschluss der TeamCity-Installation öffne ich nach Auswahl von Port 80 und Ignorieren der Bindungswarnung "C: \ TeamCity \ server.xml". Nebenbei bemerkt: „C: \ Teamcity \“ ist das Standardinstallationsverzeichnis für Teamcity , während „C: \ Users \ .BuildServer“ ist die Standardeinstellung Datenverzeichnis. Wie auch immer, "server.xml" ist die Konfigurationsdatei, in der Sie beispielsweise den Port und die IP-Adresse der TeamCity-Weboberfläche festlegen können. Nach ein wenig Recherche habe ich die Konfiguration für die Bindung der IP-Adresse 192.168.1.31 an Port 80 gefunden:

Suchen Sie nach

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

oder

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

Abhängig von dem Port, den Sie bei der Installation ausgewählt haben. Ändern Sie entweder in ( Hinweis: Ändern Sie die IP-Adresse! )

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

Sollte so einfach sein, richtig ... richtig? Nun, ein Neustart des TeamCity-Webservers (über den Windows-Dienst-Manager) liefert unter 192.168.1.31 nichts. Pfui.

Es stellt sich heraus, dass IIS weiterhin alle IP-Adressen überwacht, obwohl die einzige Site von IIS explizit an 192.168.1.30 an Port 80 gebunden wurde . Dies führt natürlich dazu, dass der TeamCity-Webserver (Tomcat) angehalten wird, bevor er überhaupt online geht. Nachdem ich Tomcat manuell von der Befehlszeile aus gestartet habe , um seinen Standardfehler und noch mehr Nachforschungen anzustellen, stoße ich auf dieses kleine Juwel von StackOverflow: Wie kann ich steuern, welche IP-Adresse IIS7 verwendet?

Von einer administrativen Befehlszeile aus, die ich ausführe ( Hinweis: Ändern Sie die IP-Adresse erneut! Diesmal in die IP-Adresse, an die IIS gebunden werden soll ).

netsh http add iplisten ipaddress = 192.168.1.30

Jetzt starte ich TeamCitys Webserver neu und voila, es funktioniert !! Ich kann zu 192.168.1.31 navigieren, ohne eine Portnummer angeben zu müssen, und das Webinterface von TeamCity wird angezeigt. Eine schnelle Überprüfung der Integrität zeigt, dass IIS immer noch korrekt an 192.168.1.30 gebunden ist. Alles ist gut.

Entschuldigung für den langen Beitrag für eine so einfache Lösung. Ich hoffe, dass dies jemand anderem hilft, da es mir sicher Stunden der Erschwerung erspart hätte.


Bearbeiten: Nachdem ich TeamCity für eine Weile verwendet hatte, bemerkte ich, dass der Build Agent, der mit TeamCity installiert wurde, nicht richtig erkannt wurde. Um dies zu beheben, musste ich den Build Agent auf die neue URL für TeamCity verweisen. Diese Konfigurationsänderung erfolgt unter "C: \ TeamCity \ buildAgent \ conf \ buildAgent.properties". Dies ist wiederum der Pfad für eine Standardinstallation von TeamCity und kann je nach den von Ihnen vorgenommenen Anpassungen der TeamCity-Installation abweichen.

Stellen Sie in "buildAgent.properties" sicher, dass "serverUrl" auf die neue TeamCity-URL verweist. In meinem Fall habe ich es aktualisiert auf:

serverUrl = http \: //192.168.1.31

Starten Sie nach dieser Änderung sowohl TeamCity Web Server als auch TeamCity Build Agent neu.


1
Im Ernst, das ist großartig. Genau das haben ich und einer unserer Admins letztendlich selbst herausgefunden (was scheiße war). Vielen Dank für Ihre Bewertung
Ryan Montgomery

5
Vielleicht möchten Sie aber die Frage und die Antwort auflösen ...
Ryan Montgomery

Antworten:


10

Die Antwort ist Teil der ursprünglichen "Frage" oben.


2
+1, weil du mir ein paar Stunden gespart hast!
Tim Long
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.