Búsqueda de sitios web

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


Este tutorial existe para estas versiones del sistema operativo

  • Debian 11 (Bullseye)
  • Debian 10 (Buster)

En esta página

  1. Requisitos
  2. Cómo empezar
  3. Instalar Java
  4. Instalar Wildfly
  5. Configurar Wildfly
  6. Configurar la autenticación de WildFly
  7. Configurar WildFly para que sea accesible desde un sistema remoto
  8. Acceder a Wildfly
  9. Configurar Nginx como proxy inverso para Wildfly

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, enlace rápido, 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.

Empezando

Antes de comenzar, deberá actualizar su sistema con la última versión. Puede hacer esto 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

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, 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 presione Entrar 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 lo haya hecho, 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 lo haya hecho, puede continuar con el siguiente paso.

Acceder a Wildfly

Wildfly ahora está instalado y configurado para acceder desde el sistema remoto. De manera 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 el botón Iniciar sesió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ías ver la siguiente página:

Configurar Nginx como proxy inverso para Wildfly

A continuación, deberá configurar Nginx como un proxy inverso para la solicitud de proxy que viene en el puerto 80 a 8080.

Primero, instala 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. Ha instalado y configurado con éxito Wildfly con Nginx como proxy inverso en Debian 10. No dude en consultarme si tiene alguna pregunta.

Artículos relacionados: