Frage Ändern Sie die TeamCity-IP-Adresse und die Portnummer auf Windows Server 2008 mit mehreren Computern, auf denen IIS 7 ausgeführt wird


Nach zwei vollen Tagen "Nachforschung" (lies: Kopf gegen meine Tastatur hämmern) und der TeamCity / MSDN / Tomcat-Dokumentation sowie den Phantom-IIS-Bindungen, habe ich eine Antwort auf ein sehr verblüffendes Problem gefunden: Wie kann ich die IP-Adresse und die Portnummer von TeamCity auf einem Multi-Homed-Server ändern, auf dem Windows Server 2008 und IIS 7 ausgeführt werden, der einen notwendigen Zweck erfüllt?.

Zuerst ein bisschen Hintergrund. Auf unserem Buildserver 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 konfiguriert, um seine einzige Site explizit an 192.168.1.30 an Port 80 zu binden. An dieser Stelle denke ich, dass 192.168.1.31 weit offen und bereit ist, für TeamCity verwendet zu werden ... nicht ganz.

Erster Ärger: Bei der Installation von TeamCity wird völlig ignoriert, dass diesem Server mehrere IP-Adressen zugeordnet sind, die nur fragen, an welchen Port er sich binden soll. Für Server-Software ist das ziemlich überraschend.

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

Nachdem ich die PortCity-Installation beendet habe, öffne ich nach der Auswahl von Port 80 und dem Ignorieren der Bindungswarnung "C: \ TeamCity \ server.xml". Hinweis: "C: \ TeamCity \" ist die Standardeinstellung Installation Verzeichnis für TeamCity, während "C: \ Users \ .BuildServer" der Standard ist Daten Verzeichnis. Wie auch immer, "server.xml" ist die Konfigurationsdatei, in der Sie Dinge wie den Port und die IP-Adresse der TeamCity-Weboberfläche festlegen können. Nach ein wenig Nachforschung komme ich auf die Konfiguration zum Binden der IP-Adresse 192.168.1.31 an Port 80:

Suchen Sie nach beiden

<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 während der Installation ausgewählt haben. Ändern Sie entweder zu (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, oder? Nun, der Neustart des TeamCity-Webservers (über den Windows-Dienst-Manager) bringt nichts auf 192.168.1.31. Pfui.

Es stellt sich heraus, dass, obwohl die einzige Site von IIS explizit an Port 192.168.1.30 gebunden ist, IIS weiterhin zuhört alles IP-Adressen Dies wirft natürlich den WebServer (Tomcat) von TeamCity aus, der vor dem Online-Auftritt anhält. Nachdem ich Tomcat von der Kommandozeile aus manuell gestartet habe, um seinen Stdout-Fehler und noch mehr Nachforschungen zu analysieren, stolperte ich über dieses kleine Juwel von StackOverflow: Wie kann ich steuern, welche IP-Adresse IIS7 verwendet?

Also, von einer administrativen Kommandozeile aus (Hinweis: Ändern Sie erneut die IP-Adresse! Diesmal an die IP-Adresse, die du hast wollen IIS gebunden werden)

netsh http add iplisten ipadresse = 192.168.1.30

Jetzt starte ich den Web-Server von TeamCity neu und voila, es funktioniert !! Ich kann zu 192.168.1.31 blättern ohne eine Portnummer angeben zu müssen und die Weboberfläche von TeamCity wird angezeigt. Eine schnelle Plausibilitätsprüfung zeigt, dass IIS weiterhin ordnungsgemäß an 192.168.1.30 gebunden ist. Alles ist gut.

Entschuldigung für die lange Post für solch eine einfache Lösung. Ich hoffe, dass dies jemand anderem hilft, da es sicher viele Stunden Ärger gespart hätte.


Bearbeiten: Nachdem ich TeamCity eine Weile benutzt hatte, bemerkte ich, dass der Build-Agent, der mit TeamCity installiert wurde, nicht korrekt erkannt wurde. Um das zu beheben, musste ich den Build Agent auf die neue URL von TeamCity verweisen. Diese Konfigurationsänderung erfolgt in "C: \ TeamCity \ BuildAgent \ conf \ BuildAgent.properties". Auch dies ist der Pfad für eine Standardinstallation von TeamCity und kann je nach Anpassung der TeamCity-Installation unterschiedlich sein.

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.


20
2017-08-24 18:36


Ursprung


Im Ernst, das ist großartig. Das ist genau das, was ich und einer unserer Admins letztendlich selbst herausgefunden haben (was scheiße ist). Danke, dass du eine tolle Nachricht geschrieben hast. - Ryan Montgomery
Vielleicht möchten Sie die Frage und die Antwort auflösen ... - Ryan Montgomery


Antworten:


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


10
2017-08-24 18:38



+1 für die Rettung ein paar Stunden! - Tim Long