Как запустить несколько экземпляров TeamCity на одном сервере?

Я нахожусь в Windows и пытаюсь запустить несколько (в настоящее время два) экземпляра TeamCity на одном сервере. Я решил не устанавливать службы Windows и вместо этого запускать сервер через runAll.летучая мышь начало. Когда я запускал установщик, я выбирал разные порты, имена и пути для каждого из них. Первый сервер запускается успешно, но второй нет - я вижу, что появляется окно tomcat, но через некоторое время оно исчезло, хотя окно агента сборки остается. Вот некоторые вывод:

c:ToolsTeamCitybin>runAll.bat start
starting TeamCity server and agent...
Using CATALINA_BASE:   "c:ToolsTeamCitybin.."
Using CATALINA_HOME:   "c:ToolsTeamCitybin.."
Using CATALINA_TMPDIR: "c:ToolsTeamCitybin..temp"
Using JRE_HOME:        "c:ToolsTeamCitybin..jre"
Using CLASSPATH:       "c:ToolsTeamCitybin..binbootstrap.jar"
Starting TeamCity Build Agent Launcher...
Agent home directory is C:ToolsTeamCitybuildAgent
Current JRE version is 1.6

c:ToolsTeamCitybin>cd c:ToolsTeamCity2bin

c:ToolsTeamCity2bin>runAll.bat start
starting TeamCity server and agent...
Using CATALINA_BASE:   "c:ToolsTeamCity2bin.."
Using CATALINA_HOME:   "c:ToolsTeamCity2bin.."
Using CATALINA_TMPDIR: "c:ToolsTeamCity2bin..temp"
Using JRE_HOME:        "c:ToolsTeamCity2bin..jre"
Using CLASSPATH:       "c:ToolsTeamCity2bin..binbootstrap.jar"
Starting TeamCity Build Agent Launcher...
Agent home directory is C:ToolsTeamCity2buildAgent
Current JRE version is 1.6

2 ответов


вам нужно изменить conf\server.xml для второго экземпляра Tomcat / TeamCity, чтобы он использовал разные порты или привязки к разным сетевым интерфейсам, достаточно изменить следующие порты:

  • Server port="8005"
  • Connector port="8080"

два сервера не могут использовать одну и ту же базу данных, поэтому вы должны настроить их для использования разных местоположений через TEAMCITY_DATA_PATH переменные среды.

Если вы хотите запустить несколько агенты на одной машине,см. Мой ответ здесь.


можно сделать более одного сервера TeamCity работать в том же окне Windows, что и службы Windows.

следующая процедура предполагает, что необходимо установить 3 экземпляра TeamCity с именами TeamCity1, TeamCity2 и TeamCity3 на портах 8080, 8081 и 8082 соответственно. Если вы измените любую из этих деталей, убедитесь, что вы остаетесь последовательными с изменением на протяжении всей процедуры. Каждый экземпляр должен работать под другой учетной записью пользователя Windows для работы этой процедуры. Этот было сделано с TeamCity 7.1, я не уверен, работает ли он с другими версиями.

вот:

  1. установите TeamCity, выберите "C:\TeamCity1-в качестве папки назначения.

  2. снимите флажок агент сборки (как служба Windows, так и ядро) - они будут установлены позже.

  3. снимите флажок служба Windows для сервера, но оставьте ядро проверенным.

  4. использовать "C:\TeamCity1\TeamCityData\" как каталог конфигурации.

  5. выберите уникальный порт для этого экземпляра. Я выбрал 8080, 8081 и 8082.

  6. повторите шаги 1-5 столько раз, сколько требуется, изменив на TeamCity2, TeamCity3 и т. д. и каждый раз менял порт.

  7. перейдите к управлению компьютером в администрировании и создайте 1 уникальную учетную запись пользователя Windows для каждой службы (т. е. TeamCity1, TeamCity2 и TeamCity3). Убедитесь, что срок действия паролей не истек. На данный момент убедитесь, что у каждого пользователя достаточно прав для входа в Windows.

  8. Откройте командную строку с повышенными правами, выбрав все программы > аксессуары > Командная строка, щелкните правой кнопкой мыши и выберите "Запуск от имени администратора".

  9. выполните команды в конце этой процедуры для каждого экземпляра TeamCity, заменив число 1 соответствующим TeamCity пример.

  10. вам нужно добавить "Logon as a service" право для каждой учетной записи. Простой способ сделать это-открыть службы из средств администрирования, щелкнуть правой кнопкой мыши каждую службу, перейти на вкладку Вход, повторно ввести пароль в обоих полях и нажать кнопку Применить.

  11. выйдите из машины и войдите в систему как "TeamCity1".

  12. перейдите в Панель управления > Учетные записи пользователей > учетные записи пользователей > изменить мою среду переменная.

  13. добавьте новую переменную пользователя, нажав кнопку Создать... Назовите его TEAMCITY_DATA_PATH со значением C:\TeamCity1\TeamCityData - ...

  14. повторите шаги 11-13 для каждого экземпляра TeamCity.

  15. выйдите из системы и войдите в систему с учетной записью администратора.

  16. вернитесь в диалоговое окно переменные среды и удалите системную переменную (не пользовательскую переменную) с именем TEAMCITY_DATA_PATH.

  17. при необходимости измените разрешения для каждой учетной записи Пользователя TeamCity, чтобы у них не было разрешения на вход.

  18. Открыть C:\TeamCity1\conf\server.xml и C:\TeamCity1\conf\server-standard - ... xml и измените порт сервера=8105 на другой порт по вашему выбору. Убедитесь, что вы используете один и тот же порт в обоих файлах. Повторите для каждого экземпляра TeamCity.

  19. запустите каждую службу и подключитесь к браузер для настройки каталога данных для каждого из них. Мне пришлось остановить все экземпляры службы teamcity, кроме текущего, или я получил ошибку "клиент не аутентифицирован" во время процесса сборки, но после завершения они, похоже, работают нормально.

  20. настройте доступ к базе данных соответствующим образом.

  21. используйте эти инструкции для установите несколько агентов сборки на одном компьютере. Я не верю, что можно поделиться агентом между TeamCity экземпляры, так как общение-это 2-полосная и там, кажется, не быть способ, чтобы настроить более одного порта, так что это, вероятно, лучше установить агентов C:\TeamCity1\buildAgent1\ по имени TeamCity1BuildAgent1, C:\TeamCity1\buildAgent2\ по имени TeamCity1BuildAgent2, C:\TeamCity2\buildAgent1\ по имени TeamCity2BuildAgent1 и т. д.

  22. Если вы хотите использовать стандартные порты для каждого экземпляра TeamCity (80 и/или 443), следуйте этим инструкциям, чтобы использовать IIS в качестве прокси для Tomcat.

Run these commands at step #9 above

sc create TeamCity1 binPath= "\"C:\TeamCity1\bin\TeamCityService.exe\" jetservice \"/settings=C:\TeamCity1\conf\teamcity-server-service.xml\" \"/LogFile=C:\TeamCity1\logs\teamcity-winservice.log\"" DisplayName= "TeamCity Server 1" start= auto obj= ".\TeamCity1" password= "Password1"

sc description "TeamCity1" "JetBrains TeamCity server service 1"

NOTE: teamcity is misspelled as "teamicty" as the name of the config file in some builds. 
This is a TeamCity bug, make sure you correct the file name before 
executing these commands.