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:
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.
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.
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.