如何在同一台服务器上运行多个TeamCity实例?

时间:2011-06-07 15:34:27

标签: tomcat teamcity multiple-instances

我在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 个答案:

答案 0 :(得分:10)

您需要为第二个Tomcat / TeamCity实例编辑conf\server.xml,以便它使用不同的端口或绑定到不同的网络接口,更改以下端口应该足够了:

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

两台服务器无法共享同一个数据库,因此您必须将它们配置为通过TEAMCITY_DATA_PATH环境变量使用不同的位置。

如果您还想在同一台计算机上运行多个代理,refer to my answer here

答案 1 :(得分:6)

可以在与Windows服务相同的Windows框上运行多个TeamCity服务器。

以下过程假定您要分别在端口8080,8081和8082上安装3个名为TeamCity1,TeamCity2和TeamCity3的TeamCity实例。如果您更改了这些细节,请确保在整个过程中保持一致。每个实例必须在不同的Windows用户帐户下运行才能使此过程正常工作。这是使用TeamCity 7.1完成的,我不确定它是否适用于其他版本。

以下是程序:

  1. 安装TeamCity,选择“C:\ TeamCity1”作为目标文件夹。

  2. 取消选中Build Agent(Windows服务和核心) - 这些将在稍后安装。

  3. 取消选中Windows Service for Server,但保持Core已选中。

  4. 使用“C:\ TeamCity1 \ TeamCityData \”作为配置目录。

  5. 为此实例选择一个唯一的端口。我选择了8080,8081和8082。

  6. 根据需要多次重复步骤1-5,将其更改为TeamCity2,TeamCity3等,并每次更改端口。

  7. 转到“管理工具”中的“计算机管理”,为每项服务(即TeamCity1,TeamCity2和TeamCity3)创建1个唯一的Windows用户帐户。确保密码不会过期。目前,请确保每个用户都有足够的权限登录Windows。

  8. 转到所有程序>打开提升的命令提示符。配件>命令提示符,右键单击,然后选择“以管理员身份运行”。

  9. 在TeamCity的每个实例的此过程结束时运行命令,将数字1替换为相应的TeamCity实例。

  10. 您需要为每个帐户添加“登录即服务”权限。简单的方法是从管理工具打开服务,右键单击每个服务,转到登录选项卡,在两个框中重新键入密码,然后单击应用。

  11. 注销计算机并以“TeamCity1”身份登录。

  12. 转到“控制面板”>用户帐户>用户帐户>更改我的环境变量。

  13. 通过单击“新建”添加新的用户变量...将其命名为TEAMCITY_DATA_PATH,其值为C:\ TeamCity1 \ TeamCityData。

  14. 对TeamCity的每个实例重复步骤11-13。

  15. 注销并使用管理员帐户重新登录。

  16. 返回环境变量对话框并删除名为TEAMCITY_DATA_PATH的系统变量(非用户变量)。

  17. 如果需要,请更改每个TeamCity用户帐户的权限,以便他们无权登录。

  18. 打开C:\ TeamCity1 \ conf \ server.xml和C:\ TeamCity1 \ conf \ server-standard.xml,将服务器端口= 8105更改为您选择的另一个端口。确保在两个文件中使用SAME PORT。对TeamCity的每个实例重复。

  19. 启动每项服务并连接浏览器以配置每个服务的数据目录。我不得不停止除了当前的所有teamcity服务实例,或者在构建过程中遇到“客户端未经过身份验证”错误,但是一旦完成它们似乎工作正常。

  20. 根据需要配置数据库访问。

  21. 将这些说明用于install multiple build agents on the same machine。我不相信可以在TeamCity实例之间共享代理,因为通信是双向的,并且似乎没有办法配置多个端口,因此最好将代理安装到C: \ TeamCity1 \ buildAgent1 \命名为TeamCity1BuildAgent1,C:\ TeamCity1 \ buildAgent2 \命名为TeamCity1BuildAgent2,C:\ TeamCity2 \ buildAgent1 \命名为TeamCity2BuildAgent1等。

  22. 如果您想为每个TeamCity实例(80和/或443)使用标准端口,请按照这些说明操作use IIS as a proxy for Tomcat

  23. 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.