Cómo instalar WildFly con Nginx como proxy inverso en Debian 10

WildFly es un tiempo de ejecución de aplicaciones gratuito, de código abierto y multiplataforma, escrito en Java y desarrollado por Red Hat, que te permite desarrollar grandes aplicaciones desde un único IDE. Es ligero, rápido, flexible y se basa en subsistemas conectables. Funciona en los sistemas operativos Windows y Linux y su objetivo es proporcionar a los usuarios un entorno de ejecución Java rápido y estable. Wildfly viene con un rico conjunto de características, como tiempo de ejecución rápido y personalizable, escalabilidad, configuración y gestión unificadas, carga concurrente, enlace rápido, gestión de dominios y muchas más.

En este tutorial, te mostraremos los pasos para instalar Wildfly con Nginx como proxy inverso en Debian 10.

Requisitos

  • Un servidor que ejecute Debian 10.
  • Una contraseña de root en tu servidor.

Cómo empezar

Antes de empezar, necesitarás actualizar tu sistema con la última versión. Puedes hacerlo ejecutando el siguiente comando:

apt-get update -y
apt-get upgrade -y

Una vez actualizado tu servidor, reinícialo para aplicar los cambios.

Instala Java

WildFly requiere que Java versión 8 esté instalado en tu servidor. Por defecto, Java 8 no está disponible en el repositorio predeterminado de Debian 10. Por tanto, tendrás que descargar Java 8 de su sitio web oficial.

Tras descargar Java 8, extrae el código fuente de Java al directorio /usr/lib/jvm con el siguiente comando:

mkdir /usr/lib/jvm/
tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/lib/jvm/

A continuación, ejecuta el siguiente comando para cambiar la versión de Java por defecto:

update-alternatives --config java

Selecciona Java versión 8 y pulsa Intro. Deberías ver la siguiente salida:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                         Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode
  2            /usr/lib/jvm/jdk1.8.0_221/bin/java            1         manual mode

Press  to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/jdk1.8.0_221/bin/java to provide /usr/bin/java (java) in manual mode

A continuación, comprueba la versión de Java con el siguiente comando:

java -version

Deberías obtener la siguiente salida:

java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

Instalar Wildfly

En primer lugar, tendrás que crear un usuario y un grupo para Wildfly. Puedes crearlo con 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 con el siguiente comando:

wget https://download.jboss.org/wildfly/17.0.1.Final/wildfly-17.0.1.Final.zip

Una vez finalizada la descarga, extrae el archivo descargado con el siguiente comando:

unzip wildfly-17.0.1.Final.zip

A continuación, copia el directorio extraído en /opt/ con el siguiente comando:

cp -r wildfly-17.0.1.Final /opt/wildfly

A continuación, cambia la propiedad del directorio wildfly al usuario wildfly como se muestra a continuación:

chown -RH wildfly:wildfly /opt/wildfly

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

Configurar Wildfly

A continuación, tendrás que copiar los archivos necesarios para configurar WildFly.

En primer lugar, copia el archivo de configuración de WildFly en el directorio /etc/wildfly:

mkdir /etc/wildfly
cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly/

A continuación, copia el archivo launch.sh al directorio /opt/wildfly/bin/ con el siguiente comando:

cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/

A continuación, da permiso de ejecución al archivo launch.sh:

sh -c 'chmod +x /opt/wildfly/bin/*.sh'

A continuación, copia el archivo de unidad systemd de Wildfly en el directorio /etc/systemd/system/:

cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/

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

systemctl daemon-reload

A continuación, inicia el servicio WildFly y habilítalo para que se inicie al arrancar con el siguiente comando:

systemctl start wildfly
systemctl enable wildfly

Ahora puedes comprobar el estado del servicio Wildfly con el siguiente comando:

systemctl status wildfly

Deberías obtener la siguiente salida:

? wildfly.service - The WildFly Application Server
   Loaded: loaded (/etc/systemd/system/wildfly.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-09-10 00:19:27 EDT; 1s ago
 Main PID: 1142 (launch.sh)
    Tasks: 7 (limit: 1138)
   Memory: 24.7M
   CGroup: /system.slice/wildfly.service
           ??1142 /bin/bash /opt/wildfly/bin/launch.sh standalone standalone.xml 0.0.0.0
           ??1143 /bin/sh /opt/wildfly/bin/standalone.sh -c standalone.xml -b 0.0.0.0
           ??1200 java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -

Sep 10 00:19:27 debian systemd[1]: Started The WildFly Application Server.

Configurar la autenticación de WildFly

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

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

Deberías ver la siguiente salida:

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 Intro para crear un usuario Administrador. Durante el proceso de creación del usuario, tendrás que proporcionar el nombre de usuario, la contraseña y el nombre de grupo 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 : wildflyadmin
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 : 
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 'wildflyadmin' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'wildflyadmin' to file '/opt/wildfly/standalone/configuration/mgmt-users.properties'
Added user 'wildflyadmin' to file '/opt/wildfly/domain/configuration/mgmt-users.properties'
Added user 'wildflyadmin' with groups  to file '/opt/wildfly/standalone/configuration/mgmt-groups.properties'
Added user 'wildflyadmin' 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 EJB calls.
yes/no? yes
To represent the user add the following to the server-identities definition 

Una vez hecho esto, puedes pasar al siguiente paso.

Configurar WildFly para que sea accesible desde un sistema remoto

Por defecto, Wildfly sólo es accesible desde el sistema local. Por lo tanto, tendrás que configurarlo para acceder desde el sistema remoto. Puedes hacerlo editando el archivo /etc/wildfly/wildfly.conf:

nano /etc/wildfly/wildfly.conf

Añade la siguiente línea al final del archivo:

WILDFLY_CONSOLE_BIND=0.0.0.0

Guarda y cierra el archivo cuando hayas terminado. A continuación, abre el archivo /opt/wildfly/bin/launch.sh como se muestra a continuación:

nano /opt/wildfly/bin/launch.sh

Cambia el archivo como se muestra a continuación:

if [ "x$WILDFLY_HOME" = "x" ]; then
    WILDFLY_HOME="/opt/wildfly"
fi

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. A continuación, abre el archivo /etc/systemd/system/wildfly.service.

nano /etc/systemd/system/wildfly.service

Cambia el archivo como se muestra a continuación:

[Unit]
Description=The WildFly Application Server
After=syslog.target network.target
Before=httpd.service

[Service]
Environment=LAUNCH_JBOSS_IN_BACKGROUND=1
EnvironmentFile=-/etc/wildfly/wildfly.conf
User=wildfly
LimitNOFILE=102642
PIDFile=/var/run/wildfly/wildfly.pid
ExecStart=/opt/wildfly/bin/launch.sh $WILDFLY_MODE $WILDFLY_CONFIG $WILDFLY_BIND $WILDFLY_CONSOLE_BIND
StandardOutput=null

[Install]
WantedBy=multi-user.target

Guarda el archivo. A continuación, crea el directorio /var/run/wildfly y establece los permisos correctos

mkdir /var/run/wildfly/
chown wildfly:wildfly /var/run/wildfly/

Por último, recarga el demonio systemd y reinicia el servicio Wildfly para aplicar los cambios:

systemctl daemon-reload
systemctl restart wildfly

Una vez hecho esto, puedes pasar al siguiente paso.

Accede a Wildfly

Wildfly ya está instalado y configurado para acceder desde el sistema remoto. Por defecto, la consola de gestión de Wildfly escucha en el puerto 9990. Puedes acceder a ella visitando la URL http://192.168.0.4:9990. Se te redirigirá a la siguiente página:

Inicia sesión en Wildfly

Ahora, proporciona tu nombre de usuario y contraseña de administrador, y haz clic en el botón Iniciar sesión. Deberías ver la consola de gestión de Wildfly en la siguiente pantalla:

Consola de gestión HAL

También puedes acceder a la aplicación Wildfly visitando la URL http://192.168.0.4:8080. Deberías ver la siguiente página:

Bienvenido a WildFly

Configurar Nginx como proxy inverso para Wildfly

A continuación, tendrás que configurar Nginx como proxy inverso para desviar las solicitudes que lleguen por el puerto 80 al 8080.

En primer lugar, instala Nginx con el siguiente comando:

apt-get install nginx -y

Una vez instalado Nginx, crea un nuevo archivo de host virtual para Nginx con el siguiente comando:

nano /etc/nginx/sites-available/wildfly.conf

Añade las siguientes líneas:

upstream wildfly {
  server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5;
}

server {
  listen          80;
  server_name     192.168.0.4;

  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://wildfly/;
  }
}

Guarda y cierra el archivo cuando hayas terminado. A continuación, comprueba si Nginx tiene algún error de sintaxis con el siguiente comando:

nginx -t

Deberías obtener la siguiente salida:

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

A continuación, habilita el host virtual Nginx y reinicia Nginx con el siguiente comando:

ln -s /etc/nginx/sites-available/wildfly.conf /etc/nginx/sites-enabled/
systemctl restart nginx

Ahora puedes acceder a la aplicación Wildfly sin especificar el puerto 8080.

Ya está. Has instalado y configurado correctamente Wildfly con Nginx como proxy inverso en Debian 10. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...