2012-04-02 12 views
5

Me doy cuenta de que esta pregunta probablemente se haya realizado en numerosas ocasiones, pero no he podido encontrar una respuesta buena y actualizada. La única guía que he podido encontrar data de 2005 y estaba en Tomcat 5. Parece que muchas de las rutas de los sistemas operativos han cambiado.Guía para configurar Apache2 con varias instancias distintas de Tomcat 7

Nuestra situación es la siguiente:

Queremos ejecutar varias instancias de Tomcat 7 en un único servidor. Cada tomcat sirve una dirección diferente. Por ejemplo, www.oursite.com debe ser servido desde un tomcat diferente de test.oursite.com. Por lo tanto, por ejemplo, la instalación de base tomcat se ubicará en /opt/tomcat/ y los directorios específicos de la instancia (esto es lo que pude deducir de ese viejo tutorial) estarán en /home/user1/some/path/ y /home/user2/some/path para que todo esté bien separado.

¿Alguien puede apuntar a un buen tutorial, o tal vez explicar aquí los pasos para configurar esto? Soy un poco nuevo en las configuraciones de Apache.

¿Existen ventajas/desventajas al hacerlo de esta manera? ¿Sería mejor una sola instancia de tomcat? Necesitamos ser capaces de derribar sitios de uno en uno sin influir mutuamente. Además, nuestro proveedor de DNS nos impide configurar los redireccionamientos sigilosos, por lo que debemos pasar por apache para tener buenas URL en lugar de redirigir directamente a los tomcat.

Gracias

Respuesta

8

Creo que tiene 2 preguntas aquí:

  1. Cómo ejecutar varias instancias de Tomcat en el mismo servidor y debe usted?
  2. Cómo configurar Apache httpd para hacer host virtual y front tomcat?

Para 1. El siguiente es un muy buen tutorial sobre cómo ejecutar varias instancias de tomcat en el mismo servidor: http://java.dzone.com/articles/running-multiple-tomcat, pero ¿verdad? La respuesta es, depende". Si tienes una caja súper poderosa y está infrautilizada, deberías. También depende del tipo de aplicación que ejecute para cada sitio individual. Definitivamente lo ayudará a "derribar sitios de uno en uno sin influir entre sí". Con la configuración httpd de apache que explicaré en la siguiente sección, también puede ejecutar cada sitio en máquinas separadas (físicas o vm).

Para 2. En tu caso, solo necesitas configurar apache httpd para hacer el host virtual y usar ajp para conectarte a tomcat.

<VirtualHost *:80> 
    ServerName www.oursite.com 

    ProxyPass/ajp://tomcat.oursite.com:8009/www retry=5 
    ProxyPassReverse/ajp://tomcat.oursite.com:8009/www 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName test.oursite.com 

    ProxyPass/ajp://tomcat.oursite.com:8010/test retry=5 
    ProxyPassReverse/ajp://tomcat.oursite:8010/test 
</VirtualHost> 

En la configuración anterior, es necesario configurar las entradas de DNS de ambos www.yoursite.com y test.yoursite.com para que apunte al mismo host. También asume que ejecuta sus www y prueba webapps en diferentes instancias de tomcat en el mismo host tomcat.oursite.com, una en el puerto ajp 8009 y la otra en el puerto ajp 8010. También puede cambiarla a diferente servidor propio. Es muy flexible. Para su información, que sigue es cómo configurar AJP de Tomcat: http://tomcat.apache.org/tomcat-6.0-doc/config/ajp.html

+0

Esto se ve exactamente como lo que estoy buscando. Lo intentaré mañana y acepto si funciona. ¡GRACIAS! –

+0

Aceptaré esta respuesta, ya que la mayor parte fue útil. Sin embargo, no funcionó por completo. –

+0

¿Qué parte no funcionó para ti? Si publica los detalles, estaré encantado de ayudarlo. – hongbo

0

me encontré con un problema con el conector mod_proxy_ajp Apache en una configuración de este tipo, que de ninguna manera se permitirá utilizar cualquier otro puerto al configurar varias máquinas virtuales, cada uno con su propia instancia de tomcat.

Después de haber pasado algún tiempo descartando conflictos de puertos, problemas de configuración de tomcat, problemas de firewall, he llegado a la conclusión de que ProxyPass y ProxyPassReverse no funcionarán cuando se use cualquier puerto distinto de 8009 de manera predeterminada. La solución es cambiar a mod_jk, que también resuelve problemas observados en mod_proxy_ajp con configuraciones básicas que no cargan o reescriben urls incrustadas en páginas alojadas de tomcat sin grandes cambios de configuración si la instancia de tomcat está enraizada en un subdirectorio. Esto no parece suceder con Mod_Jk

Cuestiones relacionadas