Как я могу запустить несколько экземпляров TeamCity на одном сервере? - PullRequest
11 голосов
/ 07 июня 2011

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

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

c:\Tools\TeamCity\bin>cd c:\Tools\TeamCity2\bin

c:\Tools\TeamCity2\bin>runAll.bat start
starting TeamCity server and agent...
Using CATALINA_BASE:   "c:\Tools\TeamCity2\bin\.."
Using CATALINA_HOME:   "c:\Tools\TeamCity2\bin\.."
Using CATALINA_TMPDIR: "c:\Tools\TeamCity2\bin\..\temp"
Using JRE_HOME:        "c:\Tools\TeamCity2\bin\..\jre"
Using CLASSPATH:       "c:\Tools\TeamCity2\bin\..\bin\bootstrap.jar"
Starting TeamCity Build Agent Launcher...
Agent home directory is C:\Tools\TeamCity2\buildAgent
Current JRE version is 1.6

Ответы [ 2 ]

10 голосов
/ 07 июня 2011

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

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

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

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

6 голосов
/ 02 ноября 2012

Возможно, чтобы несколько серверов 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. Вам необходимо добавить «Вход в систему как сервис» для каждой учетной записи. Самый простой способ сделать это - открыть Сервисы из средств администрирования, щелкнуть правой кнопкой мыши каждый сервис, перейти на вкладку «Вход в систему», повторно ввести пароль в оба поля и нажать «Применить».

  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, поскольку связь является двухсторонней, и, похоже, нет способа настроить более одного порта, поэтому, вероятно, лучше установить агенты на C: \ TeamCity1 \ buildAgent1 \ named TeamCity1BuildAgent1, C: \ TeamCity1 \ buildAgent2 \ named TeamCity1BuildAgent2, C: \ TeamCity2 \ buildAgent1 \ named 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...