Apache con Tomcat

En este tutorial vamos a poder ver y comprobar como Apache Web Server y Tomcat pueden convivir perfectamente uno con el otro para así poder aumentar el rendimiento total de nuestra aplicación

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 .

Comentarios

3 respuestas

  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

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

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

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

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Ingeniero en Informática

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

Tutoriales
La segmentación predictiva en tiempo real optimiza la publicidad digital con IA y datos masivos, mejorando conversión y eficiencia en la inversión publicitaria.
Tutoriales
Desarrollo de apps en Android Automotive OS: configuración, interacción con el Host, UI con Car App Library, navegación y pruebas en emulador
Tutoriales
Aprende a implementar un Outbox Transaccional con AsyncAPI, SpringModulith y ZenWaveSDK, garantizando la consistencia y externalización eficiente de eventos en arquitecturas distribuidas.