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 le permite desarrollar excelentes aplicaciones desde un único IDE. Es ligero, rápido, flexible y se basa en subsistemas enchufables. Se ejecuta en el sistema operativo Windows y Linux y tiene como objetivo proporcionar a los usuarios un entorno de tiempo de ejecución de Java rápido y estable. Wildfly viene con un amplio conjunto de funciones que incluyen tiempo de ejecución rápido y personalizable, escalabilidad, configuración y administración unificadas, carga simultánea, vinculación rápida, administración de dominios y muchas más.
En este tutorial, le mostraremos los pasos para instalar Wildfly con Nginx como proxy inverso en Debian 10.
Requisitos
- Un servidor que ejecuta Debian 10.
- Se configura una contraseña raíz para su servidor.
Cómo empezar
Antes de comenzar, deberá actualizar su sistema con la última versión. Puede hacerlo ejecutando el siguiente comando:
apt-get update -y
apt-get upgrade -y
Una vez que su servidor esté actualizado, reinícielo para aplicar los cambios.
Instalar Java
WildFly requiere que la versión 8 de Java esté instalada en su servidor. De forma predeterminada, Java 8 no está disponible en el repositorio predeterminado de Debian 10. Por lo tanto, deberá descargar Java 8 desde su sitio web oficial.
Después de descargar Java 8, extraiga la 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, ejecute el siguiente comando para cambiar la versión predeterminada de Java:
update-alternatives --config java
Seleccione la versión 8 de Java y presione Entrar. Debería ver el siguiente resultado:
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 Pressto 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
Luego, verifique la versión de Java usando el siguiente comando:
java -version
Deberías obtener el siguiente resultado:
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
Primero, deberá 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, descargue 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 que se complete la descarga, extraiga el archivo descargado con el siguiente comando:
unzip wildfly-17.0.1.Final.zip
A continuación, copie el directorio extraído en /opt/ con el siguiente comando:
cp -r wildfly-17.0.1.Final /opt/wildfly
A continuación, cambie la propiedad del directorio wildfly a usuario wildfly como se muestra a continuación:
chown -RH wildfly:wildfly /opt/wildfly
Una vez que haya terminado, puede continuar con el siguiente paso.
Configurar Wildfly
A continuación, deberá copiar los archivos necesarios para configurar WildFly.
Primero, copie 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, copie el archivo launch.sh en el directorio /opt/wildfly/bin/ con el siguiente comando:
cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/
A continuación, otorgue permiso de ejecución al archivo launch.sh:
sh -c 'chmod +x /opt/wildfly/bin/*.sh'
A continuación, copie el archivo de la 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, vuelva a cargar el demonio systemd con el siguiente comando:
systemctl daemon-reload
A continuación, inicie el servicio WildFly y habilítelo para que se inicie en el momento del arranque con el siguiente comando:
systemctl start wildfly
systemctl enable wildfly
Ahora puede verificar el estado del servicio Wildfly con el siguiente comando:
systemctl status wildfly
Deberías obtener el siguiente resultado:
? 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 WildFly
A continuación, deberá crear un usuario administrador para que Wildfly acceda a la consola de administración de WildFly. Puedes crearlo con el siguiente comando:
/opt/wildfly/bin/add-user.sh
Debería ver el siguiente resultado:
What type of user do you wish to add? a) Management User (mgmt-users.properties) b) Application User (application-users.properties) (a): a
Escriba a y pulsa Intro para crear un usuario de administración. Durante el proceso de creación del usuario, deberá proporcionar el nombre de usuario, la contraseña y el nombre del 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 que haya terminado, puede continuar con el siguiente paso.
Configure WildFly para que sea accesible desde un sistema remoto
De forma predeterminada, solo se puede acceder a Wildfly desde el sistema local. Por lo tanto, deberá configurarlo para acceder desde el sistema remoto. Puede hacerlo editando el archivo /etc/wildfly/wildfly.conf:
nano /etc/wildfly/wildfly.conf
Agregue la siguiente línea al final del archivo:
WILDFLY_CONSOLE_BIND=0.0.0.0
Guarde y cierre el archivo cuando haya terminado. Luego, abra el archivo /opt/wildfly/bin/launch.sh como se muestra a continuación:
nano /opt/wildfly/bin/launch.sh
Cambie 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
Guarde y cierre el archivo. Luego, abra el archivo /etc/systemd/system/wildfly.service.
nano /etc/systemd/system/wildfly.service
Cambie 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. Luego, cree el directorio /var/run/wildfly y configure los permisos correctos
mkdir /var/run/wildfly/
chown wildfly:wildfly /var/run/wildfly/
Finalmente, vuelva a cargar el demonio systemd y reinicie el servicio Wildfly para aplicar los cambios:
systemctl daemon-reload
systemctl restart wildfly
Una vez que haya terminado, puede continuar con el siguiente paso.
Acceder a Wildfly
Wildfly ahora está instalado y configurado para acceder desde el sistema remoto. De forma predeterminada, la consola de administración de Wildfly está escuchando en el puerto 9990. Puede acceder visitando la URL http://192.168.0.4:9990 . Será redirigido a la siguiente página:
Ahora, proporcione su nombre de usuario y contraseña de administrador y haga clic en Firmar en botón. Debería ver la consola de administración de Wildfly en la siguiente pantalla:
También puede acceder a la aplicación Wildfly visitando la URL http://192.168.0.4:8080 . Debería ver la siguiente página:
Configure Nginx como proxy inverso para Wildfly
A continuación, deberá configurar Nginx como un proxy inverso a la solicitud de proxy procedente del puerto 80 al 8080.
Primero, instale Nginx con el siguiente comando:
apt-get install nginx -y
Una vez que se haya instalado Nginx, cree un nuevo archivo de host virtual para Nginx con el siguiente comando:
nano /etc/nginx/sites-available/wildfly.conf
Agregue 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/; } }
Guarde y cierre el archivo cuando haya terminado. Luego, verifique Nginx por cualquier error de sintaxis con el siguiente comando:
nginx -t
Deberías obtener el siguiente resultado:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
A continuación, habilite el host virtual de Nginx y reinicie Nginx con el siguiente comando:
ln -s /etc/nginx/sites-available/wildfly.conf /etc/nginx/sites-enabled/
systemctl restart nginx
Ahora puede acceder a la aplicación Wildfly sin especificar el puerto 8080.
Eso es todo. Ha instalado y configurado correctamente Wildfly con Nginx como proxy inverso en Debian 10. No dude en consultarme si tiene alguna pregunta.