• Like
  • Save
Apache Tomcat 8: integración con Apache Server (con mod_jk)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Apache Tomcat 8: integración con Apache Server (con mod_jk)

  • 1,406 views
Published

Tutorial en el que se integra un servidor Tomcat (v8) previamente instalado con un servidor web Apache con el fin de servir aplicaciones web, ambos corriendo bajo un entorno Linux (Ubuntu) y …

Tutorial en el que se integra un servidor Tomcat (v8) previamente instalado con un servidor web Apache con el fin de servir aplicaciones web, ambos corriendo bajo un entorno Linux (Ubuntu) y utilizando el módulo mod_jk para realizar las conexiones.
Durante el desarrollo se tratará la creación de un Tomcat worker personalizado, además de la resolución de algunos posibles problemas que puedan aparecer durante la configuración.

Para aprender a instalar y configurar un servidor Apache y/o Tomcat, puedes visitar otras presentaciones de mi perfil.

Published in Self Improvement
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,406
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. IES Gran Capitán Módulo: Despliegue de Aplicaciones Web Ciclo Formativo de Grado Superior “Desarrollo de aplicaciones Web” Práctica 12: Integración de Apache Server con Tomcat Fecha entrega: 13/01/2014 Autor: Pablo Medina Suárez IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://informatica.iesgrancapitan.org informatica@iesgrancapitan.org
  • 2. Práctiac 12: Integrar Apache con Tomcat 2 1 ÍNDICE 1 ÍNDICE 2 2 INTRODUCCIÓN 3 3 DESARROLLO DE LA PRÁCTICA 4 PREGUNTAS: 9 3.1 ¿QUÉ NUEVO MÓDULO DE APACHE HAS NECESITADO INSTALAR Y ACTIVAR? 9 3.2 DEFINE WORKER. CREA UN WORKER PARA LAS PRUEBAS QUE SE LLAME WORKER[TUAPELLIDO]. 9 3.3 ¿QUÉ FICHEROS DE CONFIGURACIÓN VAS A TENER QUE MODIFICAR? CAPTURA PANTALLAS DE TODOS CON LA PARTE QUE HAS MODIFICADO. 9 3.4 ¿QUÉ FICHEROS DE LOG HAS REVISADO? CAPTURA PANTALLAS DE TODOS ELLOS TANTO SI SE MUESTRA ALGÚN ERROR COMO SI NO. 10 3.5 INDICA LOS ERRORES QUE HAN IDO APARECIENDO Y CÓMO LOS HAS SOLUCIONADO. 11 3.5.1 ERROR: /EXAMPLES/ DENTRO DE OTRO DIRECTORIO: 11 3.5.2 ERROR: APACHE NOS DA UN ERROR AL INICIARLO: 11 3.5.3 ERROR: COULD NOT FIND WORKER JK-MANAGER Y JK-STATUS: 12 3.5.4 ERROR: LA PÁGINA NOS DEVUELVE UN ERROR 503 (SERVICIO NO DISPONIBLE): 13 3.5.5 ERROR: LA PÁGINA NOS DEVUELVE UN ERROR 404 (NO ENCONTRADO): 13 3.6 OPCIONAL: INVESTIGA EN QUÉ CASOS PUEDE SER INTERESANTE DEFINIR VARIOS "WORKERS". 13 3.7 OPCIONAL: PONLO EN PRÁCTICA CONFIGURANDO UN WORKER MÁS PARA OTRO DE TUS SERVIDORES WEB VIRTUAL. 13 3.8 OPCIONAL: INVESTIGA TAMBIÉN CÓMO USAR "JKMOUNTCOPY ON" EN EL FICHERO JK.CONF PARA EVITAR TENER QUE COPIAR LA CONFIGURACIÓN SOBRE LOS FICHEROS JK_ESTATUS, JK_LOG, ETC A CADA SERVIDOR WEB VIRTUAL. PRUÉBALO EN TU CONFIGURACIÓN. 13 4 CONCLUSIÓN 15 5 BIBLIOGRAFIA 16 IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
  • 3. Práctiac 12: Integrar Apache con Tomcat 2 3 INTRODUCCIÓN Objetivo: Usar Apache para servir las páginas estáticas y Tomcat para ejecutar servlets. Al acceder desde el navegador a un servlet http://localhost/examples/[pagina con servlets] será Apache el que detecta que se trata de un server y que necesita la ayuda de Tomcat para ejecutarlo de modo que reenvía la petición a Tomcat. Entonces estaremos haciendo uso de Tomcat como contenedor pero sin acceder directamente a él (indicando el puerto de Tomcat como hicimos en la práctica anterior): http://localhost:8080/examples/[pagina con servlets] Requisitos: - Tener Tomcat instalado. Pasos: Lee la documentación al respecto subida a moodle (documento paso a paso). Documenta la instalación, configuración y ejecución respondiendo al mismo tiempo a las preguntas siguientes. Nota: la última pregunta es opcional y subirá la nota de la práctica. IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
  • 4. Práctiac 12: Integrar Apache con Tomcat 4 3 DESARROLLO DE LA PRÁCTICA Antes de comenzar, iniciamos en el servidor tanto el servicio Apache como el de Tomcat, y comprobamos que funcionan correctamente. A su vez, recordamos las rutas donde están instalados los servicios y los programas necesarios, como Java, etc. Vemos que comprueban correctamente, así que vamos a comprobar si Apache es capaz de ejecutar algún Servlet por sí mismo (lo cual comprobaremos que no será así). Accedemos al directorio de servlets de ejemplo de Tomcat y copiamos el directorio de aplicaciones de ejemplo de Tomcat (examples) en el directorio de Apache: Ahora abrimos el navegador y accedemos a la dirección correspondiente para comprobar si funciona la aplicación: Como puede verse en la imagen, el resultado obtenido no es el deseado, porque el navegador nos ha mostrado el código del documento en lugar del resultado, ya que no ha sido interpretado por el servidor. Por lo tanto, tenemos que encontrar la forma de que Apache recurra a Tomcat para ejecutar las aplicaciones. IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
  • 5. Práctiac 12: Integrar Apache con Tomcat 5 Tenemos que instalar y activar el módulo jk (libapache2-mod-jk), así que abrimos un terminal e introducimos lo siguiente, reiniciando además el servicio de Apache: Hecho lo anterior, comprobamos que nos han aparecido dos archivos nuevos, jk.conf y jk.load, tanto en el directorio mods-available como en mods-enabled del servicio Apache: Ya tenemos instalado el módulo necesario, lo siguiente a realizar las configuraciones necesarias en los ficheros de configuración. En primer lugar, abrimos el fichero /etc/libapache2-mod-jk/workers.properties y modificamos las siguientes líneas: Reemplazamos por la ruta donde está instalado Tomcat IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
  • 6. Práctiac 12: Integrar Apache con Tomcat 6 Reemplazamos por la ruta de instalación de Java Añadido de un nuevo worker, con el que trabajaremos en el desarrollo de ésta práctica Configuraciones realizadas para el nuevo worker, nótese que el puerto utilizado por nuestro worker debe ser el mismo que uno de los utilizados en el fichero server.xml Al haber incluido un nuevo worker, debemos hacer la siguiente modificación en el fichero server.xml de Tomcat: Aquí puede verse la parte del archivo de configuración server.xml, donde se ve que el puerto utilizado es el 8009 y se ha creado otro conector para el 8010 IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
  • 7. Práctiac 12: Integrar Apache con Tomcat 7 Guardamos los cambios y ahora abrimos y pasamos a configurar el fichero /etc/apache2/mods-enabled/jk.conf, donde hacemos los siguientes cambios: Por orden: se comenta la línea donde se indica la ruta del fichero workers.properties, se indica dónde y qué nombre tendrá el fichero de log de jk, y cuál el nivel de log (error, para que muestre errores) NOTA: he comentado la línea JkWorkersFile debido a que la añadiremos más adelante para evitar un error causado al utilizar un Virtual Host. Abrimos el fichero de configuración del Virtual Host desde el cual queremos ejecutar los servlets, en este caso, el sitio por defecto (default) y añadimos lo siguiente: Entre la etiqueta VirtualHost añadimos la directiva JkMountCopy, para cargar las direcciones montadas en httpd.conf, que serán interpretadas por el servidor Tomcat, en lugar de por Apache. Por último, se añade la directiva JkMountCopy On, que veremos en la pregunta correspondiente el motivo por el que lo he utilizado. IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
  • 8. Práctiac 12: Integrar Apache con Tomcat 8 Ahora, abrimos el fichero /etc/apache/httpd.conf, en el cual añadimos lo siguiente: Se emplea la directiva Include para que se carguen las configuraciones del módulo jk, contenidas en el fichero indicado. E insertamos la línea que se comentó anteriormente para evitar un error con Apache. Montamos con JkMount los directorios cuyos documentos serán interpretados por Tomcat. Con el uso de la directiva JkMount le indicamos al servidor qué direcciones serán interpretadas por el servidor Tomcat, en este caso, todos los documentos con extensión .jsp y todo lo contenido en el directorio /examples/ de nuestro servidor. A continuación, le indicamos el worker que se encargará de servir las aplicaciones, en este caso, el que hemos creado anteriormente. Ya sólo nos queda reiniciar tanto el servicio Tomcat como el servidor Apache para que los cambios se tengan en cuenta y probamos de nuevo a ejecutar alguna de las servlets. Por lo que abrimos el navegador y, utilizando la dirección http://localhost/examples/, elegimos alguna de las aplicaciones: Otra de las aplicaciones de ejemplo: IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
  • 9. Práctiac 12: Integrar Apache con Tomcat 9 Y con esto, ¡ya tenemos integrado nuestro servidor Apache con Tomcat para servir servlets! PREGUNTAS: 3.1 ¿Qué nuevo módulo de apache has necesitado instalar y activar? Se ha instalado y activado el módulo jk (libapache2-mod-jk). Con esto, es posible establecer conexiones entre servidores utilizando el protocolo AJP. 3.2 Define worker. Crea un worker para las pruebas que se llame worker[tuapellido]. Un worker es una instancia de Tomcat encargada de ejecutar las servlets enviadas como petición de un servidor web como, por ejemplo, un servidor Apache, ya que éste es incapaz de ejecutarlas por sí mismo. Creación del worker personalizado: Indicamos qué worker servirá los ficheros de los directorios de nuestro servidor: 3.3 ¿Qué ficheros de configuración vas a tener que modificar? Captura pantallas de todos con la parte que has modificado. Se han modificado los archivos /etc/libapache2-mod-jk/workers.properties, /etc/apache2/mods-enabled/jk.conf, server.xml (para comprobar el puerto utilizado), y el fichero de configuración del Virtual Host. Pueden verse las modificaciones realizadas en los ficheros más arriba, durante el desarrollo de la práctica. IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
  • 10. Práctiac 12: Integrar Apache con Tomcat 3.4 10 ¿Qué ficheros de log has revisado? Captura pantallas de todos ellos tanto si se muestra algún error como si no. He utilizado, principalmente, el fichero /var/log/apache2/mod_jk.log, el cual me ha sido de mucha utilidad para detectar errores durante el desarrollo de la práctica. En el siguiente punto pueden verse imágenes donde se detectan errores mediante la consulta de este fichero. Otros ficheros que también son de utilidad son el fichero /var/log/apache2/error.log: Y el fichero /var/log/apache2/Access.log: IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
  • 11. Práctiac 12: Integrar Apache con Tomcat 3.5 11 Indica los errores que han ido apareciendo y cómo los has solucionado. 3.5.1 Error: /examples/ dentro de otro directorio: Uno de los primeros errores que he cometido, y que ha sido catastrófico al no conseguir que Tomcat accediera a las aplicaciones (mostrando un error 404), ha sido insertar el directorio /examples/ dentro de un directorio llamado /webapps/. Para solucionarlo, tan sólo he tenido que sacar el directorio a /var/www, quedando de la siguiente manera: Acto seguido, he eliminado el directorio /webapps/, ya que no tiene utilidad ninguna. 3.5.2 Error: Apache nos da un error al iniciarlo: Al reiniciar Apache, nos devuelve el siguiente error: Nos indica que la directiva JkWorkersFile sólo puede emplearse una vez. Para solucionarlo, tenemos que comentar la siguiente línea en el fichero /etc/apache2/modsenabled/jk.conf: En cambio, la misma va incluida en el fichero /etc/apache2/httpd.conf: IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
  • 12. Práctiac 12: Integrar Apache con Tomcat 12 3.5.3 Error: Could not find worker jk-manager y jk-status: Revisando el fichero de log /var/log/apache2/mod_jk.log encontramos las siguientes líneas, indicando errores relacionados con el módulo jk: Esto es causado a que estamos empleando el módulo en un Virtual Host, por lo que tenemos que hacer como se nos indica en el fichero de configuración, y solucionar el problema comentando las siguientes líneas: IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
  • 13. Práctiac 12: Integrar Apache con Tomcat 13 3.5.4 Error: la página nos devuelve un error 503 (servicio no disponible): Si hacemos uso, una vez más, del fichero mod_jk.log, nos encontramos los siguientes errores: El error puede estar causado porque no tenemos iniciado el servicio de Tomcat, o porque tenemos configurado un puerto equivocado en el fichero $CATALINA_HOME/conf/server.xml. 3.5.5 Error: la página nos devuelve un error 404 (no encontrado): Este error puede tener infinitas causas, en mi caso, se me mostraba cuando aún no había solucionado el error 3.5.1, porque las aplicaciones estaban intentando acceder a una dirección distinta a la que tenían programada, por lo que la dirección devuelta no podía ser encontrada por el servidor. 3.6 Opcional: investiga en qué casos puede ser interesante definir varios "workers". Hay varios casos en los que trabajar con varios workers resulta útil:    Para servir distintos contextos utilizando workers Tomcat distintos, para proporcionar un entorno de desarrollo donde los desarrolladores compartan el mismo servidor pero cada uno utilizando su propio worker. Cuando queremos que cada host virtual utilice su propio worker. De esta manera, se establece una clara separación entre cada sitio web, siendo de utilidad, por ejemplo, en servidores compartidos por varias empresas, donde cada una aloja su propio sitio web. Para proporcionar balanceo de carga utilizando múltiples workers, cada uno corriendo en una máquina distinta, y distribuyéndose las peticiones entre ellos. De esta forma se consigue una alta disponibilidad y mejora de rendimiento y número máximo de usuarios de las aplicaciones servidas. 3.7 Opcional: ponlo en práctica configurando un worker más para otro de tus servidores web virtual. 3.8 Opcional: investiga también cómo usar "JkMountCopy On" en el fichero jk.conf para evitar tener que copiar la configuración sobre los ficheros jk_estatus, jk_log, etc a cada servidor web virtual. Pruébalo en tu configuración. He utilizado esta directiva desde el primer momento, ya que facilita el desarrollo de la práctica. Esta directiva, si está activada en un host virtual, copiará todo lo montado por el servidor principal (utilizando JkMount o JkUnMount) al sitio que la utilice. IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
  • 14. Práctiac 12: Integrar Apache con Tomcat 14 La configuración por defecto es “Off”, es decir, está apagada. Para activarla en uno de nuestros host virtuales, tenemos que incluir lo siguiente en el fichero de configuración de dicho sitio: De esta forma, se copiaran en este sitio los mounts cargados por el servidor global mediante el uso de JkMount, en este caso, cargamos desde el /etc/apache2/httpd.conf lo siguiente: De esta manera, nos ahorramos tener que copiar en cada host virtual la configuración de los ficheros del módulo jk. IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
  • 15. Práctiac 12: Integrar Apache con Tomcat 15 4 CONCLUSIÓN En esta práctica he aprendido a integrar un servidor web con el servidor Tomcat instalado previamente para poder servir las servlets que Apache no puede servir por sí mismo. Todo ello gracias a la instalación y uso de mod_jk. Para ello, se ha tratado el uso de los workers de Tomcat, y los distintos ficheros de configuración, tanto de Apache, como de Tomcat y del propio módulo utilizado. Además, he resuelto los distintos errores aparecidos durante la práctica mediante el uso de los ficheros de log, de la documentación, y del todopoderoso Google. IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org
  • 16. Práctiac 12: Integrar Apache con Tomcat 16 5 BIBLIOGRAFIA  Integración de Tomcat y Apache paso a paso. Consultado en: http://moodle.iesgrancapitan.org/mod/resource/view.php?id=6234  Documentación de Apache Tomcat, Connectors. Consultado en: http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html  Documentación de Apache Tomcat, JkMountCopy On Consultado en: http://tomcat.apache.org/connectors-doc/reference/apache.html  Tomcat, introducción en castellano. Workers Tomcat. Consultado en: http://www.programacion.com/articulo/tomcat_-_introduccion_134/3 IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ informatica@iesgrancapitan.org