Cómo instalar y configurar WildFly (JBoss) en Debian 11

Wildfly es un servidor de aplicaciones escrito en Java y desarrollado por RedHat. Es un servidor sencillo, ligero y potente con una CLI y una consola de administración. Es de código abierto, multiplataforma y se basa en subsistemas enchufables que pueden añadirse o eliminarse según las necesidades. Proporciona todas las características necesarias para ejecutar una aplicación web Java.

En este tutorial, te mostraré cómo instalar Wildfly con Nginx como proxy inverso en Debian 11.

Requisitos previos

  • Un servidor con Debian 11.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada en tu servidor.

Instalar el JDK de Java

Wildfly es una aplicación basada en Java, por lo que Java debe estar instalado en tu servidor. Si no está instalado, puedes instalarlo ejecutando el siguiente comando:

apt-get install default-jdk -y

Una vez instalado Java, puedes verificarlo con el siguiente comando:

java --version

Deberías ver la versión de Java en la siguiente salida:

openjdk 11.0.12 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7-post-Debian-2deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.12+7-post-Debian-2deb10u1, mixed mode, sharing)

Instalar Wildfly

En primer lugar, crea un usuario y un grupo para ejecutar la aplicación Wildfly mediante el siguiente comando:

groupadd -r wildfly
useradd -r -g wildfly -d /opt/wildfly -s /sbin/nologin wildfly

A continuación, descarga la última versión de Wildfly utilizando el comando wget:

wget https://github.com/wildfly/wildfly/releases/download/25.0.1.Final/wildfly-25.0.1.Final.zip

Una vez completada la descarga, descomprime el archivo descargado con el siguiente comando:

unzip wildfly-25.0.1.Final.zip

A continuación, mueve el directorio extraído a /opt utilizando el siguiente comando:

mv wildfly-25.0.1.Final /opt/wildfly

A continuación, cambia la propiedad del directorio /opt/wildfly:

chown -RH wildfly:wildfly /opt/wildfly

A continuación, crea un directorio de configuración de Wildfly dentro de /etc utilizando el siguiente comando:

mkdir -p /etc/wildfly

A continuación, copia todos los archivos necesarios del directorio Wildfly al directorio /etc/wildfly:

cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly/
cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/
cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/

A continuación, establece el permiso de ejecución para todos los archivos de script de shell:

chmod +x /opt/wildfly/bin/*.sh

A continuación, recarga el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicia y habilita el servicio Wildfly con el siguiente comando:

systemctl start wildfly
systemctl enable wildfly

Para comprobar el estado del servicio Wildfly, ejecuta el siguiente comando:

systemctl status wildfly

Obtendrás la siguiente salida:

? wildfly.service - The WildFly Application Server
   Loaded: loaded (/etc/systemd/system/wildfly.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2021-12-10 14:55:07 UTC; 6s ago
 Main PID: 20928 (launch.sh)
    Tasks: 59 (limit: 4701)
   Memory: 171.6M
   CGroup: /system.slice/wildfly.service
           ??20928 /bin/bash /opt/wildfly/bin/launch.sh standalone standalone.xml 0.0.0.0
           ??20929 /bin/sh /opt/wildfly/bin/standalone.sh -c standalone.xml -b 0.0.0.0
           ??21022 java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=tru

Dec 10 14:55:07 debian11 systemd[1]: Started The WildFly Application Server.

Habilitar la consola de administración de Wildfly

Por defecto, la consola de administración de Wildfly está desactivada. Se recomienda habilitarla para gestionar la aplicación Wildfly.

Puedes habilitarla editando el archivo de configuración de Wildfly:

nano /etc/wildfly/wildfly.conf

Cambia las siguientes líneas:

WILDFLY_BIND=127.0.0.1
WILDFLY_CONSOLE_BIND=127.0.0.1

Guarda y cierra el archivo y luego edita el script de lanzamiento de Wildfly y habilita la consola de administración.

nano /opt/wildfly/bin/launch.sh

Cambia el archivo como se muestra a continuación:

if [[ "$1" == "domain" ]]; then
    $WILDFLY_HOME/bin/domain.sh -c $2 -b $3 -bmanagement $4
else
    $WILDFLY_HOME/bin/standalone.sh -c $2 -b $3 -bmanagement $4
fi

Guarda y cierra el archivo y luego edita el archivo systemd de Wildfly:

nano /etc/systemd/system/wildfly.service

Cambia la siguiente línea:

ExecStart=/opt/wildfly/bin/launch.sh $WILDFLY_MODE $WILDFLY_CONFIG $WILDFLY_BIND $WILDFLY_CONSOLE_BIND

Guarda y cierra el archivo y luego recarga el demonio systemd para aplicar los cambios de configuración:

systemctl daemon-reload

A continuación, reinicia el servicio Wildfly para aplicar los cambios:

systemctl restart wildfly

También puedes comprobar el estado de Wildfly con el siguiente comando:

systemctl status wildfly

Obtendrás la siguiente salida:

? wildfly.service - The WildFly Application Server
   Loaded: loaded (/etc/systemd/system/wildfly.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2021-12-10 14:57:22 UTC; 3s ago
 Main PID: 21182 (launch.sh)
    Tasks: 64 (limit: 4701)
   Memory: 205.6M
   CGroup: /system.slice/wildfly.service
           ??21182 /bin/bash /opt/wildfly/bin/launch.sh standalone standalone.xml 127.0.0.1 127.0.0.1
           ??21183 /bin/sh /opt/wildfly/bin/standalone.sh -c standalone.xml -b 127.0.0.1 -bmanagement 127.0.0.1
           ??21282 java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=tru

Dec 10 14:57:22 debian11 systemd[1]: Started The WildFly Application Server.

En este momento, Wildfly está iniciado y escucha en los puertos 8080 y 9990. Puedes comprobarlos con el siguiente comando:

ss -plnt

Obtendrás la siguiente salida:

State        Recv-Q       Send-Q             Local Address:Port             Peer Address:Port                                                 
LISTEN       0            128                      0.0.0.0:22                    0.0.0.0:*           users:(("sshd",pid=678,fd=3))            
LISTEN       0            128                    127.0.0.1:8443                  0.0.0.0:*           users:(("java",pid=21282,fd=485))        
LISTEN       0            50                     127.0.0.1:9990                  0.0.0.0:*           users:(("java",pid=21282,fd=487))        
LISTEN       0            80                     127.0.0.1:3306                  0.0.0.0:*           users:(("mysqld",pid=12461,fd=21))       
LISTEN       0            128                    127.0.0.1:8080                  0.0.0.0:*           users:(("java",pid=21282,fd=476))        
LISTEN       0            128                         [::]:22                       [::]:*           users:(("sshd",pid=678,fd=4))            

Una vez que hayas terminado, puedes pasar al siguiente paso.

Crear el usuario administrador de Wildfly

A continuación, también tendrás que crear un usuario administrador para acceder a la consola de administración de Wildfly. Puedes crearlo ejecutando el siguiente comando:

sh /opt/wildfly/bin/add-user.sh

Se te pedirá que elijas el tipo de usuario:

What type of user do you wish to add? 
 a) Management User (mgmt-users.properties) 
 b) Application User (application-users.properties)
(a): a

Escribe a y pulsa la tecla Intro para añadir el usuario administrador. Se te pedirá que definas tu nombre de usuario y contraseña como se muestra a continuación:

Enter the details of the new user to add.
Using realm 'ManagementRealm' as discovered from the existing property files.
Username : hitesh
Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file.
 - The password should be different from the username
 - The password should not be one of the following restricted values {root, admin, administrator}
 - The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
Password : 
Re-enter Password : 

Introduce tu nombre de usuario, tu contraseña y pulsa Intro. Se te pedirá que añadas usuarios al reino:

What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[  ]: 
About to add user 'hitesh' for realm 'ManagementRealm'
Is this correct yes/no? yes

Escribe «sí» y pulsa la tecla Intro para continuar. Una vez añadido el usuario, obtendrás la siguiente salida:

Added user 'hitesh' to file '/opt/wildfly/standalone/configuration/mgmt-users.properties'
Added user 'hitesh' to file '/opt/wildfly/domain/configuration/mgmt-users.properties'
Added user 'hitesh' with groups  to file '/opt/wildfly/standalone/configuration/mgmt-groups.properties'
Added user 'hitesh' with groups  to file '/opt/wildfly/domain/configuration/mgmt-groups.properties'
Is this new user going to be used for one AS process to connect to another AS process? 
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server Jakarta Enterprise Beans calls.
yes/no? yes
To represent the user add the following to the server-identities definition 

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar y configurar Nginx como proxy inverso

A continuación, tendrás que configurar Nginx como proxy inverso para acceder a Wildfly a través del puerto 80.

En primer lugar, instala el paquete Nginx utilizando el siguiente comando:

apt-get install nginx -y

Una vez instalado el Nginx, crea un archivo proxy Nginx con el siguiente comando:

nano /etc/nginx/conf.d/proxy_headers.conf

Añade las siguientes líneas:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Front-End-Https on;
add_header Cache-Control no-cache;

Guarda y cierra el archivo y luego crea un archivo de configuración de host virtual Nginx para Wildfly:

nano /etc/nginx/conf.d/wildfly.conf

Añade las siguientes líneas:

server {
  listen          80;
  server_name     wildfly.yourdomain.com;

  location / {
    include conf.d/proxy_headers.conf;
    proxy_pass http://127.0.0.1:8080;
  }

  location /management {
    include conf.d/proxy_headers.conf;
    proxy_pass http://127.0.0.1:9990/management;
  }

  location /console {
    include conf.d/proxy_headers.conf;
    proxy_pass http://127.0.0.1:9990/console;
  }

  location /logout {
    include conf.d/proxy_headers.conf;
    proxy_pass http://127.0.0.1:9990/logout;
  }

  location /error {
    include conf.d/proxy_headers.conf;
    proxy_pass http://127.0.0.1:9990;
  }

}

Guarda y cierra el archivo y, a continuación, comprueba si hay algún error de sintaxis en Nginx con el siguiente comando:

nginx -t

Deberías ver la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Por último, reinicia el servicio Nginx para aplicar los cambios:

systemctl restart nginx

También puedes comprobar el estado de Nginx utilizando el siguiente comando:

systemctl status nginx

Obtendrás la siguiente salida:

? nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2021-12-10 15:12:26 UTC; 9s ago
     Docs: man:nginx(8)
  Process: 22115 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 22116 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 22117 (nginx)
    Tasks: 3 (limit: 4701)
   Memory: 3.8M
   CGroup: /system.slice/nginx.service
           ??22117 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ??22118 nginx: worker process
           ??22119 nginx: worker process

Dec 10 15:12:25 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 10 15:12:26 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

En este punto, Nginx está instalado y configurado para servir a Wildfly. Ahora puedes pasar al siguiente paso.

Accede a la interfaz web de Wildfly

Ahora, abre tu navegador web y accede a la página de la aplicación Wildfly utilizando la URL http://wildfly.yourdomain.com. Deberías ver la página predeterminada de Wildfly en la siguiente pantalla:

Servidor de aplicaciones WildFly JAVA

Para acceder a la consola de administración de Wildfly, escribe la URL http://wildfly.yourdomain.com/console/ en tu navegador web. Se te pedirá que proporciones un nombre de usuario y una contraseña de administrador como se muestra a continuación:

Inicio de sesión de WildFly

Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón Iniciar sesión. Una vez que hayas iniciado la sesión, deberías ver el panel de administración de Wildfly:

Tablero de administración de WildFly

Conclusión

Enhorabuena, has instalado con éxito Wildfly con Nginx como proxy inverso en Debian 11. Ahora puedes utilizar Wildfly para alojar tu aplicación Java en Internet. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...