ManyComics.com

Blog de ManyComics.com

Powered by PHP
Powered by MySQL
Estás en: ManyComics > Blog Connect 300

Apache + Tomcat en SuSE Linux: Buscando tres pies al gato.

Logotipo de TomcatSi, como yo, tienes conviviendo en la misma máquina Apache y Tomcat bajo SuSE Linux y piensas que va siendo hora de prescindir en cierta medida de esas referencias al puerto 8080, integrando JSP con uno de los virtual host que hasta ahora vienes usando p.ej. con PHP, quizá mi caso te dé una referencia.

Voy a enumerar, a grandes rasgos, la serie de pasos seguidos para integrar JSP en la máquina en que vengo desarrollando manycomics. El objetivo es que tanto las páginas estáticas como las generadas por PHP sean servidas por el propio Apache, mientras que lo correspondiente a JSP se lo dejaremos a Tomcat.

Para lo que sigue a continuación doy por hecho que se cuenta con Apache 2 y Tomcat 5 bajo SuSE Linux 10, todo instalado y configurado correctamente.

Instalación de mod_jk con YaSTLo primero de todo es instalar mod_jk, es decir, el correspondiente conector entre Apache y Tomcat, así que ejecuto YaST e instalo mod_jk-ap20.

Tras esto se puede comprobar que se cuenta con /usr/lib/apache2/mod_jk.so; ahora hay que indicarle a Apache que debe cargar el módulo, por tanto paso a /etc/sysconfig/ y edito el fichero apache2; busco la línea en que se asigna APACHE_MODULES y añado jk, así:

    APACHE_MODULES="access ... jk"

Vamos ahora con los virtual host; edito el fichero /etc/apache2/vhost.d/manycomics.conf y añado una línea JkMount al final:

    <VirtualHost *:80>
    ...
    <IfModule mod_jk.c>
    JkMount /*.jsp ajp13
    </IfModule>
    </VirtualHost>

Bien, vamos a indicarle ahora a Tomcat donde encontrar manycomics, que en este caso cae fuera de su estructura de directorios. Edito /srv/www/tomcat5/base/conf/server.xml y añado un nuevo tag Host (www.manycomics.des es el nombre que utilizo para las pruebas de desarrollo, evidentemente hay una línea al efecto en mi fichero hosts):

    <Host name="www.manycomics.des" debug="0"
    appBase="/home/www/proyectos/manycomics"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="." debug="0">
    </Context>
    </Host>

Sí, tiene un Context vacío, si no se incluye podemos encontrarnos después con un bonito mensaje “No Host matches server name …”.

Ahora voy a aprovechar dos ficheros incluidos en el paquete de mod_jk y que bastará con modificar las rutas que sea preciso. Paso a /usr/share/doc/packages/mod_jk-ap20/ y copio jk.conf a /etc/apache2/conf.d/ y workers.properties a /etc/tomcat5/base/. En este último cambio un par de líneas:

    workers.tomcat_home=/srv/www/tomcat5/base/
    workers.java_home=$JAVA_HOME

Y por lo que respecta a la configuración suficiente por el momento. Paro Tomcat y Apache y vuelvo a arrancarlos (”rctomcat5 start” y “rcapache2 start” o bien con el correspondiente “/etc/init.d/… start”, a gusto de cada cual).

Bien, vamos con una pequeña prueba. En el directorio de manycomics (/home/www/proyectos/manycomics) creo en primer lugar un directorio ROOT, un directorio jsp/, el correspondiente WEB-INF/ y, seguidamente, un fichero index.jsp en jsp/ tan sencillo como este:

    <html>
    <head>
    <title>Test JSP</title>
    </head>
    <body>
    Hola mundo!<p>
    2 + 2 = ${2+2}
    </body>
    </html>

Abro un navegador… indico la URL… http://www.manycomics.des/jsp/index.jsp … y el resultado:

    Hola mundo!

    2 + 2 = 4

Sí señor, ¡¡funciona!!, ya podemos olvidarnos del famoso puerto 8080 :-)

Resultado de ejecución JSP visto con Konqueror

Google