JBoss for dummies (P1): Instalación

En este primer post de una mini-serie sobre JBoss pretendo cubrir algunos de los aspectos básicos de su instalación y gestión, principalmente en entornos RHEL. Para otros entornos lo mejor es verificar su compatibilidad en la [Matriz de compatibilidad de JBoss][].

La primera elección, típicamente, es decidir si queremos una instalación paquetizada (RPM) o standalone (.zip/.tgz bajado de jboss.com) . Las consideraciones fundamentales son:

Paquetes RPM :

  • Se integra con el sistema operativo, con lo que la gestión de actualizaciones y dependencias es mucho más sencilla. Como contrapartida, es más complicado hacer una instalación mínima.
  • El ciclo de empaquetado es más largo, lo que significa que Red Hat no publica versiones tan frecuentemente como en los paquetes standalone. Por ejemplo a día de hoy no existen paquetes para Red Hat Satellite de JBoss EAP 5.
  • El soporte se da por departamentos distintos dentro de Red Hat

Versión standalone de JBoss :

  • Es una distribución autocontenida, nos bastará copiar el directorio de instalación de un servidor a otro para replicar una instalación.
  • Las actualizaciones de seguridad serán manuales, con todos los problemas que esto conlleva al no estar automatizadas.

Para esta serie de artículos asumiremos trabajar con la versión EAP 5.0 Standalone descargada de la web [www.jboss.com][] sobre RHEL 5.

Para la instalación, basta descomprimir el fichero descargado en el directorio que deseemos, por ejemplo /opt . Una vez descomprimido obtendremos una estructura de directorios parecida a la siguiente :

  • /opt/$JBOSS-RELEASE/jboss-as
    Este será el directorio base de nuestra instalación de JBoss. Podemos apuntar la variable de entorno $JBOSS_HOME a este directorio para mayor comodidad.
  • /opt/$JBOSS-RELEASE/jboss-as/bin
    Este es el directorio donde residen los scripts dependientes del entorno (UNIX, Windows) para la arranque y parada del servidor de aplicaciones, así como el fichero de configuración run.conf que utilizan todos las instancias del mismo.
  • /opt/$JBOSS-RELEASE/jboss-as/common
    Este directorio contendrá todas las librerías comunes a todos y cada uno de las instancias.
  • /opt/$JBOSS-RELEASE/jboss-as/common
    Mismo que el directorio anterior; este sería el lugar típico donde instalar librerías de uso común para todas las instancias, como conectores JDBC para Oracle, MySQL, etc
  • /opt/$JBOSS-RELEASE/jboss-as/lib
    Este directorio contiene todas las librerías internas del Microcontainer de Jboss. Típicamente no es necesario alterar nada del mismo, ni añadir ficheros nuevos, por lo que podría considerarse como read-only.
  • /opt/$JBOSS-RELEASE/jboss-as/client (opcional)
    Directorio que contienen librerías de conexión para clientes que necesiten conectarse directamente a JBoss. Lo normal es borrar este directorio.
  • /opt/$JBOSS-RELEASE/jboss-as/docs (opcional)
    Este directorio contienen DTDs, schemas y ejemplos de configuración de JBoss. Se puede borrar igualmente.
  • /opt/$JBOSS-RELEASE/jboss-as/server
    Este es el directorio típico de trabajo. Todos los directorios que cuelgan de aquí son conocidos como instances (instancias), que son configuraciones específicas de JBoss con un conjunto de aplicaciones a desplegar.
  • /opt/$JBOSS-RELEASE/jboss-as/server/{all,default,minimal,standard,production}
    Estas son las instancias por defecto que se distribuyen con JBoss. Para empezar a trabajar basta con copiar cualquiera de ellas a un nuevo directorio y empezar a modificarla, ej: cp -r production mi_instancia .
  • /opt/$JBOSS-RELEASE/jboss-as/server/$INSTANCE/
  • /opt/$JBOSS-RELEASE/jboss-as/server/$INSTANCE/conf
    Contiene los ficheros de configuración que se evalúan únicamente al inicio del servidor de aplicaciones, es decir, cualquier cambio que hagamos aquí típicamente requerirá el reincicio de JBoss (excepto la excepción conocida de log4j jboss-log4j.xml, que relee su fichero de configuración cada 60 secs).
  • /opt/$JBOSS-RELEASE/jboss-as/server/$INSTANCE/deploy
    Aquí residen los desplegables, es decir, toda aplicación que deseemos que JBoss despliegue al inicio, como por ejemplo nuestras aplicaciones :-) . JBoss y Red Hat soportan el despliegue en caliente de aplicaciones, aunque como procedimiento para curarse en salud, lo mejor es reiniciar siempre JBoss.
  • /opt/$JBOSS-RELEASE/jboss-as/server/$INSTANCE/deployers
    Contienen algunos desplegadores legacy; normalmente siempre deberemos operar sobre el directorio deployers por lo que este puede ser obviado.
  • /opt/$JBOSS-RELEASE/jboss-as/server/$INSTANCE/lib
    Este directorio de librerías solamente está poblado por las librerías comunes a las aplicaciones desplegadas en esta instancia. No se comparte con ninguna otra instancia.
  • /opt/$JBOSS-RELEASE/jboss-as/server/$INSTANCE/others
    Pueden existir otros directorios como farm o depoy-hashsingleton, que se verán cuando hablemos de clustering.
  • /opt/$JBOSS-RELEASE/seam
    Es el directorio de distribución del framework SEAM, que puede ser borrado si no lo vamos a usar.

Además, una vez iniciado el servidor, nos podemos encontrar los siguientes directorios :

  • /opt/$JBOSS-RELEASE/jboss-as/log
    Es el directorio donde log4j almacena por defecto los logs generados.
  • /opt/$JBOSS-RELEASE/jboss-as/tmp
    Directorio temporal, solo se debe vaciar si el servidor JBoss está parado.
  • /opt/$JBOSS-RELEASE/jboss-as/work
    Directorio temporal para ficheros JSP precompilados, solo se debe vaciar si el servidor JBoss está parado.
  • /opt/$JBOSS-RELEASE/jboss-as/data
    Es un directorio de almacenamiento persistente, es decir, JBoss espera encontrar los datos que ahí se escriban tras el próximo reinicio. El ejemplo típico es la base de datos Hypersonic, que no es una BD de producción y debe ser eliminada de cualquier JBoss productivo.

Por lo tanto, para hacer una instalación básica de JBoss tendremos que :

  • Asegurarnos que disponemos una versión compatible de la JVM instalada, con un `java -version` . Si tenemos dudas podemos instalar el paquete recomendado : `yum install -y java-1.6.0-sun-devel`
  • Crear un usuario nuevo, por ejemplo `jboss5eap`
  • Bajar JBoss EAP 5
  • Descomprimirlo, por ejemplo en /opt/
  • Editar las variables de entorno del usuario jboss5eap de la siguiente forma: `$JAVA_HOME` debe estar inicializado al directorio de instalación de la JVM. `$PATH` debe incluir `$JAVA_HOME/bin`. `$JBOSS_HOME` debe estar inicializado al directorio de instalación de JBoss, en este caso a `/opt/jboss-5.0-eap-GA/jbossas`.
  • Finalmente, podremos lanzar jboss con el comando `$JBOSS_HOME/bin/run.sh` . Podemos verificar el éxito accediendo a [localhost:8080][]
  • Si deseamos que se inicie cuando el sistema operativo arranque, podemos basarnos en el script de inicio existente en $JBOSS_HOME/bin/
  • [Matriz de compatibilidad de JBoss]: http://www.jboss.com/products/platforms/application/supportedconfigurations/ [www.jboss.com]: http://www.jboss.com [localhost:8080]: http://localhost:8080