Diferencia entre revisiones de «Usuario:ManuelRomero/ApacheTomcat»
De WikiEducator
(Página creada con '=Apache y Tomcat Colaborando= *Ahora tenemos en nuestro sistemas dos servicios que responden a solicitudes web, pero son diferentes *Debemos otorgar a cada uno su funcionalidad …') |
(→Apache y Tomcat Colaborando) |
||
(3 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
+ | {{:Usuario:ManuelRomero/micursos/Tomcat/nav}} | ||
+ | <br> | ||
+ | |||
=Apache y Tomcat Colaborando= | =Apache y Tomcat Colaborando= | ||
*Ahora tenemos en nuestro sistemas dos servicios que responden a solicitudes web, pero son diferentes | *Ahora tenemos en nuestro sistemas dos servicios que responden a solicitudes web, pero son diferentes | ||
Línea 6: | Línea 9: | ||
#Si es una solicitud web estática o php la resuelve apache | #Si es una solicitud web estática o php la resuelve apache | ||
#Si es una solicitud de una aplicación web (jsp, servlet) se la entrega a tomcat para que resuelva el | #Si es una solicitud de una aplicación web (jsp, servlet) se la entrega a tomcat para que resuelva el | ||
− | * | + | *Al final es apache el que devuelve la solicitud al cliente |
*Este funcionamiento es totalmente trasparente para el usuario | *Este funcionamiento es totalmente trasparente para el usuario | ||
*Este escenario también es útil para que apache balancee la carga entre diferentes servidores de aplicaciones web y aligerar el trabajo | *Este escenario también es útil para que apache balancee la carga entre diferentes servidores de aplicaciones web y aligerar el trabajo | ||
Línea 24: | Línea 27: | ||
$a2enmod proxy_balancer | $a2enmod proxy_balancer | ||
$ /etc/init.d/apache2 restart | $ /etc/init.d/apache2 restart | ||
− | ===Directivas necesarias en | + | ===Directivas necesarias en '''''apache'''''=== |
Usaremos las siguientes directivas | Usaremos las siguientes directivas | ||
#ProxyPass | #ProxyPass | ||
#ProxyPassReverse | #ProxyPassReverse | ||
#ProxyRequests | #ProxyRequests | ||
− | #ProxyPreserveHost. | + | #ProxyPreserveHost. |
+ | |||
===ProxyPass=== | ===ProxyPass=== | ||
*Esta directiva tiene dos parámetros | *Esta directiva tiene dos parámetros | ||
Línea 42: | Línea 46: | ||
</Proxy> | </Proxy> | ||
</source> | </source> | ||
− | === | + | ===Concepto del proxy y el protocolo ajp=== |
*En lugar de usar http para comunicar apache-tomcat usamos ajp | *En lugar de usar http para comunicar apache-tomcat usamos ajp | ||
*Es un protocolo interno, veloz y que usa conexiones '''''TCP persistentes''''' | *Es un protocolo interno, veloz y que usa conexiones '''''TCP persistentes''''' | ||
Línea 87: | Línea 91: | ||
: Mantiene la cabecera http host original, en vez de reescribirla. | : Mantiene la cabecera http host original, en vez de reescribirla. | ||
* "DocumentRoot" y "<Directory /var/www/>" para que apunten a /var/www/ROOT | * "DocumentRoot" y "<Directory /var/www/>" para que apunten a /var/www/ROOT | ||
+ | |||
=Estructura y despliegue de una aplicación web= | =Estructura y despliegue de una aplicación web= |
Última revisión de 00:21 13 dic 2012
Apache y Tomcat Colaborando
- Ahora tenemos en nuestro sistemas dos servicios que responden a solicitudes web, pero son diferentes
- Debemos otorgar a cada uno su funcionalidad
- Podemos hacer que convivan juntos de la siguiente manera, la idea es la siguiente
- Todas las peticiones la recibe el servidor de apache
- Si es una solicitud web estática o php la resuelve apache
- Si es una solicitud de una aplicación web (jsp, servlet) se la entrega a tomcat para que resuelva el
- Al final es apache el que devuelve la solicitud al cliente
- Este funcionamiento es totalmente trasparente para el usuario
- Este escenario también es útil para que apache balancee la carga entre diferentes servidores de aplicaciones web y aligerar el trabajo
Módulos necesarios
- Necesitamos que apache incorpore una serie de módulos
- Cargaremos estos módulos para hacer que sea apache un proxy
- Para cargar módulos usamos el comando a2enmod apache to enabled module
- Este comando sirve para cargar módulos nuevos
- Ya sabemos que apache se gestiona por módulos
- La lista de módulos que necesitamos son
- proxy, proxyf_ajp, proxy_balancer
- A continuación rearrancamos el sistema
$a2enmod proxy $a2enmod proxyf_ajp $a2enmod proxy_balancer $ /etc/init.d/apache2 restart
Directivas necesarias en apache
Usaremos las siguientes directivas
- ProxyPass
- ProxyPassReverse
- ProxyRequests
- ProxyPreserveHost.
ProxyPass
- Esta directiva tiene dos parámetros
- El primero Indicamos las URL que delegamos (/)
- El segundo el servidor de aplicaciones que atenderá la solicitud
- En nuestro caso especificamos tomcat_cluster que está definido previamente
<Proxy balancer://tomcat_cluster> Order allow,deny Allow from all BalancerMember ajp://localhost:8009 </Proxy>
Concepto del proxy y el protocolo ajp
- En lugar de usar http para comunicar apache-tomcat usamos ajp
- Es un protocolo interno, veloz y que usa conexiones TCP persistentes
- Funciona en el puerto 8009
- Proxy balancer://tomcat_cluster
- definimos el cluster con nombre tomcat_cluster
- BalancerMember ajp://localhost:8009
- Se define un miembro a tomcat_cluster
- protocolo ajp
- IP localhost' o 127.0.0.1
- Puerto 8009 que es el que por defecto usa tomcat
- ProxyPass / balancer://tomcat_cluster/
- "/" y todo lo que cuelgue de ella, sea pasado al cluster del tomcat para que lo procese él.
- Order allow,deny
- Especifica el orde de asignación de permisos
- Primero las especificaciones de permisos allow all'
- Posteriormente restricciones especificadas en la opción deny
- Si en lugar de ajp queremos usar http deberíamos especificar
http://localhost:8080/ en lugar de ajp://localhost:8009
Parte para apache, otra para tomcat
- Queremos que apache devuelva los contenidos estáticos
- Estas peticiones deben comenzar por /static/
- Para que lo haga apache el segundo parámetro de esta directiva debe ser una negación !.
Configuración de virtualhost
- Debemos modificar el fichero de configuración de virtualhost
- Editamos /etc/apache2/sites-enabled/000-default
- Añadimos los siguientes elementos
<Proxy balancer://tomcat_cluster> Order allow,deny Allow from all BalancerMember ajp://localhost:8009 </Proxy> ProxyPreserveHost On ProxyPass /phpmyadmin/ ! ProxyPass / balancer://tomcat_cluster/ ProxyPassReverse / balancer://tomcat_cluster/
Conceptos de los parámetros
- ProxyPreserveHost On
- Mantiene la cabecera http host original, en vez de reescribirla.
- "DocumentRoot" y "<Directory /var/www/>" para que apunten a /var/www/ROOT