Apache con Tomcat

3
27492

Apache con Tomcat

Quizás una de las métricas
de rendimiento en las que Tomcat no sale bien parado es en el
servicio de contenidos estáticos. Menos aún frente a
los rendimientos que tiene Apache Web Server.

¿y porqué elegir entre
ellos cuando fácilmente podemos tener a ambos trabajando en lo
que mejor sabe hacer cada uno? De esta forma, el Apache Web Server
recibirá todas las peticiones del usuario resolviendo las de
contenido estático y delegando las de contenido dinámico
(JSPs, Servlets, etc.).

Vamos a poner a funcionar:

  • Apache 2.2.4

  • mod_jk-apache-2.2.4.so

  • mod_rewrite.so

  • Tomcat 5.5

Dado que la instalación de
Apache Web Server o Tomcat 5.5 no tiene secretos y ya existen
numerosos tutoriales sobre el tema, pasamos directamente a su
configuración para trabajar juntos. La misma consiste en:

  • Instalar y configurar el mod_jk

  • Instalar y configurar el
    mod_rewrite

  • Trasladar el contenido estático
    a Tomcat

Instalar y configurar el mod_jk

Desde
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/

buscaremos la carpeta correspondiente al sistema
operativo que estamos utilizando, luego la versión 1.2.21 (versión
estable en el momento de este tutorial) y elegiremos la librería a descargar
en función de la versión de nuestro apache (en nuestro caso: mod_jk-apache-2.2.4.so
)

 

Y lo guardaremos con el nombre
mod_jk.so en la carpeta de nuestro servidor apache /modules (en mi
caso “C:\Program Files\Apache Software
Foundation\Apache2.2\modules”)

Una vez copiado, abriremos el fichero
de configuración de apache conf/httpd.conf (en mi caso,
C:\Program Files\Apache Software
Foundation\Apache2.2\conf\httpd.conf) e incluiremos la siguiente
línea al final del fichero:

#Carga el mod_jk module
LoadModule jk_module  modules/mod_jk.so
# Lo configura workers.properties
JkWorkersFile conf/workers.properties
#Dónde poner los logs logs
JkLogFile logs/mod_jk.log
#Nivel de log [debug/error/info]
JkLogLevel info
#Formato del log
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
#Manda toda url que contenga /miaplicacion/ al tomcat ajp13w
JkMount /miaplicacion/* miservidor

En la misma carpeta se crea el fichero worker.properties

worker.list=miservidor
worker.miservidor.port=8009
worker.miservidor.host=localhost
worker.miservidor.type=ajp13
worker.miservidor.socket_timeout=3600

Donde estamos definiendo el servidor
Tomcat llamado miservidor
que va a contener la aplicación que resuelva /miaplicacion/*.

Con un poco más de configuración
incluso podríamos definir varios servidores Tomcats para que
el Apache balancee la carga entre ellos, pero eso será parte
de otro tutorial.

Instalar y configurar el mod_rewrite

Con esta configuración todo el
contenido (estático y dinámico) se estaría
ruteando para que lo resuelva el Tomcat. Ahora vamos a ver cómo
configurar Apache para que sólo envíe el dinámico
(JSPs, servlets, etc.) y resuelva él el estático.

El mod_rewrite ya viene instalado, pero
no cargado por lo que deberemos editar el fichero httpd.conf y quitar
el comentario de:

LoadModule rewrite_module modules/mod_rewrite.so

Además, debemos activarlo y
configurarlo añadiendo al final del fichero pero antes de la
configuración de mod_jk:

#Activación
RewriteEngine on
#Configuración
RewriteRule ^(.*)(png|jpg|gif|css|js)$ /$1$2 [NC,L]
RewriteRule ^/(.*)$ /miaplicacion/$1 [PT,QSA,NC,L]

La configuración de las
RewriteRule
se basan en expresiones regulares fácilmente descifrables de
las que puedes aprender más en
http://httpd.apache.org/docs/trunk/misc/rewriteguide.html
.

Trasladar el contenido estático a Tomcat

Trasladar el contenido estático a Tomcat consiste en copiar
las carpetas del contenido estático (típicamente
/imagenes, /js, /css, etc.) a la carpeta /htdocs (en mi caso,
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs)
anteponiéndo una carpeta con el nombre de la aplicación,
es decir: /htdocs/miaplicacion/imagenes.

En Autentia utilizamos estas y otras configuraciones para
optimizar el rendimiento de entornos de producción medianos y
grandes, por lo que no dudes en ponerte en contacto con nosotros en
www.autentia.com .

3 COMENTARIOS

  1. Una pregunta, entiendo que cuando dices lo de trasladar el contenido estático al Tomcat, ¿quieres decir Apache? El turorial esta chulo.

  2. Cierto,el contenido estático lo debería atender apache mientras que la parte de interacción con servlets lo hace tomar que es la parte dinámica

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad