Cómo instalar el servidor de aplicaciones Java WildFly con el proxy inverso Nginx en Ubuntu 20.04
WildFly o anteriormente conocido como JBoss AS es una implementación ligera del contenedor JEE (Java Enterprise Edition). Su flexible tiempo de ejecución de aplicaciones está escrito en Java y te ayuda a crear fantásticas aplicaciones.
WildFly es un tiempo de ejecución de aplicaciones multiplataforma que funciona en los sistemas operativos Linux, macOS y Windows. Fue creado por JBoss Inc, y en 2006 fue adquirido por RedHat y se convirtió en WildFly.
En este tutorial, te mostraremos cómo instalar WildFly en la última versión de Ubuntu 20.04. Instalaremos la última versión de WildFly 20, habilitaremos la consola de administración para WildFly, crearemos el usuario administrador de WildFly y configuraremos Nginx como proxy inverso para WildFly.
Requisitos previos
Para esta guía, instalaremos WildFly en el último servidor Ubuntu 20.04 FocalFossa con 2 GB de RAM, 50 GB de espacio libre en disco y 2 CPU.
¿Qué haremos?
- Instalar Java OpenJDK 11
- Añadir un nuevo usuario y descargar WildFly
- Configuración básica de WildFly
- Habilitar la consola de administración de WildFly
- Configurar el usuario administrador de WildFly
- Configurar Nginx como proxy inverso para WildFly
- Prueba de
Paso 1 – Instalar Java OpenJDK
En primer lugar, instalaremos el Java OpenJDK en el servidor Ubuntu 20.04. Y utilizaremos el Java OpenJDK 11 para nuestra instalación de WildFly, que es la versión por defecto de los paquetes de Java en el repositorio de Ubuntu 20.04.
Actualiza todo el repositorio de paquetes e instala Java OpenJDK utilizando el comando apt que aparece a continuación.
sudo apt update
sudo apt install default-jdk
Una vez completada la instalación, comprueba la versión de Java utilizando el siguiente comando.
java -version
A continuación se muestra el resultado que obtendrás.
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)
Como resultado, la instalación de Java OpenJDK en Ubuntu 20.04 se ha completado.
Paso 2 – Añadir un nuevo usuario y descargar WildFly
En este paso, crearemos un nuevo usuario y grupo del sistema ‘wildfly’ y descargaremos el código fuente de wildfly en el directorio ‘/opt/wildfly’.
Ahora crea un nuevo usuario y grupo llamado ‘wildfly’ utilizando los comandos que aparecen a continuación.
groupadd -r wildfly
useradd -r -g wildfly -d /opt/wildfly -s /sbin/nologin wildfly
A continuación, ve al directorio ‘/opt’ y descarga el código fuente de wildfly utilizando el comando wget como se indica a continuación.
cd /opt/
wget -q wget https://download.jboss.org/wildfly/20.0.1.Final/wildfly-20.0.1.Final.tar.gz
El código fuente de wildfly ha sido descargado.
Ahora extrae el código fuente de wildfly y renombra el directorio extraído a ‘wildfly’.
tar -xf wildfly-20.0.1.Final.tar.gz
mv wildfly-20.0.1.Final wildfly
Después, cambia la propiedad del directorio ‘wildfly’ al usuario y grupo ‘wildfly’.
chown -RH wildfly:wildfly /opt/wildfly
Como resultado, el directorio de instalación de wildfly se encuentra en el directorio ‘/opt/wildfly’. El servicio wildfly se ejecutará bajo el nuevo usuario llamado ‘wildfly’ que acabamos de crear en la parte superior.
Paso 3 – Configuración básica de WildFly
Después de descargar el código fuente de wildfly, vamos a configurar el wildfly en el sistema Ubuntu.
Crea un nuevo directorio de configuración ‘/etc/wildfly’ y copia en él la configuración de ejemplo ‘wildfly.conf’.
mkdir -p /etc/wildfly
cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly/
A continuación, copia el archivo de servicio ‘wildfly.service’ en el directorio ‘/etc/systemd/system’.
cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/
Después, copia la muestra del script de lanzamiento de wildfly en el directorio ‘/opt/wildfly/bin’ y hazlo ejecutable.
cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/
chmod +x /opt/wildfly/bin/*.sh
Ahora recarga el gestor systemd para aplicar el nuevo archivo ‘wildfly.service’.
systemctl daemon-reload
Inicia el servicio wildfly y añádelo al arranque del sistema.
systemctl start wildfly
systemctl enable wildfly
El servicio wildfly está en marcha en el sistema Ubuntu con la configuración por defecto.
Comprueba el servicio wildfly con el siguiente comando.
ss -plnt
systemctl status wildfly
Y obtendrás el resultado que se muestra a continuación.
Como se puede ver, el wildfly se ejecuta como un servicio systemd en el puerto TCP por defecto ‘8080’ en el sistema Ubuntu.
Paso 4 – Habilitar la consola de administración de WildFly
En este paso, configuraremos un wildfly para que se ejecute en la dirección IP local ‘127.0.0.1’ y habilitaremos su consola de administración. Editaremos la configuración de wildfly ‘wildfly.conf’, el script de inicio de wildfly ‘launch.sh’ y el archivo de servicio de wildfly ‘wildfly.service’.
Edita la configuración de wildfly ‘/etc/wildfly/wildfly.conf’ utilizando el editor vim.
vim /etc/wildfly/wildfly.conf
Ahora cambia el valor de ‘WILDFLY_BIND’ por la dirección IP local ‘127.0.0.1’.
WILDFLY_BIND=127.0.0.1
Para habilitar la consola de administración de wildfly, añade la configuración ‘WILDFLY_CONSOLE_BIND’ que aparece a continuación.
WILDFLY_CONSOLE_BIND=127.0.0.1
Guarda y cierra.
A continuación, edita el script de inicio de wildfly ‘/opt/wildfly/bin/launch.sh’ utilizando el editor vim.
vim /opt/wildfly/bin/launch.sh
En las líneas‘domain.sh‘ y‘standalone.sh‘, añade una opción adicional para activar la consola de administración de wildfly como se indica 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.
A continuación, edita el archivo de servicio por defecto para wildfly ‘/etc/systemd/system/wildfly.service’ utilizando el editor vim.
vim /etc/systemd/system/wildfly.service
En la línea‘ExecStart=/opt/wildfly/bin/launch.sh…. añade la opción‘$WILDFLY_CONSOLE_BIND‘ como se indica a continuación.
ExecStart=/opt/wildfly/bin/launch.sh $WILDFLY_MODE $WILDFLY_CONFIG $WILDFLY_BIND $WILDFLY_CONSOLE_BIND
Guarda y cierra.
Ahora recarga el gestor systemd y reinicia el servicio wildfly.
systemctl daemon-reload
systemctl restart wildfly
El servicio wildfly se está ejecutando con la consola de administración activada, compruébalo con el siguiente comando.
ss -plnt
systemctl status wildfly
A continuación se muestra el resultado que obtendrás.
El resultado es que wildfly se ejecuta en la dirección IP local‘127.0.0.1‘ con el puerto TCP por defecto‘8080‘, y la consola de administración de wildfly está habilitada en el puerto TCP‘9990‘.
Paso 5 – Configurar el usuario administrador de WildFly
En este paso, crearemos un nuevo usuario para administrar wildfly utilizando el script ‘add-user.sh’ proporcionado por wildfly.
Ejecuta el script ‘add-user.sh’ de wildfly como se indica a continuación.
sh /opt/wildfly/bin/add-user.sh
Para el tipo de usuario, escribe‘a‘ para crear el usuario de gestión (admin para gestionar wildfly).
What type of user do you wish to add?
a) Management User (mgmt-users.properties)
b) Application User (application-users.properties)
(a): a
Ahora escribe tu nombre de usuario y tu contraseña, y asegúrate de utilizar la contraseña segura.
Enter the details of the new user to add.
Using the realm 'ManagementRealm' as discovered from the existing property files.
Username : hakase
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 :
Para el grupo del nuevo usuario, pulsa ‘Enter‘ para continuar.
What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]:
A continuación, escribe «sí» para añadir tu usuario al«ManagementRealm» de wildfly.
About to add user 'hakase' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'hakase' to file '/opt/wildfly/standalone/configuration/mgmt-users.properties'
Added user 'hakase' to file '/opt/wildfly/domain/configuration/mgmt-users.properties'
Added user 'hakase' with groups to file '/opt/wildfly/standalone/configuration/mgmt-groups.properties'
Added user 'hakase' with groups to file '/opt/wildfly/domain/configuration/mgmt-groups.properties'
Escribe «sí» para habilitar a tu usuario como proceso de gestión del controlador de host maestro-esclavo de wildfly.
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 <secret value="YXNoN2RhNjVzZyMkJQ==" />
Como resultado, se ha creado el usuario administrador y gestor de wildfly.
Paso 6 – Configurar Nginx como proxy inverso para WildFly
En este paso, instalaremos y configuraremos Nginx como proxy inverso para wildfly en el sistema Ubuntu.
Instala los paquetes de Nginx utilizando el comando apt que aparece a continuación.
sudo apt install nginx -y
Una vez terminada la instalación, ve al directorio de configuración ‘/etc/nginx/’.
cd /etc/nginx/
Crea un nuevo archivo ‘proxy_headers.conf’ en el directorio ‘/etc/nginx/conf.d’ utilizando el editor vim.
vim conf.d/proxy_headers.conf
Pega la siguiente configuración.
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.
A continuación, crea una nueva configuración de host virtual para wildfly en el directorio ‘/etc/nginx/sites-available’.
vim sites-available/wildfly
Cambia la dirección IP por la tuya y pega la configuración en ella.
server {
listen 80;
server_name SERVER-IP;
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.
A continuación, activa el host virtual de wildfly y comprueba la configuración de Nginx.
ln -s /etc/nginx/sites-available/wildfly /etc/nginx/sites-enabled/
nginx -t
Asegúrate de que no hay ningún error y reinicia el servicio Nginx.
systemctl restart nginx
Como resultado, se ha completado la instalación de Nginx y la configuración de un proxy inverso para wildfly.
Paso 7 – Prueba
Abre tu navegador web y escribe la dirección IP de tu servidor en la barra de direcciones.
Ahora obtendrás la página de índice por defecto de wildfly como la que aparece a continuación.
A continuación, accede a la consola de administración de wildfly en la ruta URL ‘/console’ como se indica a continuación.
Accede con tu usuario y contraseña de administrador de wildfly.
Ahora obtendrás el panel de administración de wildfly como se muestra a continuación.
Como resultado, la instalación de wildfly con el proxy inverso Nginx en el servidor Ubuntu 20.04 se ha completado con éxito.