JBoss EAP 6 como servicio en RHEL 7

Hace relativamente poco tiempo Red Hat ha puesto a disposición la versión 7.0 GA de su sistema operativo Red Hat Enterprise Linux.

Uno de los cambios más notables en RHEL 7 (ya ahondaré en otro post) es la gestión de servicios que pasa de Upstart (basado en System V) a systemd. Dado que en la documentación oficial de JBoss EAP 6 sólo explica cómo configurar JBoss como servicio basado en SysV recojo en este post los pasos a seguir para configurarlo en systemd.

Otro de los cambios existentes es acerca del firewall, RHEL 7 viene con firewalld (sí, también con iptables, pero se dejará de usar), así que explicaré como configurar firewalld para poder acceder a JBoss.

Empezamos:

Lo primero siempre será configurar un usuario para el proceso de EAP

 # useradd -r -u 400 -s /sbin/nologin -d /usr/share/jboss-as jboss

A la hora de instalar EAP podemos optar por los mecanismos de instalación basados en jar o basados en zip. Os aconsejo echar un vistazo al post Instalando JBoss EAP 6.2. Sería aconsejable instalarlo en la ruta /usr/share/jboss-as, que es la ruta donde instala el RPM. Dicha ruta deberá ser accesible para el usuario jboss, así que le damos los permisos correspondientes:

# chown -R jboss:jboss /usr/share/jboss-as

Perfecto. Ahora crearemos el directorio de configuración, donde pondremos el fichero de configuración que establece las variables que necesita el script de servicio. También el directorio de logs, y el directorio del fichero de PID

# mkdir /etc/jboss-as
# cat > /etc/jboss-as/jboss-as.conf <<EOF
> ## Usuario responsable del proceso
> JBOSS_USER=jboss
> ## Tiempo de espera para devolver el control de la SHELL, dependerá de la cantidad de aplicaciones/servicios que se desplieguen
> STARTUP_WAIT=30
> ## Tiempo de espera para devolver el control de la SHELL, dependerá de la cantidad de aplicaciones/servicios que se apaguen
> SHUTDOWN_WAIT=30
> ## Directorio y fichero de log
> JBOSS_CONSOLE_LOG=/var/log/jboss-as/console.log
> ## Directorio home de JBoss EAP
> JBOSS_HOME=/usr/share/jboss-as/jboss-eap-6.X
> EOF
# mkdir /var/log/jboss-as
# mkdir /var/run/jboss-as
# chown -R jboss:jboss /var/log/jboss-as
# chown -R jboss:jboss /var/run/jboss-as

Ya sólo falta crear el fichero de servicio:

 # cat > /etc/systemd/system/jboss-as-standalone.service <<EOF
> [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
>
> [Install]
> WantedBy=multi-user.target
> EOF

Reiniciamos el demonio de systemd, arrancamos nuestro servicio de EAP, verificamos su estado y lo habilitamos:

# systemctl daemon-reload
# systemctl start jboss-as-standalone.service
# systemctl status jboss-as-standalone.service
# systemctl enable jboss-as-standalone.service

Listo, ahora sólo queda adentrarnos en el fascinante mundo de FirewallD, pero como lo explicaré en otro post (espero que no tardando mucho), voy a centrarme en crear y habilitar un servicio básico para EAP. Empezaré por crear el servicio, activaré el servicio en runtime, activaré el servicio persistente y verificaré el servicio en ejecución y permanente (todo ello asumiendo que trabajamos en la zona public):

# cat > /etc/firewalld/services/jboss-as-standalone.xml
> <?xml version="1.0" encoding="utf-8"?>
> <service version="1.0">
>      <short>jboss-as-standalone</short>
>      <port port="8080" protocol="tcp"/>
>      <port port="8443" protocol="tcp"/>
>      <port port="8009" protocol="tcp"/>
>      <port port="4447" protocol="tcp"/>
>      <port port="9990" protocol="tcp"/>
>      <port port="9999" protocol="tcp"/>
> </service>
> EOF
# firewall-cmd --zone=public --add-service=jboss-as-standalone
# firewall-cmd --permanent --zone=public --add-service=jboss-as-standalone
# firewall-cmd --zone=public --list-services
# firewall-cmd --permanent --zone=public --list-services

Hecho, nuestro EAP funcionando como servicio en RHEL 7.

 Nos vemos…

One thought on “JBoss EAP 6 como servicio en RHEL 7

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *