Измените 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) на одной сетевой карте. Я настроил 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: \ Users \ .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 добавить 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 Web Server, так и TeamCity Build Agent.

Брэд Б.
источник
1
Серьезно, это потрясающе. Это именно то, что я и один из наших администраторов в конечном итоге выяснили самостоятельно (что отстой). Спасибо за публикацию отличной рецензии.
Райан Монтгомери
5
Возможно, вы захотите разбить вопрос и ответ, хотя ...
Райан Монтгомери

Ответы:

10

Ответ является частью оригинального «вопроса» выше.

Брэд Б.
источник
2
+1 за спасение меня несколько часов!
Тим Лонг