Назад | Перейти на главную страницу

Изменение IP-адреса и номера порта TeamCity на многосетевой Windows Server 2008 под управлением IIS 7

После двух полных дней «исследований» (читай: биться головой о клавиатуру) и проклятия документации 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». Примечание: по умолчанию используется "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 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 и агент сборки TeamCity.

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