Installeer WildFly Java Applicatie Server met Nginx Reverse Proxy op Rocky Linux 8

WildFly is een open-source en cross-platform applicatieserver ontwikkeld door RedHat. Het is geschreven in Java en wordt gebruikt voor het ontwikkelen van Java toepassingen. Het is eenvoudig, flexibel, lichtgewicht en gebaseerd op pluggable subsystemen die naar behoefte kunnen worden toegevoegd of verwijderd. Het heeft een eenvoudig en gebruikersvriendelijk dashboard en wil gebruikers een snelle en stabiele Java runtime omgeving bieden.

In deze zelfstudie laten we je zien hoe je Wildfly installeert met Nginx als reverse proxy op Rocky Linux 8. Dezelfde stappen werken ook op AlmaLinux 8 en CentOS 8.

Vereisten

  • Een server met Rocky Linux 8 / AlmaLinux 8 of centOS 8.
  • Een root wachtwoord is op de server geconfigureerd.

Installeer Java

Wildfly is een Java-gebaseerde toepassing, dus Java moet op je server geïnstalleerd zijn. Als het niet geïnstalleerd is kun je het installeren met het volgende commando:

dnf install java-11-openjdk-devel -y

Na de installatie van Java kun je de geïnstalleerde versie van Java verifiëren met het volgende commando:

java --version

Je zou de volgende uitvoer moeten krijgen:

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)

Installeer Wildfly

Voordat je Wildfly installeert, moet je een aparte gebruiker en groep aanmaken om Wildfly te draaien. Je kunt ze aanmaken met het volgende commando:

groupadd --system wildfly
useradd -s /sbin/nologin --system -d /opt/wildfly -g wildfly wildfly

Vervolgens moet je de nieuwste versie van Wildfly downloaden van hun officiële website. Op het moment van schrijven van deze handleiding is de laatst beschikbare versie van Wildfly 20.0.1. Je kunt het downloaden met het volgende commando:

wget https://download.jboss.org/wildfly/20.0.1.Final/wildfly-20.0.1.Final.tar.gz

Zodra de download voltooid is, pak je het gedownloade bestand uit met het volgende commando:

tar -xvzf /root/wildfly-20.0.1.Final.tar.gz

Kopieer vervolgens de uitgepakte map naar de /opt met het volgende commando:

mv wildfly-20.0.1.Final /opt/wildfly

Maak vervolgens een map om Wildfly configuratiebestanden in op te slaan:

mkdir /etc/wildfly

Kopieer vervolgens alle benodigde bestanden naar de gewenste plaats met het volgende commando:

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/

Geef vervolgens het juiste eigendom en de juiste rechten aan de wildfly directory en bestanden met het volgende commando:

chmod +x /opt/wildfly/bin/launch.sh
chown -R wildfly:wildfly /opt/wildfly
chmod -R +x /opt/wildfly/

Herlaad vervolgens de systemd daemon met het volgende commando:

systemctl daemon-reload

Start vervolgens de Wildfly service en zet hem aan om bij het opstarten te starten met het volgende commando:

systemctl start wildfly
systemctl enable wildfly

Je kunt nu de status van de Wildfly dienst controleren met het volgende commando:

systemctl status wildfly

Je zou de volgende uitvoer moeten krijgen:

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

Op dit punt is Wildfly geïnstalleerd en gestart. Standaard luistert de wildfly applicatieserver op poort 8080. Je kunt het controleren met het volgende commando:

ss -tunelp | grep 8080

Je zou de volgende uitvoer moeten krijgen:

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

Wildfly admin console luistert op poort 9990. Je kunt het controleren met het volgende commando:

ss -tunelp | grep 9990

Je zou de volgende uitvoer moeten krijgen:

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

Voeg Wildfly admin gebruiker toe

Om toegang te krijgen tot WildFly administratieconsole, moet je een administratieve gebruiker voor Wildfly aanmaken. Je kunt die aanmaken met het volgende commando:

/opt/wildfly/bin/add-user.sh

Je wordt gevraagd het type gebruiker te kiezen dat je wilt toevoegen, zoals hieronder:

What type of user do you wish to add? 
 a) Management User (mgmt-users.properties) 
 b) Application User (application-users.properties)
(a): a           

Typ a voor beheersgebruiker en druk op Enter. Je zou de volgende uitvoer moeten zien:

Enter the details of the new user to add.
Using realm 'ManagementRealm' as discovered from the existing property files.
Username : wildflyadmin

Geef je gewenste gebruikersnaam en druk op Enter. Je zou de volgende uitvoer moeten zien:

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 : 

Geef je wachtwoord en druk op Enter. Je zou de volgende uitvoer moeten zien:

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 

Op dit punt is je Wildfly management gebruiker aangemaakt. Je kunt verder gaan naar de volgende stap.

Configureer Firewall en SELinux

Standaard is SELinux ingeschakeld in Rocky Linux 8. Je zult dus SELinux moeten instellen voor Wildfly. Je kunt dat doen met het volgende commando:

semanage fcontext -a -t bin_t "/opt/wildfly/bin(/.*)?"
restorecon -Rv /opt/wildfly/bin/
setsebool -P httpd_can_network_connect 1

Vervolgens moet je poort 8080, 9990 en 80 door de firewall toelaten. Je kunt dat doen met het volgende commando:

firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=9990/tcp
firewall-cmd --permanent --add-port=80/tcp

Herlaad vervolgens de firewalld om de veranderingen toe te passen.

firewall-cmd --reload

Als je klaar bent, kun je verder gaan met de volgende stap.

Toegang tot Wildfly Admin Console

Standaard is Wildfly admin console alleen toegankelijk vanaf de localhost. Je zult /opt/wildfly/bin/launch.sh moeten bewerken en enkele veranderingen aanbrengen voor externe toegang.

nano /opt/wildfly/bin/launch.sh

Zoek de volgende regel:

    $WILDFLY_HOME/bin/standalone.sh -c $2 -b $3

En vervang die door de volgende regel:

    $WILDFLY_HOME/bin/standalone.sh -c $2 -b $3 -bmanagement=0.0.0.0

Bewaar en sluit het bestand en herstart dan de Wildfly dienst om de veranderingen toe te passen.

systemctl restart wildfly

Open nu je web browser en ga naar de Wildfly admin console met de URL http://your-server-ip:9990. Je wordt gevraagd om gebruikersnaam en wachtwoord op te geven zoals hieronder:

WildFly

Geef je Wildfly admin gebruikersnaam en wachtwoord op en klik op de knop Sign in. Eenmaal ingelogd zou je het Wildfly admin dashboard moeten zien in het volgende scherm:

WildFly Dashboard

Configureer Nginx als omgekeerde proxy voor Wildfly

Standaard is de Wildfly toepassing toegankelijk op poort 8080. Het is dus aan te bevelen Nginx als een omgekeerde proxy in te stellen, zodat de toepassing via poort 80 benaderd kan worden.

Installeer eerst de Nginx webserver met het volgende commando;

dnf install nginx -y

Maak, eenmaal geïnstalleerd, een nieuw Wildfly configuratiebestand aan met het volgende commando:

nano /etc/nginx/conf.d/wildfly.conf

Voeg de volgende regels toe:

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/;
  }
}

Bewaar en sluit het bestand en controleer dan de Nginx op een eventuele configuratiefout met het volgende commando:

nginx -t

Als alles in orde is zou je de volgende uitvoer moeten krijgen:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Start vervolgens de Nginx en zet hem aan om te starten bij systeem herstart met het volgende commando:

systemctl start nginx
systemctl enable nginx

Je kunt ook de status van de Nginx dienst controleren met het volgende commando:

systemctl status nginx

Je zou de volgende uitvoer moeten krijgen:

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

Op dit punt is Nginx geïnstalleerd en geconfigureerd om je Wildfly toepassing te serveren. Je kunt nu de Wildfly toepassing benaderen met de URL http://your-server-ip. Je zou het volgende scherm moeten zien:

Welkom bij WildFly

Conclusie

In deze gids leerden we hoe Wildfly te installeren en remote toegang mogelijk te maken op Rocky Linux 8. We stelden ook Nginx in als een reverse proxy om de Wildfly te benaderen via poort 80. Nu kun je beginnen met het bouwen van de Java toepassing en die beheren vanaf de Widlfly admin console.