miércoles, 28 de mayo de 2008

Configuración de Apache, Mod_JK y glassfish

A menudo se suele usar un apache como servidor de aplicaciones que redirecciona las peticiones a nuestro glassfish con nuestra aplicación J2EE. ¿Porqué se hacer esto? pues puede que tengas varios servicios en esa misma máquina, imaginate que quieres tener un servicio en php que va de sobra con un apache por el puerto 80, pero ahora necesitas colgar el nuevo servicio en J2EE para lo que apache no da soporte. Tambíen destacar que la gestión de peticiones y la compresión del tráfico de datos es mucho más eficiente en apache que en glassfish, por este motivo mucha gente suele usar estos dos servidores web en conjunción para trabajar. Y Mod_jk no es más que el modulo que nos permitira conectar apache y glassfish.


Instrucciones paso a paso:

a) aptitude install apache2 libapache2-mod-jk

b) Descargar:
http://java.net/download/javaee5/v2ur2/promoted/Linux/glassfish-installer-v2ur2-b04-linux.jar

c) Seguir estos pasos:
Establecer JAVA_HOME al JDK que tengamos.
Lanzar:
% sudo java -Xmx256m -jar glassfish-version-que-seea.jar
Esto descomprime el glassfish y crea una nueva estructura.
% cd glassfish
Damos permisos al ant de glassfish:
% chmod -R +x lib/ant/bin
% lib/ant/bin/ant -f setup.xml

Si queremos soporte a clustering (garantizaría disponibilidad absoluta del servicio), cambiamos lo anterior por:
% lib/ant/bin/ant -f setup-cluster.xml

d) Abrimos /etc/apache/httpd.conf y le copiamos estas líneas:

JkWorkersFile /etc/apache2/worker.properties
# Where to put jk logs
JkLogFile /var/log/apache2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Send all jsp requests to GlassFish
JkMount /*.jsp worker1
# Enviar peticiones de clg-web a Glassfish
#JkMount /clg-web/* worker1
JkMount /* worker1

e) ahora descargamos una instalación de tomcat exclusivamente para copiar el archivo tomcat-ajp.jar
Pensé que podría descargarlo de aquí (tomcat6), por aquello de ser una versión más nueva:
http://ftp.udc.es/apache-dist/tomcat/tomcat-6/v6.0.16/bin/apache-tomcat-6.0.16.tar.gz
Pero no trae el archivo tomcat-ajp.jar, así que lo sacamos de aquí:
wget http://archive.apache.org/dist/tomcat/tomcat-5/v5.5.16/bin/apache-tomcat-5.5.16.tar.gz

f) Copiamos esto:
/opt/glassfish/lib# cp /opt/apache-tomcat-5.5.16/server/lib/tomcat-ajp.jar .

g) Hacemos lo mismo con:
http://apache.rediris.es/commons/logging/binaries/commons-logging-1.1.1-bin.tar.gz
Y luego:
/opt/glassfish/lib# cp //tmp/commons-logging-1.1.1/commons-logging-1.1.1.jar commons-logging.jar
Y lo mismo con:
http://apache.rediris.es/commons/modeler/binaries/commons-modeler-2.0.1.tar.gz
Y con:
/opt/glassfish/lib# cp /tmp/commons-modeler-2.0.1/commons-modeler-2.0.1.jar commons-modeler.jar

g) Por último, habilitamos mod_jk, arrancando primero Glassfish (asadmin start-domain domain1)y luego:

asadmin create-jvm-options -Dcom.sun.enterprise.web.connector.enableJK=8009

No hay comentarios: