|
Hermosillo, Sonora.-
(20 de julio del 2009)
La instalación por default de Tomcat en CentOS 5.x no funciona correctamente con el conector de configuración de Plesk. A continuación un resumen de la solución encontrada.
Desde la instalación y configuración del servidor CentOS 5.2 había tenido problemas para que funcionara correctamente con el panel de Control Plesk 8.x. No funcionaba la integración porque el servicio Tomcat no arracaba correctamente al iniciar el servidor.
Por default en CentOS 5.x se puede instalar la versíón 5.5 del contenedor de aplicaciones web Tomcat. La versión 5.5 se considera estable, a pesar que no es la última en la línea de desarrollo. A la fecha, la última versión disponible de Tomcat es la 6.0.20. La instalación de Tomcat en CentOS 5 no es problemática, y automáticamente instala una serie de dependencias. Entre ellas se encuentra el paquete jpackage. Este último paquete organiza la estructura de directorios de las aplicaciones Java de una manera que es relativamente sencillo intercambiar versiones de la misma aplicación como de la máquina virtual en uso, manejando los directorios de trabajo como ligas simbólicas a directorios reales.
Cuando se iniciaba el servicio Tomcat estaba encontrando el siguiente error:
java.io.FileNotFoundException: /usr/share/tomcat5/common/lib/[jdbc-stdext].jar ( No such file or directory) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.(FileInputStream.java:106) at org.apache.catalina.util.ExtensionValidator.addSystemResource(Extensi onValidator.java:209) ...
El error se generaba para varias otras extensiones estándar del software. En resumen, el servicio arrancaba, pero no era capaz de manejar un servlet o JSP mas allá del "Hola Mundo". La solución en mi caso particular fué la instalar manualmente el JDK de Sun. Cabe aclarar que está disponible en el depósito de paquetes de Yum una versión muy reciente de OpenJDK, pero de igual manera no dio resultado.
Los pasos para instalar el JDK 1.6.0_11 de Sun Microsystems es como sigue.
Va a ser necesario reconstruír el paquete, y para ello requerimos crear y/o configurar un archivo llamado $HOME/.rpmmacros. Este archivo se crea en el directorio del usuario, pero no se recomienda que se utilice el usuario root para esta tarea. El contenido de $HOME/.rpmmacros es:
%_topdir /home//rpmbuild %_tmppath %{_topdir}/tmp
Hay que reemplazar por el nombre de nuestro usuario. En este caso estamos especificando un directorio ~/rpmbuild, el cual es necesario crearlo antes de iniciar el proceso. Creamos adicionalmente los siguientes directorios:
$ mkdir -p ~/rpmbuild/{SOURCES,SRPMS,SPECS,RPMS,tmp,BUILD}
Seguidamente instalamos los paquetes necesarios para construír un archivo rpm.
# yum install -y rpm-build gcc gcc-c++ redhat-rpm-config
En este punto, si no hemos instalado el paquete "jpackage", es momento de hacerlo.
# yum install jpackage-utils
El siguiente paso es obtener el JDK update 11 desde el sitio web de Sun Microsystems. Dependiendo de nuestra plataforma (x86 o x86_64) debemos descargar ya sea jdk-6u11-linux-i586.bin o bien jdk-6u11-linux-x64.bin (para arquitecturas de 64 Bits). Este archivo se coloca en ~/rpmbuild/SOURCES.
Seguidamente necesitamos el archivo correcto para jpackage. Este archivo lo encontraremos en el depósito de software de jpackage. Para esta versión del JDK requerimos el archivo java-1.6.0-sun-1.6.0.11-1jpp.nosrc.rpm. Este archivo lo colocamos directamente en el direcrtorio ~/rpmbuild:
$ cd ~/rpmbuild/ $ curl -L -O http://mirrors.dotsrc.org/jpackage/1.7/generic/SRPMS.non-free/java-1.6.0-sun-1.6.0.11-1jpp.nosrc.rpm
Y procedemos a reconstruír los rpm.
$ rpmbuild --rebuild java-1.6.0-sun-1.6.0.11-1jpp.nosrc.rpm
El resultado serán varios archivos rpm:
Wrote: /home/usuario/rpmbuild/RPMS/i586/java-1.6.0-sun-1.6.0.11-1jpp.i586.rpm Wrote: /home/usuario/rpmbuild/RPMS/i586/java-1.6.0-sun-devel-1.6.0.11-1jpp.i586.rpm Wrote: /home/usuario/rpmbuild/RPMS/i586/java-1.6.0-sun-src-1.6.0.11-1jpp.i586.rpm Wrote: /home/usuario/rpmbuild/RPMS/i586/java-1.6.0-sun-demo-1.6.0.11-1jpp.i586.rpm Wrote: /home/usuario/rpmbuild/RPMS/i586/java-1.6.0-sun-plugin-1.6.0.11-1jpp.i586.rpm Wrote: /home/usuario/rpmbuild/RPMS/i586/java-1.6.0-sun-fonts-1.6.0.11-1jpp.i586.rpm Wrote: /home/usuario/rpmbuild/RPMS/i586/java-1.6.0-sun-alsa-1.6.0.11-1jpp.i586.rpm Wrote: /home/usuario/rpmbuild/RPMS/i586/java-1.6.0-sun-jdbc-1.6.0.11-1jpp.i586.rpm
Los cuales procedemos a instalar.
# yum --nogpgcheck localinstall ~/rpmbuild/RPMS/i586/java-1.6.0-*.rpm
Finalmente configuramos el sistema alternatives con la nueva versión del JDK.
# alternatives --config java There is 1 program that provides 'java'. Selection Command ----------------------------------------------- *+ 1 /usr/lib/jvm/jre-1.6.0-sun/bin/java Enter to keep the current selection[+], or type selection number:
En este caso particular se nos presenta la opción default y recomendada. Si en nuestro sistema contamos con otras versiones de la JDK, aparecerán en este listado. Es necesario seleccionar el número correspondiente e indicarlo al sistema. Probamos la versión del JDK:
$ java -version java version "1.6.0_11" Java(TM) SE Runtime Environment (build 1.6.0_11-b03) Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)
Ya con el JDK configurado, procedemos a reiniciar el servicio Tomcat:
# /etc/init.d/tomcat5 restart
Y ya no encontraremos los mensajes de error en el log del software. Los logs de Tomcat los podemos encontrar en /var/log/tomcat/catalina.out. En este punto, el deploy de una aplicación web a través de la consola de administración o a través del panel de control Plesk debe ocurrir sin problemas.
|