Змініть IP-адресу та номер порту TeamCity на багатодомній Windows Server 2008 під керуванням IIS 7


20

Після двох повних днів «досліджень» (читайте: стукаючи головою об клавіатуру) і проклинаючи документацію на TeamCity / MSDN / Tomcat, а також фантомні прив’язки IIS, я придумав відповідь на дуже заплутане питання: Як можна Я змінюю IP-адресу та номер порту TeamCity на багатодомному сервері під керуванням Windows Server 2008, а також IIS 7, який служить необхідній меті? .

По-перше, трохи тла. На нашому сервері збирання працює Windows Server 2008 з двома IP-адресами (192.168.1.30 та 192.168.1.31) в одному NIC. Я налаштував IIS явно прив’язувати свій єдиний сайт до 192.168.1.30 на порту 80. На даний момент я думаю, що 192.168.1.31 широко відкритий і готовий використовувати для TeamCity ... не зовсім.

Перше роздратування: при встановленні TeamCity він повністю ігнорує той факт, що з цим сервером є кілька IP-адрес, які запитують лише, до якого порту він повинен прив’язатись. Для програмного забезпечення серверного класу це досить дивно.

Другий роздратування: TeamCity за замовчуванням порту 8080 (що?). Через перше роздратування, вибір порту дещо неоднозначний: TeamCity збирається прив’язати до порту 8080 на обох IP-адресах? Зміна вибору порту на 80 дає попередження про те, що інша служба вже прив’язана до порту 80. Гм, IIS повинен бути прив’язаний до порту 80 лише на 192.168.1.30; нічого не повинно бути пов'язане з 192.168.1.31. Очевидно, що TeamCity конкурує з IIS на 192.168.1.30.

Закінчуючи встановлення TeamCity, після вибору порту 80 і ігнорування прив’язки до обов'язкового, я відкриваю "C: \ TeamCity \ server.xml". Sidenote: "C: \ TeamCity \" - це каталог встановлення за замовчуванням для TeamCity, тоді як "C: \ Користувачі \ .BuildServer" - це каталог даних за замовчуванням . У будь-якому випадку "server.xml" - це файл конфігурації, в якому ви можете встановити такі речі, як порт і IP-адреса веб-інтерфейсу TeamCity. Після невеликих досліджень я придумав конфігурацію для прив’язки IP-адреси 192.168.1.31 на порту 80:

Шукайте будь-яке

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

або

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

залежно від порту, який ви вибрали під час встановлення. Змініть або на ( зверніть увагу: змініть IP-адресу! )

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

Повинно бути так просто, правда ... так? Ну а перезапуск веб-сервера TeamCity (через диспетчер служб Windows) нічого не призводить до 192.168.1.31. Тьфу.

Виявляється, незважаючи на те, що один і єдиний сайт IIS явно пов'язаний з 192.168.1.30 на порту 80, IIS все ще слухає всі IP-адреси. Це, звичайно, відкидає веб-сервер TeamCity (Tomcat), який зупиняється, перш ніж навіть вийти в Інтернет. Після ручного запуску Tomcat з командного рядка для розсічення його помилки stdout та ще більшого дослідження, я трапляюсь із цим маленьким дорогоцінним каменем від StackOverflow: Як я можу контролювати, яку IP-адресу використовує IIS7?

Таким чином, з адміністративної командного рядка я біг ( примітки: знову, змініть IP - адреса на цей раз на IP - адреса , який ви! Хочете IIS бути пов'язаним )

netsh http add iplisten ipaddress = 192.168.1.30

Тепер я перезапускаю веб-сервер TeamCity і вуаля, він працює !! Я можу перейти до 192.168.1.31, не вказуючи номер порту та веб-інтерфейс TeamCity. Швидка перевірка санітарності показує, що IIS все ще правильно пов'язаний з 192.168.1.30. Все добре.

Вибачте за довгий пост за таке просте виправлення. Я сподіваюся, що це допоможе комусь іншому, оскільки, безумовно, це врятувало б мені години загострення.


Редагувати: Після деякого часу користування TeamCity я помітив, що агент збірки, встановлений із TeamCity, не був розпізнаний правильно. Щоб виправити це, мені довелося вказати Агент збірки на нову URL-адресу для TeamCity. Ця зміна конфігурації робиться в "C: \ TeamCity \ buildAgent \ conf \ buildAgent.properties". Знову ж таки, це шлях для встановлення TeamCity за замовчуванням і може відрізнятися залежно від способу налаштування вашої установки TeamCity.

Усередині "buildAgent.properties" переконайтеся, що "serverUrl" вказує на нову URL-адресу TeamCity. У моєму випадку я оновив його до:

serverUrl = http \: //192.168.1.31

Після внесення цієї зміни перезапустіть веб-сервер TeamCity і агент BuildCity Build.


1
Серйозно це приголомшливо. Це саме те, що я та один із наших адміністраторів врешті-решт розібралися самостійно (що смоктало). Дякуємо, що опублікували чудову реєстрацію.
Райан Монтгомері

5
Можливо, ви хочете порушити питання і відповідь, хоча ...
Райан Монтгомері,

Відповіді:


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.