Installiere WildFly Java Application Server mit Nginx Reverse Proxy auf Rocky Linux 8

WildFly ist ein von RedHat entwickelter Open-Source und plattformübergreifender Anwendungsserver. Er ist in Java geschrieben und wird für die Entwicklung von Java-Anwendungen verwendet. Er ist einfach, flexibel, leichtgewichtig und basiert auf steckbaren Subsystemen, die je nach Bedarf hinzugefügt oder entfernt werden können. Es verfügt über ein einfaches und benutzerfreundliches Dashboard und zielt darauf ab, den Benutzern eine schnelle und stabile Java-Laufzeitumgebung zu bieten.

In diesem Lernprogramm zeigen wir dir, wie du Wildfly mit Nginx als Reverse Proxy auf Rocky Linux 8 installierst. Die gleichen Schritte funktionieren auch auf AlmaLinux 8 und CentOS 8.

Voraussetzungen

  • Ein Server mit Rocky Linux 8 / AlmaLinux 8 oder centOS 8.
  • Der Server ist mit einem Root-Passwort konfiguriert.

Java installieren

Wildfly ist eine Java-basierte Anwendung, daher muss Java auf deinem Server installiert sein. Wenn es nicht installiert ist, kannst du es mit dem folgenden Befehl installieren:

dnf install java-11-openjdk-devel -y

Nach der Installation von Java kannst du die installierte Version von Java mit dem folgenden Befehl überprüfen:

java --version

Du solltest die folgende Ausgabe erhalten:

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)

Wildfly installieren

Bevor du Wildfly installierst, musst du einen eigenen Benutzer und eine eigene Gruppe anlegen, um Wildfly auszuführen. Du kannst sie mit dem folgenden Befehl erstellen:

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

Als Nächstes musst du die neueste Version von Wildfly von der offiziellen Website herunterladen. Zum Zeitpunkt der Erstellung dieses Tutorials ist die neueste Version von Wildfly 20.0.1 verfügbar. Du kannst sie mit folgendem Befehl herunterladen:

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

Sobald der Download abgeschlossen ist, extrahiere die heruntergeladene Datei mit dem folgenden Befehl:

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

Als Nächstes kopierst du das entpackte Verzeichnis mit folgendem Befehl in das Verzeichnis /opt:

mv wildfly-20.0.1.Final /opt/wildfly

Als Nächstes erstellst du ein Verzeichnis, in dem die Wildfly-Konfigurationsdateien gespeichert werden:

mkdir /etc/wildfly

Kopiere alle erforderlichen Dateien mit folgendem Befehl an den gewünschten Ort:

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/

Als Nächstes gibst du mit folgendem Befehl die richtigen Rechte für das Wildfly-Verzeichnis und die Dateien an:

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

Als Nächstes lädst du den systemd-Daemon mit dem folgenden Befehl neu:

systemctl daemon-reload

Starte als Nächstes den Wildfly-Dienst und aktiviere ihn mit dem folgenden Befehl, damit er beim Booten startet:

systemctl start wildfly
systemctl enable wildfly

Jetzt kannst du den Status des Wildfly-Dienstes mit dem folgenden Befehl überprüfen:

systemctl status wildfly

Du solltest die folgende Ausgabe erhalten:

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

Zu diesem Zeitpunkt ist Wildfly installiert und gestartet. Standardmäßig lauscht der Wildfly-Anwendungsserver am Port 8080. Du kannst dies mit dem folgenden Befehl überprüfen:

ss -tunelp | grep 8080

Du solltest die folgende Ausgabe erhalten:

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

Die Wildfly-Administrationskonsole hört auf Port 9990. Du kannst dies mit dem folgenden Befehl überprüfen:

ss -tunelp | grep 9990

Du solltest die folgende Ausgabe erhalten:

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

Wildfly-Admin-Benutzer hinzufügen

Um auf die WildFly-Administrationskonsole zugreifen zu können, musst du einen administrativen Benutzer für Wildfly erstellen. Du kannst ihn mit dem folgenden Befehl erstellen:

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

Du wirst aufgefordert, den Typ des Benutzers auszuwählen, den du hinzufügen möchtest (siehe unten):

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

Gib a für Verwaltungsbenutzer ein und drücke Enter. Du solltest die folgende Ausgabe sehen:

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

Gib den gewünschten Benutzernamen ein und drücke die Eingabetaste. Du solltest die folgende Ausgabe sehen:

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 : 

Gib dein Passwort ein und drücke die Eingabetaste. Du solltest die folgende Ausgabe sehen:

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 

Jetzt ist dein Wildfly-Management-Benutzer erstellt. Du kannst mit dem nächsten Schritt fortfahren.

Firewall und SELinux konfigurieren

Da SELinux in Rocky Linux 8 standardmäßig aktiviert ist, musst du SELinux für Wildfly konfigurieren. Das kannst du mit dem folgenden Befehl tun:

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

Als Nächstes musst du die Ports 8080, 9990 und 80 für die Firewall freigeben. Dies kannst du mit dem folgenden Befehl tun:

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

Als Nächstes musst du die Firewalld neu laden, damit die Änderungen übernommen werden.

firewall-cmd --reload

Sobald du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Zugriff auf die Wildfly Admin-Konsole

Standardmäßig ist die Wildfly-Administrationskonsole nur vom localhost aus zugänglich. Du musst /opt/wildfly/bin/launch.sh bearbeiten und einige Änderungen für den externen Zugriff vornehmen.

nano /opt/wildfly/bin/launch.sh

Suche die folgende Zeile:

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

Und ersetze sie durch die folgende Zeile:

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

Speichere und schließe die Datei und starte den Wildfly-Dienst neu, um die Änderungen zu übernehmen.

systemctl restart wildfly

Öffne nun deinen Webbrowser und rufe die Wildfly-Administrationskonsole über die URL http://your-server-ip:9990 auf. Du wirst aufgefordert, deinen Benutzernamen und dein Passwort einzugeben (siehe unten):

WildFly

Gib deinen Wildfly-Admin-Benutzernamen und dein Passwort ein und klicke auf die Schaltfläche Anmelden. Nach der Anmeldung solltest du das Wildfly-Admin-Dashboard auf dem folgenden Bildschirm sehen:

WildFly Dashboard

Nginx als Reverse Proxy für Wildfly konfigurieren

Standardmäßig ist die Wildfly-Anwendung über den Port 8080 erreichbar. Es wird daher empfohlen, Nginx als Reverse Proxy zu konfigurieren, damit der Zugriff über Port 80 möglich ist.

Installiere zunächst den Nginx Webserver mit dem folgenden Befehl;

dnf install nginx -y

Nach der Installation erstellst du eine neue Wildfly-Konfigurationsdatei mit dem folgenden Befehl:

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

Füge die folgenden Zeilen hinzu:

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

Speichere und schließe die Datei und überprüfe Nginx mit dem folgenden Befehl auf Konfigurationsfehler:

nginx -t

Wenn alles in Ordnung ist, solltest du die folgende Ausgabe erhalten:

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

Starte als Nächstes Nginx und aktiviere es mit folgendem Befehl, damit es beim Neustart des Systems gestartet wird:

systemctl start nginx
systemctl enable nginx

Du kannst den Status des Nginx-Dienstes auch mit dem folgenden Befehl überprüfen:

systemctl status nginx

Du solltest die folgende Ausgabe erhalten:

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

Jetzt ist Nginx installiert und so konfiguriert, dass es deine Wildfly-Anwendung bedienen kann. Du kannst nun über die URL http://your-server-ip auf die Wildfly-Anwendung zugreifen . Du solltest den folgenden Bildschirm sehen:

Willkommen bei WildFly

Fazit

In dieser Anleitung haben wir gelernt, wie man Wildfly installiert und den Fernzugriff auf Rocky Linux 8 aktiviert. Außerdem haben wir Nginx als Reverse Proxy konfiguriert, um über den Port 80 auf Wildfly zuzugreifen. Jetzt kannst du mit der Erstellung der Java-Anwendung beginnen und sie über die Widlfly-Administrationskonsole verwalten.

Das könnte dich auch interessieren …