Instalar JBoss AS7 en entornos Red Hat

24 Febrero 2015 at 19:54 by Adrián Pérez

JBoss_logoJBoss es un Servidor de Aplicaciones Java completo, de código abierto, desarrollado por Red Hat. Y sí, yo también pienso en Apache Tomcat en estos momentos, pero hay diferencias entre ellos explicadas por ejemplo aquí o aquí. Voy a copiar literalmente una respuesta de StackOverflow que explica la diferencia entre un Servlet Container como Tomcat y un Application Server como JBoss:

"A servlet-container supports only the servlet API (including JSP, JSTL).

An application server supports the whole JavaEE - EJB, JMS, CDI, JTA, the servlet API (including JSP, JSTL), etc.

It is possible to run most of the JavaEE technologies on a servlet-container, but you have to install a standalone implementation of the particular technology." por Bozho

Ahora que quizá tenemos algo más claro qué es JBoss y por qué este post no habla sobre Tomcat, faltará ver qué diferencias hay entre la versión de la comunidad y la enterprise (más info aquí). Como es de esperar, la versión de la comunidad siempre irá por delante respecto a la empresarial en cuanto a novedades y funcionalidades, con lo cual no estará tan testeada ni será tan estable como debería ser la versión empresarial, más pensada para alojar aplicaciones críticas.

En esta entrada se instalará y pondrá en marcha la versión de la comunidad.

Instalación de JBoss AS7

En mi caso he hecho las pruebas en un Fedora 16 x86_64, pero estas instrucciones serán prácticamente idénticas en entornos CentOS o Red Hat.
Actualización: Si vas a hacer las pruebas en un CentOS7/RHEL7, no dejes de mirar los comentarios de este post, donde nos han compartido instrucciones que te pueden venir bien para esos entornos.

En primer lugar deberemos asegurarnos de contar con Java:

[user@myServer]$ sudo yum install java-1.7.0-openjdk

Entramos en la web de JBoss AS y descargamos y descomprimimos la última versión:

[user@myServer]$ wget http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.tar.gz
[user@myServer]$ tar -zxvf jboss-as-7.1.1.Final.tar.gz
[user@myServer]$ sudo mv jboss-as-7.1.1.Final /opt/

El tarball de JBoss no requiere instalación. Es por eso que una vez descomprimido podemos mover todo el directorio a /opt para empezar a trabajar con él.

NOTA: Si has buscado información sobre la instalación de JBoss AS7, verás que en algunos artículos se usa /usr/local como directorio de instalación mientras que en otros se usa /opt. Aquí o aquí explican un poco la diferencia entre ambos directorios, pero básicamente en /usr/local pondremos software de terceros que hemos tenido que compilar e instalar. Como JBoss AS7 viene ya precompilado y listo para usar, en mi caso me he decidido por /opt.

A continuación crearemos un usuario de sistema (opción "--system" o "-r") que será el usuario con el que se ejecutará JBoss. A este usuario, le daremos como home la ruta donde hemos movido el directorio de JBoss.

[user@myServer]$ sudo useradd --system -d /opt/jboss-as-7.1.1.Final/ jboss

NOTA: A un usuario de sistema se le asignará un UID de entre el rango de UIDs de sistema (definido en /etc/login.defs) y que por defecto es inferior a 500. Además, la cuenta no tendrá caducidad (definida en el fichero /etc/shadow), al ser una cuenta de sistema.

Ahora que contamos con el usuario ("jboss" en nuestro caso), deberemos cambiar el propietario de los ficheros de su home, para que tenga el usuario "jboss" acceso total a ellos:

[user@myServer]$ sudo chown -R jboss:jboss /opt/jboss-as-7.1.1.Final/

Finalmente, me ha parecido una buena idea lo que proponen en el blog "rm-rf.es", que es símplemente crear un enlace simbólico en /opt llamado jboss que apunte al directorio jboss original, para referirnos durante el resto de la instalación a /opt/jboss en lugar de al directorio original que contiene también el número de la versión en su nombre. En mi caso no lo he hecho, pero es una buena idea.

Configuración de JBoss AS7

Por defecto JBoss únicamente aceptará gestión desde localhost. Ésto se puede cambiar en el fichero de configuración "/opt/jboss-as-7.1.1.Final/standalone/configuration/standalone.xml".

Para que JBoss corra como un servicio, deberemos crear el script de inicio y darle permisos.

[user@myServer]$ sudo cp /opt/jboss-as-7.1.1.Final/bin/init.d/jboss-as-standalone.sh /etc/init.d/jboss
[user@myServer]$ sudo chmod +x /etc/init.d/jboss

Posteriormente configuraremos los parámetros de entorno de JBoss.

[user@myServer]$ sudo mkdir /etc/jboss-as
[user@myServer]$ sudo vi /etc/jboss-as/jboss-as.conf
JBOSS_HOME=/opt/jboss-as-7.1.1.Final
JBOSS_CONSOLE_LOG=/var/log/jboss-console.log
JBOSS_USER=jboss

Hecho ésto, ya podremos iniciar JBoss y configurarlo para que se inicie durante el proceso de boot.

[user@myServer]$ sudo service jboss start
[user@myServer]$ sudo chkconfig jboss on

JBoss escucha peticiones HTTP por defecto del puerto 8080, aunque abre varios puertos de escucha, todos configurables, de nuevo, desde el fichero de configuración "standalone.xml".

Lo primero que haremos, con JBoss corriendo, es crear el primer usuario de gestión de JBoss (opción "a", puedes dejar el "realm" por defecto):

[user@myServer]$ sudo cd /opt/jboss-as-7.1.1.Final/bin
[user@myServer]$ sudo ./add-user.sh

Una vez tengamos el usuario de gestión creado, podremos loguearnos a la consola de administración:

http://127.0.0.1:8080/console

o lo que es lo mismo,

http://127.0.0.1:9990

Fuentes:

https://www.rosehosting.com/blog/installing-and-setting-up-java-jboss-7-final-on-a-centos-6-linux-vps/

http://opensourcearchitect.co/tutorials/installing-jboss-7-1-on-centos-6

https://docs.jboss.org/author/display/AS71/Getting+Started+Guide#GettingStartedGuide-Installation