Instale el servidor de aplicaciones WildFly Java con Nginx Reverse Proxy en Rocky Linux 8
En esta página
- Requisitos previos
- Instalar Java
- Instalar Wildfly
- Agregar usuario administrador de Wildfly
- Configurar cortafuegos y SELinux
- Acceder a la consola de administración de Wildfly
- Configurar Nginx como proxy inverso para Wildfly
- Conclusión
WildFly es un servidor de aplicaciones de código abierto y multiplataforma desarrollado por RedHat. Está escrito en Java y se utiliza para desarrollar aplicaciones Java. Es simple, flexible, liviano y se basa en subsistemas enchufables que se pueden agregar o quitar según sus requisitos. Viene con un tablero simple y fácil de usar y tiene como objetivo proporcionar a los usuarios un entorno de tiempo de ejecución de Java rápido y estable.
En este tutorial, le mostraremos cómo instalar Wildfly con Nginx como proxy inverso en Rocky Linux 8. Los mismos pasos también funcionarán en AlmaLinux 8 y CentOS 8.
requisitos previos
- Un servidor que ejecuta Rocky Linux 8/AlmaLinux 8 o centOS 8.
- Se configura una contraseña raíz en el servidor.
Instalar Java
Wildfly es una aplicación basada en Java, por lo que Java debe estar instalado en su servidor. Si no está instalado, puede instalarlo con el siguiente comando:
dnf install java-11-openjdk-devel -y
Después de instalar Java, puede verificar la versión instalada de Java con el siguiente comando:
java --version
Deberías obtener el siguiente resultado:
openjdk 11.0.8 2020-07-14 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.8+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode, sharing)
Instalar Wildfly
Antes de instalar Wildfly, deberá crear un usuario y un grupo independientes para ejecutar Wildfly. Puedes crearlos con el siguiente comando:
groupadd --system wildfly
useradd -s /sbin/nologin --system -d /opt/wildfly -g wildfly wildfly
A continuación, deberá descargar la última versión de Wildfly desde su sitio web oficial. Al momento de escribir este tutorial, la última versión disponible de Wildfly es 20.0.1. Puedes descargarlo con el siguiente comando:
wget https://download.jboss.org/wildfly/20.0.1.Final/wildfly-20.0.1.Final.tar.gz
Una vez que se complete la descarga, extraiga el archivo descargado con el siguiente comando:
tar -xvzf /root/wildfly-20.0.1.Final.tar.gz
A continuación, copie el directorio extraído en /opt con el siguiente comando:
mv wildfly-20.0.1.Final /opt/wildfly
A continuación, cree un directorio para almacenar los archivos de configuración de Wildfly:
mkdir /etc/wildfly
A continuación, copie todos los archivos necesarios en la ubicación deseada con el siguiente comando:
cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly/
cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/
cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/
A continuación, otorgue la propiedad y los permisos adecuados al directorio y los archivos de wildfly con el siguiente comando:
chmod +x /opt/wildfly/bin/launch.sh
chown -R wildfly:wildfly /opt/wildfly
chmod -R +x /opt/wildfly/
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 arranque con el siguiente comando:
systemctl start wildfly
systemctl enable wildfly
Ahora puede verificar el estado del servicio de 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: disabled)
Active: active (running) since Sun 2020-09-13 05:57:22 EDT; 16s ago
Main PID: 31834 (launch.sh)
Tasks: 123 (limit: 12527)
Memory: 304.1M
CGroup: /system.slice/wildfly.service
??31834 /bin/bash /opt/wildfly/bin/launch.sh standalone standalone.xml 0.0.0.0
??31835 /bin/sh /opt/wildfly/bin/standalone.sh -c standalone.xml -b 0.0.0.0
??31925 java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=tru>
Sep 13 05:57:22 centos8 systemd[1]: Started The WildFly Application Server.
En este punto, Wildfly está instalado e iniciado. De forma predeterminada, el servidor de aplicaciones wildfly está escuchando en el puerto 8080. Puede verificarlo con el siguiente comando:
ss -tunelp | grep 8080
Deberías obtener el siguiente resultado:
tcp LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("java",pid=31925,fd=478)) uid:989 ino:59014 sk:9
La consola de administración de Wildfly está escuchando en el puerto 9990. Puede verificarlo con el siguiente comando:
ss -tunelp | grep 9990
Deberías obtener el siguiente resultado:
tcp LISTEN 0 50 127.0.0.1:9990 0.0.0.0:* users:(("java",pid=31925,fd=138)) uid:989 ino:59017 sk:7
Agregar usuario administrador de Wildfly
Para acceder a la consola de administración de WildFly, deberá crear un usuario administrativo para Wildfly. Puedes crearlo con el siguiente comando:
/opt/wildfly/bin/add-user.sh
Se le pedirá que elija el tipo de usuario que desea agregar como se muestra a continuación:
What type of user do you wish to add?
a) Management User (mgmt-users.properties)
b) Application User (application-users.properties)
(a): a
Escriba un para el usuario de administración y presione Entrar. Debería ver el siguiente resultado:
Enter the details of the new user to add.
Using realm 'ManagementRealm' as discovered from the existing property files.
Username : wildflyadmin
Proporcione su nombre de usuario deseado y presione Entrar. Debería ver el siguiente resultado:
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 :
Proporcione su contraseña y presione Entrar. Debería ver el siguiente resultado:
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
En este punto, se crea su usuario de administración de Wildfly. Puede continuar con el siguiente paso.
Configurar cortafuegos y SELinux
De manera predeterminada, SELinux está habilitado en Rocky Linux 8. Por lo tanto, deberá configurar SELinux para Wildfly. Puedes hacerlo con el siguiente comando:
semanage fcontext -a -t bin_t "/opt/wildfly/bin(/.*)?"
restorecon -Rv /opt/wildfly/bin/
setsebool -P httpd_can_network_connect 1
A continuación, deberá permitir los puertos 8080, 9990 y 80 a través del firewall. Puedes hacerlo con el siguiente comando:
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=9990/tcp
firewall-cmd --permanent --add-port=80/tcp
A continuación, vuelva a cargar el firewalld para aplicar los cambios.
firewall-cmd --reload
Una vez que haya terminado, puede continuar con el siguiente paso.
Acceder a la consola de administración de Wildfly
De forma predeterminada, solo se puede acceder a la consola de administración de Wildfly desde el host local. Deberá editar /opt/wildfly/bin/launch.sh y realizar algunos cambios para el acceso externo.
nano /opt/wildfly/bin/launch.sh
Encuentra la siguiente línea:
$WILDFLY_HOME/bin/standalone.sh -c $2 -b $3
Y, reemplácelo con la siguiente línea:
$WILDFLY_HOME/bin/standalone.sh -c $2 -b $3 -bmanagement=0.0.0.0
Guarde y cierre el archivo, luego reinicie el servicio Wildfly para aplicar los cambios.
systemctl restart wildfly
Ahora, abra su navegador web y acceda a la consola de administración de Wildfly usando la URL http://your-server-ip:9990. Se le pedirá que proporcione un nombre de usuario y una contraseña como se muestra a continuación:
Proporcione su nombre de usuario y contraseña de administrador de Wildfly y haga clic en el botón Iniciar sesión. Una vez que inicie sesión, debería ver el panel de administración de Wildfly en la siguiente pantalla:
Configurar Nginx como proxy inverso para Wildfly
De forma predeterminada, se puede acceder a la aplicación Wildfly en el puerto 8080. Por lo tanto, se recomienda configurar Nginx como un proxy inverso para que se pueda acceder a través del puerto 80.
Primero, instale el servidor web Nginx con el siguiente comando;
dnf install nginx -y
Una vez instalado, cree un nuevo archivo de configuración de Wildfly con el siguiente comando:
nano /etc/nginx/conf.d/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 your-server-ip;
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, luego verifique el Nginx para ver si hay algún error de configuración con el siguiente comando:
nginx -t
Si todo está bien, debería 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, inicie Nginx y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:
systemctl start nginx
systemctl enable nginx
También puede verificar el estado del servicio Nginx con el siguiente comando:
systemctl status nginx
Deberías obtener el siguiente resultado:
? nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/nginx.service.d
??php-fpm.conf
Active: active (running) since Sun 2020-09-13 06:03:37 EDT; 5s ago
Process: 1775 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 1773 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 1771 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 1776 (nginx)
Tasks: 3 (limit: 12527)
Memory: 5.4M
CGroup: /system.slice/nginx.service
??1776 nginx: master process /usr/sbin/nginx
??1777 nginx: worker process
??1778 nginx: worker process
Sep 13 06:03:37 centos8 systemd[1]: Stopped The nginx HTTP and reverse proxy server.
Sep 13 06:03:37 centos8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Sep 13 06:03:37 centos8 nginx[1773]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Sep 13 06:03:37 centos8 nginx[1773]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Sep 13 06:03:37 centos8 systemd[1]: Started The nginx HTTP and reverse proxy server.
En este punto, Nginx está instalado y configurado para servir su aplicación Wildfly. Ahora puede acceder a la aplicación Wildfly utilizando la URL http://your-server-ip. Debería ver la siguiente pantalla:
Conclusión
En esta guía, aprendimos cómo instalar Wildfly y habilitar el acceso remoto en Rocky Linux 8. También configuramos Nginx como un proxy inverso para acceder a Wildfly a través del puerto 80. Ahora, puede comenzar a crear la aplicación Java y administrarla desde el Consola de administración de Widlfly.