Modifier l'adresse IP et le numéro de port de TeamCity sur Windows Server 2008 multi-hébergé exécutant IIS 7


20

Après deux jours complets de «recherche» (lire: me cogner la tête contre mon clavier) et maudire la documentation TeamCity / MSDN / Tomcat ainsi que les liaisons fantômes IIS, j'ai trouvé une réponse à un problème très déroutant: comment -Je changer l'adresse IP et le numéro de port de TeamCity sur un serveur multi-hébergement exécutant Windows Server 2008 ainsi que IIS 7 qui remplit une fonction nécessaire? .

D'abord, un peu de contextualisation. Notre serveur de génération exécute Windows Server 2008 avec deux adresses IP (192.168.1.30 et 192.168.1.31) sur une seule carte réseau. J'ai configuré IIS pour lier explicitement son seul et unique site à 192.168.1.30 sur le port 80. À ce stade, je pense que 192.168.1.31 est grand ouvert et prêt à être utilisé pour TeamCity ... pas tout à fait.

Première gêne: lors de l'installation de TeamCity, il ignore complètement le fait qu'il existe plusieurs adresses IP associées à ce serveur, demandant uniquement le port auquel il doit se lier. Pour les logiciels de qualité serveur, cela est assez surprenant.

Deuxième ennui: TeamCity prend par défaut le port 8080 (wha ??). En raison de la première gêne, la sélection du port est quelque peu ambiguë: TeamCity va-t-il se lier au port 8080 sur les deux adresses IP? La modification de la sélection de port sur 80 génère un avertissement qu'un autre service est déjà lié au port 80. Hmm, IIS ne doit être lié au port 80 que sur 192.168.1.30; rien ne devrait être lié sur 192.168.1.31. Évidemment, TeamCity est en concurrence avec IIS sur 192.168.1.30.

En terminant l'installation de TeamCity, après avoir choisi le port 80 et ignoré l'avertissement de liaison, j'ouvre "C: \ TeamCity \ server.xml". Sidenote: "C: \ TeamCity \" est le répertoire d' installation par défaut pour TeamCity tandis que "C: \ Users \ .BuildServer" est le répertoire de données par défaut . Quoi qu'il en soit, "server.xml" est le fichier de configuration où vous pouvez définir des choses comme le port et l'adresse IP de l'interface Web de TeamCity. Après un peu de recherche, je trouve la configuration pour lier l'adresse IP 192.168.1.31 sur le port 80:

Recherchez soit

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

ou

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

en fonction du port que vous avez choisi lors de l'installation. Changez soit en ( remarque: changez l'adresse IP! )

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

Ça devrait être aussi simple que ça, non ... non? Eh bien, le redémarrage du serveur Web de TeamCity (via le gestionnaire de services de Windows) ne donne rien sur 192.168.1.31. Pouah.

Il s'avère que même si le seul et unique site d'IIS a été explicitement lié à 192.168.1.30 sur le port 80, IIS écoute toujours toutes les adresses IP. Bien sûr, cela supprime le serveur Web de TeamCity (Tomcat) qui s'arrête avant même d'être mis en ligne. Après avoir démarré manuellement Tomcat à partir de la ligne de commande pour disséquer son erreur stdout et encore plus de recherches, j'arrive sur ce petit bijou de StackOverflow: Comment puis-je contrôler quelle adresse IP IIS7 utilise?

Donc, à partir d'une ligne de commande administrative, je lance ( remarque: encore une fois, changez l'adresse IP! Cette fois-ci à l'adresse IP que vous souhaitez que IIS soit lié )

netsh http add iplisten ipaddress = 192.168.1.30

Maintenant, je redémarre le serveur Web de TeamCity et le tour est joué, ça fonctionne !! Je peux naviguer jusqu'à 192.168.1.31 sans avoir à spécifier de numéro de port et l'interface Web de TeamCity s'affiche. Un rapide contrôle d'intégrité montre que IIS est toujours correctement lié à 192.168.1.30. Tout est bien.

Désolé pour le long post pour une solution aussi simple. J'espère que cela aide quelqu'un d'autre car cela m'aurait certainement sauvé des heures d'aggravation.


Edit: Après avoir utilisé TeamCity pendant un certain temps, j'ai remarqué que l'agent de construction qui avait été installé avec TeamCity n'était pas reconnu correctement. Pour résoudre ce problème, j'ai dû pointer l'agent de build vers la nouvelle URL de TeamCity. Cette modification de configuration est effectuée dans "C: \ TeamCity \ buildAgent \ conf \ buildAgent.properties". Encore une fois, c'est le chemin pour une installation par défaut de TeamCity et peut être différent selon la façon dont vous personnalisez votre installation de TeamCity.

Dans "buildAgent.properties", assurez-vous que "serverUrl" pointe vers la nouvelle URL TeamCity. Dans mon cas, je l'ai mis à jour pour:

serverUrl = http \: //192.168.1.31

Après avoir effectué cette modification, redémarrez TeamCity Web Server et TeamCity Build Agent.


1
Sérieusement, c'est génial. C'est exactement ce que moi et l'un de nos admins avons finalement compris par nous-mêmes (ce qui était nul). Merci d'avoir publié un excellent article.
Ryan Montgomery

5
Vous voudrez peut-être briser la question et la réponse ...
Ryan Montgomery

Réponses:


10

La réponse fait partie de la "question" originale ci-dessus.


2
+1 pour m'avoir sauvé quelques heures!
Tim Long
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.