2011-06-07 14 views
11

Estoy en Windows y trato de ejecutar varias instancias (actualmente dos) de TeamCity en el mismo servidor. Elegí no instalar los servicios de Windows y, en su lugar, ejecutar el servidor a través del comando runAll.bat start. Cuando ejecuté el instalador elegí diferentes puertos, nombres y rutas para cada uno. El primer servidor se inicia con éxito, pero el segundo no: veo aparecer la ventana Tomcat, pero se va después de un tiempo, aunque la ventana del agente de compilación se mantiene. Aquí hay un poco de salida:¿Cómo puedo ejecutar varias instancias de TeamCity en el mismo servidor?

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

ataque preventivo contra nuevas banderas en este post. En realidad, esto no va en contra de la licencia de la versión profesional gratuita de TeamCity, así que deje de marcar esto por este motivo. –

Respuesta

10

Hay que editar conf\server.xml para la segunda instancia de Tomcat/TeamCity para que utilice diferentes puertos o se une a diferentes interfaces de red, cambiando los siguientes puertos debería ser suficiente:

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

dos servidores no pueden compartir la misma base de datos, por lo que debe configurar usar diferentes lugares a través de la variable de entorno TEAMCITY_DATA_PATH.

Si también desea ejecutar varios agentes en la misma máquina, refer to my answer here.

+0

El segundo servidor se ejecuta esta vez, pero informa que la base de datos ya está en uso, por lo que TeamCity no puede pasar la fase de inicio. Pensé que usarían otra base de datos (lo siento, no tengo idea de Java). 'Base de datos HSQL abierta (en proceso) por otra aplicación.Error SQL al hacer: Conexión a HSQL Excepción de SQL: La base de datos ya está siendo utilizada por otro proceso: lockFile: [email protected] [file = C: \ Users \ Administrator \ .BuildServer \ system \ buildserver. lck' ¿Por qué no se ve en _.BuildServer 2_? –

+1

En realidad, no está del todo claro por qué necesita 2 instancias del servidor TeamCity en ejecución. Un servidor solo puede funcionar con una base de datos/configuración. Entonces, si realmente necesita 2 servidores, especifique una ubicación alternativa para la configuración mediante la variable de entorno TEAMCITY_DATA_PATH. – KIR

+0

Quiero que dos servidores TeamCity se ejecuten en la misma máquina y deben usar bases de datos separadas. Lo que intento lograr es ver si esto me permite tener más de 20 configuraciones en la versión Profesional. De acuerdo con sus preguntas frecuentes, debería funcionar, a menos que no lo haya entendido: http://www.jetbrains.com/teamcity/buy/licensing_faq.html#q2 –

6

Es posible hacer que más de un servidor TeamCity se ejecute en el mismo cuadro de Windows que los servicios de Windows.

El siguiente procedimiento supone que desea instalar 3 instancias de TeamCity denominadas TeamCity1, TeamCity2 y TeamCity3 en los puertos 8080, 8081 y 8082, respectivamente. Si cambia alguno de estos detalles, asegúrese de mantenerse constante con el cambio durante todo el procedimiento. Cada instancia DEBE ejecutarse bajo una cuenta de usuario de Windows diferente para que este procedimiento funcione. Esto fue hecho con TeamCity 7.1, no estoy seguro de si funciona con otras versiones.

Aquí está el procedimiento:

  1. Instalar TeamCity, seleccione "C: \ TeamCity1" como carpeta de destino.

  2. Desmarque el agente de compilación (tanto el servicio de Windows como el núcleo); estos se instalarán más adelante.

  3. Desmarque el Servicio de Windows para el Servidor, pero deje el Core marcado.

  4. Utilice "C: \ TeamCity1 \ TeamCityData \" como el directorio de configuración.

  5. Elija un puerto único para esta instancia. Elegí 8080, 8081 y 8082.

  6. Repita los pasos 1-5 tantas veces como desee, cambiando a TeamCity2, TeamCity3, etc. y cambiando el puerto cada vez.

  7. Vaya a Administración de equipos en Herramientas administrativas y cree 1 cuenta de usuario de Windows única para cada servicio (es decir, TeamCity1, TeamCity2 y TeamCity3). Asegúrese de que las contraseñas no caduquen. Por ahora, asegúrese de que cada usuario tenga suficiente permiso para iniciar sesión en Windows.

  8. Abra un símbolo del sistema elevado yendo a Todos los programas> Accesorios> Símbolo del sistema, haga clic con el botón derecho y seleccione "Ejecutar como administrador".

  9. Ejecute los comandos al final de este procedimiento para cada instancia de TeamCity, reemplazando el número 1 con la instancia de TeamCity correspondiente.

  10. Debe agregar "Iniciar sesión como servicio" para cada cuenta. La forma más sencilla de hacerlo es abrir Servicios desde Herramientas administrativas, hacer clic con el botón derecho en cada servicio, ir a la pestaña Iniciar sesión, volver a escribir la contraseña en ambos cuadros y hacer clic en Aplicar.

  11. Desconecte la máquina e inicie sesión como "TeamCity1".

  12. Vaya a Panel de control> Cuentas de usuario> Cuentas de usuario> Cambiar las variables de mi entorno.

  13. Agregue una nueva variable de usuario haciendo clic en Nuevo ... Nombrela TEAMCITY_DATA_PATH con un valor de C: \ TeamCity1 \ TeamCityData.

  14. Repita los pasos 11-13 para cada instancia de TeamCity.

  15. Cierre sesión y vuelva a iniciar sesión con la cuenta de administrador.

  16. Vuelva al diálogo de variables de entorno y elimine la variable del sistema (no la variable de usuario) llamada TEAMCITY_DATA_PATH.

  17. Si lo desea, cambie los permisos para cada cuenta de usuario TeamCity por lo que no tienen permiso para iniciar sesión en

  18. Open C:. \ TeamCity1 \ conf \ server.xml y C: \ TeamCity1 \ conf \ server-standard.xml y cambie el puerto del servidor = 8105 a otro puerto de su elección. Asegúrese de utilizar el MISMO PUERTO en ambos archivos. Repita para cada instancia de TeamCity.

  19. Inicie cada servicio y conéctese con su navegador para configurar el directorio de datos para cada uno. Tuve que detener todas las instancias del servicio teamcity, excepto la actual, o recibí un error de "cliente no autenticado" durante el proceso de compilación, pero una vez completadas, parecen funcionar bien.

  20. Configure el acceso a la base de datos según corresponda.

  21. Siga estas instrucciones para install multiple build agents on the same machine. No creo que sea posible compartir un agente entre las instancias de TeamCity ya que la comunicación es bidireccional y no parece haber una forma de configurar más de un puerto, por lo que probablemente sea mejor instalar los agentes en C: \ TeamCity1 \ buildAgent1 \ llamado TeamCity1BuildAgent1, C: \ TeamCity1 \ buildAgent2 \ llamado TeamCity1BuildAgent2, C: \ TeamCity2 \ buildAgent1 \ llamado TeamCity2BuildAgent1, etc.

  22. Si desea utilizar puertos estándar para cada instancia TeamCity (80 y/o 443), siga estas instrucciones al use IIS as a proxy for 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.
Cuestiones relacionadas