2012-05-22 41 views
35

Actualmente corro single tomcat con una única aplicación WAR en el puerto 80. El nombre de dominio www.foo.org apunta a este servidor ip.Tomcat y múltiples dominios/aplicaciones

¿Cuál es el procedimiento para agregar www.bar.org dominio para un cliente diferente en el puerto 80?

Gracias

Respuesta

44

Desde el principio que tienen un solo registro "Host" en su conf/server.xml para localhost

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
       prefix="localhost_access_log." suffix=".txt" 
       pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
</Host> 

Ahora se puede añadir otros registros "host", por ejemplo

<Host name="anotherclient.com" appBase="anotherclient" unpackWARs="true" autoDeploy="true"> 

     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
      prefix="anotherclient_access_log." suffix=".txt" 
      pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
    </Host> 

donde name="anotherclient.com" es el dominio del nuevo cliente, y appBase="anotherclient" es el nombre del directorio raíz de la aplicación web (donde implementa su guerra); es relativo al directorio de inicio de tomcat.

Se aceptarán cambios después de reiniciar tomcat.

Las solicitudes van a ningún otro dominio (que no aparecen en server.xml), pero apuntando a la dirección IP de su servidor serán pasados ​​a la aplicación por defecto, se especifica en el elemento Engine

<Engine name="Catalina" defaultHost="localhost"> 
+5

Esto significa que las guerras están en '/ opt/tomcat/webapps/ROOT.war' para el sitio original de foo.org, y luego'/opt/tomcat/anotherclient/ROOT.war' para el nuevo sitio de bar.org ? – CodeMed

+1

@CodeMed Sí, eso es correcto. Simplemente intenté esto por mí mismo y poner las guerras de esa manera parece funcionar para mí. –

+1

tenemos que crear ese directorio otro cliente nosotros mismos o está creando después de reiniciar tomcat7 – dollar

3

Por lo general, usted tiene un gato (u otro servidor de aplicaciones) en el puerto diferente de 80 (como 8080 o 7001 o lo que quieras). Después de eso, coloca un servidor web (como apache http server) en el puerto 80 y configura uno o varios conectores para que apunten a un puerto diferente en un servidor de aplicaciones diferente con una dirección diferente.

Para Apache HTTP + Tomcat se puede echar un vistazo a este enlace:

http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html

+2

No hay ninguna razón particular para agregue otro producto al entorno del OP: este problema se puede resolver utilizando solo Tomcat. –

+1

Esa es solo una mejor práctica en el entorno profesional para tener un servidor web y de aplicaciones. – Guaido79

+3

Malarkey: Tomcat es un servidor web perfectamente aceptable. Llamar a algo una "mejor práctica" no lo convierte en una mejor práctica. Es una/común/práctica, pero ciertamente no es una "mejor" práctica. –

5

En su configuración predeterminada, Tomcat acepta solicitudes de cualquier nombre de host y se los envía a la "localhost" < anfitrión > definido en conf/server.xml. Si no ha cambiado eso, entonces todo lo que tiene que hacer es asegurarse de tener registros DNS configurados para que ambos nombres de host apunten a su servidor.

Si desea tener un conjunto diferente de webapps para cada nombre de host, entonces deberá definir un segundo host < > en conf/server.xml y usar el nombre de host apropiado para él. (Tenga en cuenta que siempre tendrá que tener un host "predeterminado" donde vayan todas las solicitudes que no coincidan con ninguno de los hosts explícitamente definidos).

Puede leer la documentación de < anfitrión > aquí: http://tomcat.apache.org/tomcat-7.0-doc/config/host.html (Eso es para Tomcat 7.0.x. Usted no ha mencionado su versión así que le di un enlace a la documentación de la última versión).

+0

Gracias - Su versión 7, ¿qué pasa con los archivos WAR? cada cliente necesita una implementación diferente? – user648026

+1

@ user648026 Cada tiene su propia appBase, por lo que puede optar por colocar sus archivos WAR en cualquiera de ellos o en ambos. Elegir uno hará que ese archivo WAR solo sea accesible usando el nombre de host de ese , mientras que poner el archivo WAR en ambos significa que tendrá dos copias de la aplicación web ejecutándose simultáneamente en el mismo contenedor: una para un host y otra para el otro . –

+0

Por lo tanto, el tomcat único que se ejecuta en el puerto 80 puede manejar múltiples hosts en el mismo puerto (80) con WAR único, usando múltiples configuraciones de "hosts". – user648026