Wie installiere und konfiguriere ich WildFly (JBoss) unter Debian 11

Wildfly ist ein in Java geschriebener Anwendungsserver, der von RedHat entwickelt wurde. Es ist ein einfacher, schlanker und leistungsstarker Server mit einer CLI und einer Verwaltungskonsole. Er ist quelloffen, plattformübergreifend und basiert auf steckbaren Subsystemen, die je nach Bedarf hinzugefügt oder entfernt werden können. Er bietet alle notwendigen Funktionen, um eine Java-Webanwendung zu betreiben.

In diesem Lernprogramm zeige ich dir, wie du Wildfly mit Nginx als Reverse Proxy unter Debian 11 installierst.

Voraussetzungen

  • Ein Server, auf dem Debian 11 läuft.
  • Ein gültiger Domainname, der auf die IP deines Servers zeigt.
  • Ein Root-Passwort ist auf deinem Server konfiguriert.

Java JDK installieren

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

apt-get install default-jdk -y

Sobald Java installiert ist, kannst du es mit folgendem Befehl überprüfen:

java --version

Du solltest die Java-Version in der folgenden Ausgabe sehen:

openjdk 11.0.12 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7-post-Debian-2deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.12+7-post-Debian-2deb10u1, mixed mode, sharing)

Wildfly installieren

Erstelle zunächst mit dem folgenden Befehl einen Benutzer und eine Gruppe, um die Wildfly-Anwendung auszuführen:

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

Als Nächstes lädst du die neueste Version von Wildfly mit dem Befehl wget herunter:

wget https://github.com/wildfly/wildfly/releases/download/25.0.1.Final/wildfly-25.0.1.Final.zip

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

unzip wildfly-25.0.1.Final.zip

Verschiebe das entpackte Verzeichnis mit folgendem Befehl in das Verzeichnis /opt:

mv wildfly-25.0.1.Final /opt/wildfly

Als Nächstes änderst du den Eigentümer des Verzeichnisses /opt/wildfly:

chown -RH wildfly:wildfly /opt/wildfly

Als Nächstes erstellst du mit folgendem Befehl ein Wildfly-Konfigurationsverzeichnis innerhalb von /etc:

mkdir -p /etc/wildfly

Als Nächstes kopierst du alle notwendigen Dateien aus dem Wildfly-Verzeichnis in das Verzeichnis /etc/wildfly:

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/

Setze als Nächstes die Ausführungsberechtigung für alle Shell-Skriptdateien:

chmod +x /opt/wildfly/bin/*.sh

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

systemctl daemon-reload

Starte und aktiviere den Wildfly-Dienst mit dem folgenden Befehl:

systemctl start wildfly
systemctl enable wildfly

Um den Status des Wildfly-Dienstes zu überprüfen, führe den folgenden Befehl aus:

systemctl status wildfly

Du erhältst die folgende Ausgabe:

? wildfly.service - The WildFly Application Server
   Loaded: loaded (/etc/systemd/system/wildfly.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2021-12-10 14:55:07 UTC; 6s ago
 Main PID: 20928 (launch.sh)
    Tasks: 59 (limit: 4701)
   Memory: 171.6M
   CGroup: /system.slice/wildfly.service
           ??20928 /bin/bash /opt/wildfly/bin/launch.sh standalone standalone.xml 0.0.0.0
           ??20929 /bin/sh /opt/wildfly/bin/standalone.sh -c standalone.xml -b 0.0.0.0
           ??21022 java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=tru

Dec 10 14:55:07 debian11 systemd[1]: Started The WildFly Application Server.

Wildfly Admin-Konsole einschalten

In der Standardeinstellung ist die Wildfly-Administrationskonsole deaktiviert. Es wird empfohlen, sie zu aktivieren, um die Wildfly-Anwendung zu verwalten.

Du kannst sie aktivieren, indem du die Wildfly-Konfigurationsdatei bearbeitest:

nano /etc/wildfly/wildfly.conf

Ändere die folgenden Zeilen:

WILDFLY_BIND=127.0.0.1
WILDFLY_CONSOLE_BIND=127.0.0.1

Speichere und schließe die Datei, bearbeite dann das Wildfly-Startskript und aktiviere die Verwaltungskonsole.

nano /opt/wildfly/bin/launch.sh

Ändere die Datei wie unten gezeigt:

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

Speichere und schließe die Datei und bearbeite dann die Wildfly systemd Datei:

nano /etc/systemd/system/wildfly.service

Ändere die folgende Zeile:

ExecStart=/opt/wildfly/bin/launch.sh $WILDFLY_MODE $WILDFLY_CONFIG $WILDFLY_BIND $WILDFLY_CONSOLE_BIND

Speichere und schließe die Datei und lade den systemd-Daemon neu, um die Konfigurationsänderungen zu übernehmen:

systemctl daemon-reload

Starte anschließend den Wildfly-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart wildfly

Du kannst den Status von Wildfly auch mit dem folgenden Befehl überprüfen:

systemctl status wildfly

Du erhältst die folgende Ausgabe:

? wildfly.service - The WildFly Application Server
   Loaded: loaded (/etc/systemd/system/wildfly.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2021-12-10 14:57:22 UTC; 3s ago
 Main PID: 21182 (launch.sh)
    Tasks: 64 (limit: 4701)
   Memory: 205.6M
   CGroup: /system.slice/wildfly.service
           ??21182 /bin/bash /opt/wildfly/bin/launch.sh standalone standalone.xml 127.0.0.1 127.0.0.1
           ??21183 /bin/sh /opt/wildfly/bin/standalone.sh -c standalone.xml -b 127.0.0.1 -bmanagement 127.0.0.1
           ??21282 java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=tru

Dec 10 14:57:22 debian11 systemd[1]: Started The WildFly Application Server.

Zu diesem Zeitpunkt ist Wildfly gestartet und lauscht auf den Ports 8080 und 9990. Du kannst sie mit dem folgenden Befehl überprüfen:

ss -plnt

Du erhältst die folgende Ausgabe:

State        Recv-Q       Send-Q             Local Address:Port             Peer Address:Port                                                 
LISTEN       0            128                      0.0.0.0:22                    0.0.0.0:*           users:(("sshd",pid=678,fd=3))            
LISTEN       0            128                    127.0.0.1:8443                  0.0.0.0:*           users:(("java",pid=21282,fd=485))        
LISTEN       0            50                     127.0.0.1:9990                  0.0.0.0:*           users:(("java",pid=21282,fd=487))        
LISTEN       0            80                     127.0.0.1:3306                  0.0.0.0:*           users:(("mysqld",pid=12461,fd=21))       
LISTEN       0            128                    127.0.0.1:8080                  0.0.0.0:*           users:(("java",pid=21282,fd=476))        
LISTEN       0            128                         [::]:22                       [::]:*           users:(("sshd",pid=678,fd=4))            

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

Wildfly Admin Benutzer erstellen

Als Nächstes musst du einen Admin-Benutzer anlegen, um auf die Wildfly-Administrationskonsole zuzugreifen. Du kannst ihn erstellen, indem du den folgenden Befehl ausführst:

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

Du wirst aufgefordert, die Art des Benutzers auszuwählen:

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 ein und drücke die Eingabetaste, um den Verwaltungsbenutzer hinzuzufügen. Du wirst aufgefordert, deinen Benutzernamen und dein Passwort wie unten gezeigt festzulegen:

Enter the details of the new user to add.
Using realm 'ManagementRealm' as discovered from the existing property files.
Username : hitesh
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 deinen Benutzernamen und dein Passwort ein und drücke die Eingabetaste. Du wirst gefragt, ob du Benutzer zum Realm hinzufügen möchtest:

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 'hitesh' for realm 'ManagementRealm'
Is this correct yes/no? yes

Gib Ja ein und drücke die Eingabetaste, um fortzufahren. Sobald der Benutzer hinzugefügt wurde, erhältst du die folgende Ausgabe:

Added user 'hitesh' to file '/opt/wildfly/standalone/configuration/mgmt-users.properties'
Added user 'hitesh' to file '/opt/wildfly/domain/configuration/mgmt-users.properties'
Added user 'hitesh' with groups  to file '/opt/wildfly/standalone/configuration/mgmt-groups.properties'
Added user 'hitesh' 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 Jakarta Enterprise Beans calls.
yes/no? yes
To represent the user add the following to the server-identities definition 

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

Nginx als Reverse Proxy installieren und konfigurieren

Als Nächstes musst du Nginx als Reverse Proxy konfigurieren, damit du über Port 80 auf Wildfly zugreifen kannst.

Installiere zunächst das Nginx-Paket mit dem unten stehenden Befehl:

apt-get install nginx -y

Sobald Nginx installiert ist, erstellst du eine Nginx-Proxy-Datei mit dem folgenden Befehl:

nano /etc/nginx/conf.d/proxy_headers.conf

Füge die folgenden Zeilen ein:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Front-End-Https on;
add_header Cache-Control no-cache;

Speichere und schließe die Datei und erstelle dann eine Nginx-Konfigurationsdatei für den virtuellen Host von Wildfly:

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

Füge die folgenden Zeilen hinzu:

server {
  listen          80;
  server_name     wildfly.yourdomain.com;

  location / {
    include conf.d/proxy_headers.conf;
    proxy_pass http://127.0.0.1:8080;
  }

  location /management {
    include conf.d/proxy_headers.conf;
    proxy_pass http://127.0.0.1:9990/management;
  }

  location /console {
    include conf.d/proxy_headers.conf;
    proxy_pass http://127.0.0.1:9990/console;
  }

  location /logout {
    include conf.d/proxy_headers.conf;
    proxy_pass http://127.0.0.1:9990/logout;
  }

  location /error {
    include conf.d/proxy_headers.conf;
    proxy_pass http://127.0.0.1:9990;
  }

}

Speichere und schließe die Datei und überprüfe Nginx mit folgendem Befehl auf Syntaxfehler:

nginx -t

Du solltest die folgende Ausgabe sehen:

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

Starte abschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart nginx

Du kannst den Nginx-Status auch mit folgendem Befehl überprüfen:

systemctl status nginx

Du erhältst die folgende Ausgabe:

? nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2021-12-10 15:12:26 UTC; 9s ago
     Docs: man:nginx(8)
  Process: 22115 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 22116 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 22117 (nginx)
    Tasks: 3 (limit: 4701)
   Memory: 3.8M
   CGroup: /system.slice/nginx.service
           ??22117 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ??22118 nginx: worker process
           ??22119 nginx: worker process

Dec 10 15:12:25 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 10 15:12:26 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

Jetzt ist Nginx installiert und so konfiguriert, dass es Wildfly bedienen kann. Du kannst jetzt mit dem nächsten Schritt fortfahren.

Zugriff auf Wildfly Web UI

Öffne nun deinen Webbrowser und rufe die Wildfly-Anwendungsseite über die URL http://wildfly.yourdomain.com auf. Du solltest die Wildfly-Standardseite auf dem folgenden Bildschirm sehen:

WildFly JAVA Anwendungsserver

Um auf die Wildfly-Administrationskonsole zuzugreifen, gib die URL http://wildfly.yourdomain.com/console/ in deinen Webbrowser ein. Du wirst aufgefordert, einen Admin-Benutzernamen und ein Passwort einzugeben (siehe unten):

WildFly Anmeldung

Gib deinen Admin-Benutzernamen und dein Passwort ein und klicke auf die Schaltfläche “ Anmelden „. Sobald du eingeloggt bist, solltest du das Wildfly Admin-Dashboard sehen:

WildFly Admin Dashboard

Fazit

Herzlichen Glückwunsch! Du hast Wildfly mit Nginx als Reverse Proxy unter Debian 11 erfolgreich installiert. Jetzt kannst du Wildfly nutzen, um deine Java-Anwendung im Internet zu hosten. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.

Das könnte dich auch interessieren …