Usuario:ManuelRomero/ApacheTomcat
De WikiEducator
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