Cómo instalar WildFly Java Application Server con Nginx en Ubuntu 22.04

Wildfly es un tiempo de ejecución de aplicaciones sencillo, ligero y flexible que se utiliza para crear aplicaciones Java. Está escrito en Java y puede ejecutarse en sistemas operativos Linux, macOS y Windows. Es un servidor de aplicaciones empresarial y completo que proporciona todas las funciones necesarias para ejecutar una aplicación web Java.

Características

  • Gratuito y de código abierto
  • Modular y ligero.
  • Ahorra recursos con una gestión eficiente.
  • Ahorra tiempo con un desarrollo más rápido.

Este tutorial te mostrará cómo instalar Wildfly con Nginx como proxy inverso en Ubuntu 22.04.

Requisitos previos

  • Un servidor con Ubuntu 22.04.
  • Un nombre de dominio válido apuntando a la IP de tu servidor.
  • Una contraseña de root está configurada en tu servidor.

Actualizar el sistema

En primer lugar, tendrás que actualizar todos los paquetes de tu sistema a la versión actualizada. Puedes actualizarlos todos ejecutando el siguiente comando.

apt update -y
apt upgrade -y

Una vez actualizados todos los paquetes, puedes pasar al siguiente paso.

Instalar Java JDK

Wildfly es una aplicación basada en Java. Así que necesitarás instalar Java en tu servidor. Puedes instalar Java JDK con el siguiente comando.

apt install default-jdk -y

Una vez instalado Java, puedes verificar la versión de Java con el siguiente comando.

java --version

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

openjdk 11.0.17 2022-10-18
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu222.04)
OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu222.04, mixed mode, sharing)

Descargar e instalar Wildfly

Antes de empezar, tendrás que crear un usuario y un grupo dedicados para ejecutar Wildfly. Puedes crear ambos utilizando 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 siguiente comando.

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

Una vez finalizada la descarga, descomprime el archivo descargado con el siguiente comando.

unzip wildfly-26.1.3.Final.zip

A continuación, mueve el directorio Wildfly extraído al directorio /opt.

mv wildfly-26.1.3.Final /opt/wildfly

A continuación, cambia la propiedad del directorio Wildfly utilizando el siguiente comando.

chown -RH wildfly: /opt/wildfly

Una vez que hayas terminado, puedes proceder a configurar Wildfly.

Configurar Wildfly

En primer lugar, crea un directorio de configuración de Wildfly utilizando el siguiente comando.

mkdir -p /etc/wildfly

A continuación, copia el archivo de configuración de Wildfly en el directorio /etc/wildfly.

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

A continuación, copia el archivo de servicio de Wildfly en el directorio systemd.

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

A continuación, copia el archivo launch.sh de Wildfly en el directorio /opt/wildfly/bin/.

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

A continuación, establece el permiso de ejecutable para el archivo de script.

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

A continuación, recarga el demonio systemd para aplicar los cambios.

systemctl daemon-reload

A continuación, inicia el servicio wildfly y añádelo al arranque del sistema.

systemctl start wildfly
systemctl enable wildfly

Ahora puedes verificar el estado de Wildfly utilizando 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 Wed 2023-02-15 09:34:24 UTC; 4s ago
   Main PID: 20425 (launch.sh)
      Tasks: 61 (limit: 4579)
     Memory: 111.6M
        CPU: 6.919s
     CGroup: /system.slice/wildfly.service
             ??20425 /bin/bash /opt/wildfly/bin/launch.sh standalone standalone.xml 0.0.0.0
             ??20426 /bin/sh /opt/wildfly/bin/standalone.sh -c standalone.xml -b 0.0.0.0
             ??20534 java "-D[Standalone]" -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stac>

Feb 15 09:34:24 ubuntu2204 systemd[1]: Started The WildFly Application Server.

Por defecto, Wildfly escucha en los puertos 8080 y 9990. Puedes comprobarlos con el siguiente comando.

ss -antpl | grep -i java

Deberías ver la siguiente salida.

LISTEN 0      4096         0.0.0.0:8443      0.0.0.0:*    users:(("java",pid=20534,fd=498))                                                                
LISTEN 0      50         127.0.0.1:9990      0.0.0.0:*    users:(("java",pid=20534,fd=497))                                                                
LISTEN 0      4096         0.0.0.0:8080      0.0.0.0:*    users:(("java",pid=20534,fd=495))                                                                

Configurar la consola de administración de Wildfly

Por defecto, la consola de administración de Wildfly está desactivada. Así que tendrás que habilitarla para acceder a Wildfly desde el navegador web.

En primer lugar, edita el archivo de configuración de Wildfly utilizando el siguiente comando.

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 cuando hayas terminado. A continuación, edita el archivo launch.sh con el siguiente comando.

nano /opt/wildfly/bin/launch.sh

Modifica las siguientes líneas:

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, a continuación, edita el archivo de servicio Wildfly.

nano /etc/systemd/system/wildfly.service

Modifica 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 vuelve a cargar el demonio systemd para aplicar los cambios.

systemctl daemon-reload

Ahora, reinicia el servicio Wildfly para aplicar los cambios.

systemctl restart wildfly

Añade un usuario administrativo a Wildfly

A continuación, tendrás que añadir un usuario administrador para acceder a la consola de administración de Wildfly. Puedes añadirlo con el siguiente comando.

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

Se te preguntará por el tipo de usuario que deseas añadir:

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

Proporciona los detalles de tu nuevo usuario como se muestra a continuación:

Using the realm 'ManagementRealm' as discovered from the existing property files.
Username : wadmin
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 :

Se te preguntará a qué grupo quieres que pertenezca este usuario:

What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[  ]:

Pulsa la tecla intro. Deberías ver el siguiente resultado.

About to add user 'wadmin' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'wadmin' to file '/opt/wildfly/standalone/configuration/mgmt-users.properties'
Added user 'wadmin' to file '/opt/wildfly/domain/configuration/mgmt-users.properties'
Added user 'wadmin' with groups  to file '/opt/wildfly/standalone/configuration/mgmt-groups.properties'
Added user 'wadmin' 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 

Configurar Nginx para Wildfly

En este punto, Wildfly está instalado y configurado para ejecutarse en localhost. Ahora, tendrás que configurar Nginx como proxy inverso para acceder a la interfaz web de Wildfly.

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

apt install nginx -y

A continuación, crea un archivo de configuración proxy_headers.

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

Añade las siguientes configuraciones:

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, a continuación, crea un nuevo archivo de configuración de host virtual.

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

Añade las siguientes configuraciones.

server {
  listen          80;
  server_name     wildfly.example.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 el archivo y comprueba si Nginx tiene algún error de configuración sintáctica.

nginx -t

Si todo va bien, obtendrás 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

Puedes verificar el estado del servicio Nginx con el siguiente comando.

systemctl status nginx

Deberías ver 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 Wed 2023-02-15 09:38:18 UTC; 1s ago
       Docs: man:nginx(8)
    Process: 21027 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 21028 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 21029 (nginx)
      Tasks: 3 (limit: 4579)
     Memory: 3.4M
        CPU: 62ms
     CGroup: /system.slice/nginx.service
             ??21029 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??21030 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ??21031 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Feb 15 09:38:18 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server...
Feb 15 09:38:18 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.

Accede a la interfaz de administración de Wildfly

Ahora, abre tu navegador web y accede a la interfaz de administración de Wildfly utilizando la URL http://wildfly.example.com/console. Se te pedirá que proporciones las credenciales de administrador de Wildfly como se muestra a continuación:

Inicio de sesión en WildFly

Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón Iniciar sesión. Deberías ver el panel de control de Wildfly en la siguiente pantalla.

Tablero WildFly

También puedes acceder a la página por defecto de Wildfly utilizando la URL http://wildfly.example.com. Deberías ver la siguiente pantalla.

Servidor de aplicaciones java WildFly

Conclusión

Enhorabuena! has instalado correctamente Wildfly con Nginx como proxy inverso en el servidor Ubuntu 22.04. Ahora puedes empezar a construir una aplicación increíble utilizando la plataforma Wildfly. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...