WildFly installeren met Nginx als omgekeerde proxy op Debian 10

WildFly is een gratis, open-source en cross-platform applicatie runtime, geschreven in Java en ontwikkeld door Red Hat, waarmee je geweldige applicaties kunt ontwikkelen vanuit een enkele IDE. Het is lichtgewicht, snel, flexibel en gebaseerd op pluggable subsystemen. Het draait op Windows en Linux besturingssysteem en wil gebruikers een snelle en stabiele Java runtime omgeving bieden. Wildfly heeft een rijke verzameling mogelijkheden, waaronder, Snelle, aanpasbare runtime, Schaalbaarheid, Unified configuratie & beheer, Concurrent Loading, Snel linken, Domein beheer en nog veel meer.

In deze handleiding laten we je de stappen zien om Wildfly met Nginx als reverse proxy te installeren op Debian 10.

Vereisten

  • Een server met Debian 10.
  • Een root wachtwoord is ingesteld op je server.

Aan de slag

Voor je begint moet je je systeem updaten met de nieuwste versie. Je kunt dit doen door het volgende commando uit te voeren:

apt-get update -y
apt-get upgrade -y

Als je server bijgewerkt is, herstart je je server om de veranderingen toe te passen.

Installeer Java

WildFly vereist dat Java versie 8 op je server geïnstalleerd is. Java 8 is standaard niet beschikbaar in de Debian 10 standaard repository. Je zult dus Java 8 moeten downloaden van hun officiële website.

Na het downloaden van Java 8 pak je de Java broncode uit in de map /usr/lib/jvm met het volgende commando:

mkdir /usr/lib/jvm/
tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/lib/jvm/

Voer vervolgens het volgende commando uit om de standaard Java versie te veranderen:

update-alternatives --config java

Kies Java versie 8 en druk op Enter. Je zou de volgende uitvoer moeten zien:

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

Controleer vervolgens de Java versie met het volgende commando:

java -version

Je zou de volgende uitvoer moeten krijgen:

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)

Installeer Wildfly

Eerst moet je een gebruiker en groep aanmaken voor Wildfly. Je kunt die aanmaken met het volgende commando:

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

Download vervolgens de nieuwste versie van Wildfly met het volgende commando:

wget https://download.jboss.org/wildfly/17.0.1.Final/wildfly-17.0.1.Final.zip

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

unzip wildfly-17.0.1.Final.zip

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

cp -r wildfly-17.0.1.Final /opt/wildfly

Verander vervolgens het eigendom van de wildfly directory in wildfly user zoals hieronder:

chown -RH wildfly:wildfly /opt/wildfly

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

Wildfly configureren

Vervolgens moet je de nodige bestanden kopiëren om WildFly te configureren.

Kopieer eerst het WildFly configuratiebestand naar de map /etc/wildfly:

mkdir /etc/wildfly
cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly/

Kopieer vervolgens het bestand launch.sh naar de map /opt/wildfly/bin/ met het volgende commando:

cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/

Geef vervolgens uitvoeringstoestemming aan launch.sh bestand:

sh -c 'chmod +x /opt/wildfly/bin/*.sh'

Kopieer vervolgens het bestand Wildfly systemd unit naar de map /etc/systemd/system/:

cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/

Herlaad vervolgens de systemd daemon met het volgende commando:

systemctl daemon-reload

Start vervolgens de WildFly dienst 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: 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.

Configureer WildFly Authenticatie

Vervolgens moet je een administrator gebruiker aanmaken voor Wildfly om toegang te krijgen tot de WildFly admin console. Je kunt die aanmaken met het volgende commando:

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

Je zou de volgende uitvoer moeten zien:

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 en druk op Enter om een Beheerder gebruiker aan te maken. Tijdens het aanmaken van de gebruiker moet je gebruikersnaam, wachtwoord en groepsnaam opgeven zoals hieronder:

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 

Als je dat gedaan hebt, kun je verder gaan met de volgende stap.

Configureer WildFly om toegankelijk te zijn vanaf een extern systeem

Standaard is Wildfly alleen toegankelijk vanaf het lokale systeem. Je zult het dus moeten instellen om vanaf het remote systeem toegang te krijgen. Je kunt dat doen door het bestand /etc/wildfly/wildfly.conf te bewerken:

nano /etc/wildfly/wildfly.conf

Voeg de volgende regel toe aan het eind van het bestand:

WILDFLY_CONSOLE_BIND=0.0.0.0

Sla het bestand op en sluit het als je klaar bent. Open dan het bestand /opt/wildfly/bin/launch.sh zoals hieronder:

nano /opt/wildfly/bin/launch.sh

Verander het bestand als hieronder:

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

Bewaar en sluit het bestand. Open dan het bestand /etc/systemd/system/wildfly.service.

nano /etc/systemd/system/wildfly.service

Verander het bestand zoals hieronder getoond:

[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

Bewaar het bestand. Maak dan de map /var/run/wildfly aan en stel de juiste permissies in

mkdir /var/run/wildfly/
chown wildfly:wildfly /var/run/wildfly/

Herlaad tenslotte de systemd daemon en herstart de Wildfly service om de veranderingen toe te passen:

systemctl daemon-reload
systemctl restart wildfly

Als je dat gedaan hebt, kun je verder gaan met de volgende stap.

Toegang tot Wildfly

Wildfly is nu geïnstalleerd en geconfigureerd voor toegang vanaf het remote systeem. Standaard luistert de Wildfly beheerconsole op poort 9990. Je kunt er toegang toe krijgen door de URL http://192.168.0.4:9990 te bezoeken. Je wordt doorverwezen naar de volgende pagina:

Meld je aan bij Wildfly

Geef nu je admin gebruikersnaam en wachtwoord op, en klik op de knop Sign in. Je zou de Wildfly beheerconsole moeten zien in het volgende scherm:

HAL Beheerconsole

Je kunt de Wildfly toepassing ook openen door de URL http://192.168.0.4:8080 te bezoeken. Je zou de volgende pagina moeten zien:

Welkom bij WildFly

Configureer Nginx als een Reverse Proxy voor Wildfly

Vervolgens moet je Nginx instellen als een omgekeerde proxy om verzoeken die op poort 80 naar 8080 komen te proxy’en.

Installeer eerst Nginx met het volgende commando:

apt-get install nginx -y

Als Nginx geïnstalleerd is, maak je een nieuw virtual host bestand voor Nginx met het volgende commando:

nano /etc/nginx/sites-available/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     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/;
  }
}

Sla het bestand op en sluit het als je klaar bent. Controleer Nginx dan op een eventuele syntaxfout met het volgende commando:

nginx -t

Je zou 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

Schakel vervolgens de Nginx virtuele host in en herstart Nginx met het volgende commando:

ln -s /etc/nginx/sites-available/wildfly.conf /etc/nginx/sites-enabled/
systemctl restart nginx

Je kunt nu de Wildfly toepassing benaderen zonder de poort 8080 op te geven.

Dat is het. Je hebt Wildfly met succes geïnstalleerd en ingesteld met Nginx als omgekeerde proxy op Debian 10. Stel me gerust als je nog vragen hebt.