Instalar WildFly en Centos 7

Continuamos hablando de servidores de aplicaciones, en el caso de hoy vamos a ver como instalar la plataforma WildFly, sobre un servidor GNU/Linux con una distribución Centos 7

Sobre WildFly

Tal y como comentamos en el artículo anterior, WildFly es la versión con licencia libre, hermana de la versión de pago y con soporte, JBoss Enterprise Application Server, de la compañía norteamericana Red Hat

Wildfly es un servidor de aplicaciones web de código abierto y alto rendimiento, escrito en Java. Está especialmente diseñado par aun alto rendimiento y es capaz de manejar millones de conexiones.

Wildfly es simple, flexible, liviano, y nos puede ayudar a construir de manera fácil aplicaciones. Su arquitectura está pensada para reducir el uso del disco y de la memoria del servidor. Admite dos modos: una JVM única, en modo independiente, también llamado por su nombre en inglés “standalone”, y el otro modo, que utiliza una JVM múltiple, en modo de dominio.

Instalar OpenJDK 8

En muchos tutoriales me he encontrado que utilizan la versión de Java proporcionada por la compañía Oracle. En cambio nosotros utilizaremos la versión “open”, que ya viene en los repositorios principales de Centos.

  1. yum install java-1.8.0-openjdk-devel

A continuación, vamos a ver que la versión se ha instalado correctamente:

  1. java --version

En mi caso con el resultado:

  1. [root@servwildfly ~]# java -version
  2. openjdk version "1.8.0_181"
  3. OpenJDK Runtime Environment (build 1.8.0_181-b13)
  4. OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

Muchas aplicaciones que utilizan Java, necesitan que exista la variable de entorno “JAVA_HOME”, así que la creamos:

  1. export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64

Para que esta variable se quede de manera permanente, debemos editar el fichero /etc/environment y añadir justo la misma línea.

Hacemos lo propio con la variable de entorno JRE_HOME

  1. export JRE_HOME= /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre

Instalación de WildFly

Nos podemos descargar la última versión del producto desde su página web

Antes de esto instalaremos los siguientes paquetes, si no los tenemos ya:

  1. yum -y install wget unzip

En mi caso he descargado los ficheros de la versión 14.0.1, que es la última versión a día de hoy.

  1. wget http://download.jboss.org/wildfly/14.0.1.Final/wildfly-14.0.1.Final.zip

Una vez descargado el fichero lo descomprimimos dentro de la carpeta “/opt”, así:

  1. unzip wildfly-14.0.1.Final.zip -d /opt

Si queremos poder acceder sin problema vía red al producto recién instalado, debemos añadir información adicional en el fichero:

  1. vi /opt/wildfly-14.0.1.Final/standalone/configuration/standalone.xml

Simplemente debemos buscar las tres líneas con la IP ‘127.0.0.1’ y cambiar por la de nuestro servidor.

Como es un poco lioso acceder al fichero de manera manual, vamos a utilizar el comando ‘sed’, para hacer el cambio, así:

  1. sed -i -e 's/127.0.0.1/nuestra-ip/g' /opt/wildfly-14.0.1.Final/standalone/configuration/standalone.xml

Si tenemos el Firewall activado, debemos habilitar los puertos que utiliza la plataforma, que son el 8080 y el 9990.

  1. firewall-cmd –-permanent --add-port=8080/tcp
  2. firewall-cmd –-permanent --add-port=9990/tcp
  3. firewall-cmd --reload

A continuación, vamos a crear un usuario con permisos de administrador, utilizando el script:

  1. /opt/wildfly-14.0.1.Final/bin/add-user.sh

Aquí os dejo el registro efectuado en mi caso:

  1. [root@servwildfly ~]# /opt/wildfly-14.0.1.Final/bin/add-user.sh
  2.  
  3. What type of user do you wish to add?
  4.  a) Management User (mgmt-users.properties)
  5.  b) Application User (application-users.properties)
  6. (a): a
  7.  
  8. Enter the details of the new user to add.
  9. Using realm 'ManagementRealm' as discovered from the existing property files.
  10. Username : davidochobits
  11. Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file.
  12.  - The password should be different from the username
  13.  - The password should not be one of the following restricted values {root, admin, administrator}
  14.  - The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
  15. Password :
  16. WFLYDM0102: Password should have at least 1 non-alphanumeric symbol.
  17. Are you sure you want to use the password entered yes/no? yes
  18. Re-enter Password :
  19. What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[  ]:
  20. About to add user 'davidochobits' for realm 'ManagementRealm'
  21. Is this correct yes/no? yes
  22. Added user 'davidochobits' to file '/opt/wildfly-14.0.1.Final/standalone/configuration/mgmt-users.properties'
  23. Added user 'davidochobits' to file '/opt/wildfly-14.0.1.Final/domain/configuration/mgmt-users.properties'
  24. Added user 'davidochobits' with groups  to file '/opt/wildfly-14.0.1.Final/standalone/configuration/mgmt-groups.properties'
  25. Added user 'davidochobits' with groups  to file '/opt/wildfly-14.0.1.Final/domain/configuration/mgmt-groups.properties'
  26. Is this new user going to be used for one AS process to connect to another AS process?
  27. e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
  28. yes/no? no

Una vez creado el usuario, ya podemos iniciar Wildfly.

  1. /opt/wildfly-14.0.1.Final/bin/standalone.sh

Y con todo esto ya podemos acceder a WildFly, por el puerto 8080 o bien por el 9990, para la interfaz de administración.

Acceso a WildFly por el puerto 8080 (click para ampliar)

WildFly como servicio con systemd

La verdad que ver el registro de actividad de la Java, una vez se inicia la aplicación puede ser interesante e incluso necesario, sobre todo si somos DevOps. Pero, para el resto de mortales, se hace una cosa innecesaria. Así que vamos a ver como añadir WildFly como servicio dentro de systemd, ya que utilizamos Centos 7

Para ello primero de todo vamos a crear un usuario para interactuar con esta aplicación:

  1. groupadd web
  2. useradd -M -s /bin/nologin -g web -d /opt/wildfly-14.0.1.Final web

Y creamos el fichero para el servicio:

  1. vi /etc/systemd/system/wildfly.service

Con esta información:

  1. [Unit]
  2. Description=WildFly application server
  3. Wants=network-online.target 
  4. After=network-online.target
  5.  
  6. [Service]
  7. Type=simple
  8. User=web
  9. Group=web
  10. ExecStart=/opt/wildfly-14.0.1.Final/bin/standalone.sh
  11. Restart=always
  12. RestartSec=20
  13.  
  14. [Install]
  15. WantedBy=multi-user.target

Le otorgamos al fichero permisos de ejecución:

  1. chmod +x /etc/systemd/system/wildfly.service

Asignamos como propietario al usuario ‘web’ a la caperta de WildFly:

  1. chown -R web:web /opt/wildfly-14.0.1.Final

Y con esto ya podemos operar con el servicio añadido a systemd.

  1. systemctl enable wildfly.service
  2. systemctl start wildfly.service

Y ya podemos empezar a trabajar, por ejemplo desde la consola de administración:

Consola de administración en puerto 9990 (click para ampliar)

Espero que el artículo haya sido de vuestro interés. Mi intención es profundizar más en este producto e intentar exprimir todo su potencial. Nos vamos leyendo ^.^

Fuentes consultadas:

Docs.wildfly.org – Documentation

Stackoverflow – Wildfly as systemd service