Instalacion de Jboss 6.2 en RHEL 7/CentOs 7

Con el reciente lanzamiento de  de RHEL 7, los manuales anteriores quedaron en la nada.

Muchas personas dicen que Jboss no se instala solo se descomprime, pero en verdad descomprimir jboss en /opt no es profesional ni es una buena practica para producción. Por lo que voy a escribir la forma correcta de instalarlo en RHEL7.

Antes de empezar voy a decir dos diferencias sustanciales que puede demorarnos en la instalación, primero RHEL 7 viene con firewallD [1]  por lo que iptables no nos va a servir para abrir los puertos necesarios, y para crear el servicio de inicio de Jboss ya no se usa los init scripts de sysV, ahora RHEL es un sistema basado en systemd [2] por lo que se debe usar systemctl y no el clásico comando service

Pues bien empecemos con la instalación:

Recuerde que debe tener instaldo Oracle JDK o el OpenJdk para que jboss funcione.

Primero debemos crear el usuario jboss

# adduser -r jboss
# mkdir /home/jboss
# chown -R jboss:jboss /home/jboss

Con estos comandos creamos un usuario del sistema con nombre jboss y creamos el home que el entrega. Para algunos war me ha dado problema que el usuario jboss no tenga home, un ejemplo de esto es el war de jenkins [3]

ahora debemos descomprimir el jar o el zip de Jboss en la carpeta donde debe ir,  se recomienda que este en /usr/share/jboss

# unzip jboss-eap-6.2.0.zip -d /usr/share/
# mv jboss-eap-6.2 jboss-as
# chown -R jboss:jboss jboss-as

Creamos la carpeta donde va a residir los archivos de configuración, copiamos el archivo de configuración que viene con el zip, damos permisos al usuario.

# mkdir /etc/jboss-as
# cp /usr/share/jboss-as/bin/init.d/jboss-as.conf /etc/jboss-as/
# chown -R jboss:jboss /etc/jboss-as/

El archivo de configuración por defecto viene completamente comentado, quitamos el comentario de las lineas:

JBOSS_USER=jboss
STARTUP_WAIT=30
SHUTDOWN_WAIT=30
JBOSS_CONSOLE_LOG=/var/log/jboss-as/console.log

Notese que el usuario es jboss no jboss-as

Ahora debemos crear el directorio para el pid y para el log

# mkdir -p /var/log/jboss-as/
# chown -R jboss:jboss /var/log/jboss-as/
# mkdir -p /var/run/jboss-as/
# chown -R jboss:jboss /var/run/jboss-as/

Ahora debemos crear el servicio systemd para iniciarlo.  Los servicios en systemd se alojan en dos lugares el principal o de mas precedencia  es: /etc/systemd/system/  Comúnmente los archivos en este directorio son links simbólicos del segundo directorio, el cual es: /lib/systemd/system/

Como es un archivo nuevo lo agrego en /etc/systemd/system/ y lo guardo con el nombre jboss.service

# vim /etc/systemd/system/jboss.service

# Systemd unit file for Jboss
#
# Wolfant Example

[Unit]
Description=Jboss Application Server
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/usr/share/jboss-as/bin/init.d/jboss-as-standalone.sh start
ExecStop=/usr/share/jboss-as/bin/init.d/jboss-as-standalone.sh stop
PIDFile=/var/run/jboss-as/jboss-as-standalone.pid

[Install]
WantedBy=multi-user.target

Después de crear el archivo debemos reiniciar el servicio de systemd

# systemctl daemon-reload

y por ultimo probar iniciar, detener y revisar el estado del nuevo servicio.

# systemctl start jboss.service
# systemctl status jboss.service
# systemctl stop jboss.service

Para que Jboss funcione los puertos que debemos abrir dependiendo de la configuración de nuestro Jboss son:

  • 80/TCP
  • 443/TCP
  • 8080/TCP

Opcional (No recomendado si esta conectado directo al Internet):

  • 9990/TCP
  • 9999/TCP

Estos puertos se abren en firewallD con los siguientes comandos:

# firewall-cmd --permanent --zone=public --add-port=8080/tcp

# firewall-cmd --permanent --zone=public --add-service=https

# firewall-cmd --permanent --zone=public --add-service=http

# firewall-cmd --permanent --zone=public --add-port=9990/tcp

# firewall-cmd --permanent --zone=public --add-port=9999/tcp

# systemctl restart firewalld.service

Si deseamos revisar si restan los puertos abiertos usamos:

firewall-cmd --permanent --zone=public --list-all
Referencias:
[1]https://fedoraproject.org/wiki/FirewallD

[2]http://0pointer.de/blog/projects/systemd-for-admins-3.html

https://fedoraproject.org/wiki/Systemd/es#.C2.BFC.C3.B3mo_personalizar_un_archivo_unidad_o_agregar_uno_personalizado.3F

 [3] http://jenkins-ci.org/