Как запустить несколько экземпляров 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, я не уверен, работает ли он с другими версиями.
вот:
установите TeamCity, выберите "C:\TeamCity1-в качестве папки назначения.
снимите флажок агент сборки (как служба Windows, так и ядро) - они будут установлены позже.
снимите флажок служба Windows для сервера, но оставьте ядро проверенным.
использовать "C:\TeamCity1\TeamCityData\" как каталог конфигурации.
выберите уникальный порт для этого экземпляра. Я выбрал 8080, 8081 и 8082.
повторите шаги 1-5 столько раз, сколько требуется, изменив на TeamCity2, TeamCity3 и т. д. и каждый раз менял порт.
перейдите к управлению компьютером в администрировании и создайте 1 уникальную учетную запись пользователя Windows для каждой службы (т. е. TeamCity1, TeamCity2 и TeamCity3). Убедитесь, что срок действия паролей не истек. На данный момент убедитесь, что у каждого пользователя достаточно прав для входа в Windows.
Откройте командную строку с повышенными правами, выбрав все программы > аксессуары > Командная строка, щелкните правой кнопкой мыши и выберите "Запуск от имени администратора".
выполните команды в конце этой процедуры для каждого экземпляра TeamCity, заменив число 1 соответствующим TeamCity пример.
вам нужно добавить "Logon as a service" право для каждой учетной записи. Простой способ сделать это-открыть службы из средств администрирования, щелкнуть правой кнопкой мыши каждую службу, перейти на вкладку Вход, повторно ввести пароль в обоих полях и нажать кнопку Применить.
выйдите из машины и войдите в систему как "TeamCity1".
перейдите в Панель управления > Учетные записи пользователей > учетные записи пользователей > изменить мою среду переменная.
добавьте новую переменную пользователя, нажав кнопку Создать... Назовите его TEAMCITY_DATA_PATH со значением C:\TeamCity1\TeamCityData - ...
повторите шаги 11-13 для каждого экземпляра TeamCity.
выйдите из системы и войдите в систему с учетной записью администратора.
вернитесь в диалоговое окно переменные среды и удалите системную переменную (не пользовательскую переменную) с именем TEAMCITY_DATA_PATH.
при необходимости измените разрешения для каждой учетной записи Пользователя TeamCity, чтобы у них не было разрешения на вход.
Открыть C:\TeamCity1\conf\server.xml и C:\TeamCity1\conf\server-standard - ... xml и измените порт сервера=8105 на другой порт по вашему выбору. Убедитесь, что вы используете один и тот же порт в обоих файлах. Повторите для каждого экземпляра TeamCity.
запустите каждую службу и подключитесь к браузер для настройки каталога данных для каждого из них. Мне пришлось остановить все экземпляры службы teamcity, кроме текущего, или я получил ошибку "клиент не аутентифицирован" во время процесса сборки, но после завершения они, похоже, работают нормально.
настройте доступ к базе данных соответствующим образом.
используйте эти инструкции для установите несколько агентов сборки на одном компьютере. Я не верю, что можно поделиться агентом между TeamCity экземпляры, так как общение-это 2-полосная и там, кажется, не быть способ, чтобы настроить более одного порта, так что это, вероятно, лучше установить агентов C:\TeamCity1\buildAgent1\ по имени TeamCity1BuildAgent1, C:\TeamCity1\buildAgent2\ по имени TeamCity1BuildAgent2, C:\TeamCity2\buildAgent1\ по имени TeamCity2BuildAgent1 и т. д.
Если вы хотите использовать стандартные порты для каждого экземпляра 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.