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