Usuario:ManuelRomero/ApacheTomcat

De WikiEducator
Saltar a: navegación, buscar



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
  1. Si es una solicitud web estática o php la resuelve apache
  2. 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

Proxy.png

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

  1. ProxyPass
  2. ProxyPassReverse
  3. ProxyRequests
  4. ProxyPreserveHost.

ProxyPass

  • Esta directiva tiene dos parámetros
  1. El primero Indicamos las URL que delegamos (/)
  2. El segundo el servidor de aplicaciones que atenderá la solicitud
  3. 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

Estructura y despliegue de una aplicación web