Wildfly è un server applicativo scritto in Java e sviluppato da RedHat. È un server semplice, leggero e potente con una CLI e una console di amministrazione. È open source, multipiattaforma e basato su sottosistemi collegabili che possono essere aggiunti o rimossi secondo necessità. Fornisce tutte le funzionalità necessarie per eseguire un'applicazione Web Java.
In questo tutorial, ti mostrerò come installare Wildfly con Nginx come proxy inverso su Debian 11.
Prerequisiti
- Un server che esegue Debian 11.
- Un nome di dominio valido puntato all'IP del tuo server.
- Sul tuo server è configurata una password di root.
Installa Java JDK
Wildfly è un'applicazione basata su Java, quindi Java deve essere installato sul tuo server. Se non è installato, puoi installarlo eseguendo il seguente comando:
apt-get install default-jdk -y
Una volta installato Java, puoi verificarlo utilizzando il seguente comando:
java --version
Dovresti vedere la versione Java nel seguente output:
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)
Installa Wildfly
Innanzitutto, crea un utente e un gruppo per eseguire l'applicazione Wildfly utilizzando il comando seguente:
groupadd -r wildfly
useradd -r -g wildfly -d /opt/wildfly -s /sbin/nologin wildfly
Quindi, scarica l'ultima versione di Wildfly usando il comando wget:
wget https://github.com/wildfly/wildfly/releases/download/25.0.1.Final/wildfly-25.0.1.Final.zip
Una volta completato il download, decomprimere il file scaricato con il seguente comando:
unzip wildfly-25.0.1.Final.zip
Quindi, sposta la directory estratta in /opt usando il comando seguente:
mv wildfly-25.0.1.Final /opt/wildfly
Quindi, cambia la proprietà della directory /opt/wildfly:
chown -RH wildfly:wildfly /opt/wildfly
Quindi, crea una directory di configurazione Wildfly all'interno di /etc usando il seguente comando:
mkdir -p /etc/wildfly
Quindi, copia tutti i file necessari dalla directory Wildfly alla directory /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/
Quindi, imposta il permesso di esecuzione su tutti i file di script della shell:
chmod +x /opt/wildfly/bin/*.sh
Quindi, ricarica il demone systemd con il seguente comando:
systemctl daemon-reload
Successivamente, avvia e abilita il servizio Wildfly utilizzando il seguente comando:
systemctl start wildfly
systemctl enable wildfly
Per controllare lo stato del servizio Wildfly, esegui il comando seguente:
systemctl status wildfly
Otterrai il seguente output:
? 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.
Abilita Console di amministrazione Wildfly
Per impostazione predefinita, la console di amministrazione di Wildfly è disabilitata. Si consiglia di abilitarlo per gestire l'applicazione Wildfly.
Puoi abilitarlo modificando il file di configurazione di Wildfly:
nano /etc/wildfly/wildfly.conf
Modifica le seguenti righe:
WILDFLY_BIND=127.0.0.1 WILDFLY_CONSOLE_BIND=127.0.0.1
Salva e chiudi il file, quindi modifica lo script di avvio di Wildfly e abilita la console di amministrazione.
nano /opt/wildfly/bin/launch.sh
Modifica il file come mostrato di seguito:
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
Salva e chiudi il file, quindi modifica il file systemd di Wildfly:
nano /etc/systemd/system/wildfly.service
Modifica la seguente riga:
ExecStart=/opt/wildfly/bin/launch.sh $WILDFLY_MODE $WILDFLY_CONFIG $WILDFLY_BIND $WILDFLY_CONSOLE_BIND
Salva e chiudi il file, quindi ricarica il demone systemd per applicare le modifiche alla configurazione:
systemctl daemon-reload
Quindi, riavvia il servizio Wildfly per applicare le modifiche:
systemctl restart wildfly
Puoi anche controllare lo stato del Wildfly con il seguente comando:
systemctl status wildfly
Otterrai il seguente output:
? 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.
A questo punto Wildfly viene avviato ed è in ascolto sulle porte 8080 e 9990. Puoi verificarle con il seguente comando:
ss -plnt
Otterrai il seguente output:
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))
Una volta terminato, puoi procedere al passaggio successivo.
Crea utente amministratore Wildfly
Successivamente, dovrai anche creare un utente amministratore per accedere alla console di amministrazione di Wildfly. Puoi crearlo eseguendo il seguente comando:
sh /opt/wildfly/bin/add-user.sh
Ti verrà chiesto di scegliere i tipi di utente:
What type of user do you wish to add? a) Management User (mgmt-users.properties) b) Application User (application-users.properties) (a): a
Digitare a e premere il tasto Invio per aggiungere l'utente di gestione. Ti verrà chiesto di definire il tuo nome utente e password come mostrato di seguito:
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 :
Fornisci il tuo nome utente, password e premi Invio . Ti verrà chiesto di aggiungere utenti al regno:
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
Digita sì e premi Invio chiave per continuare. Una volta aggiunto l'utente, otterrai il seguente output:
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
Una volta terminato, puoi procedere al passaggio successivo.
Installa e configura Nginx come proxy inverso
Successivamente, dovrai configurare Nginx come proxy inverso per accedere a Wildfly tramite la porta 80.
Innanzitutto, installa il pacchetto Nginx usando il comando seguente:
apt-get install nginx -y
Una volta installato Nginx, crea un file proxy Nginx con il seguente comando:
nano /etc/nginx/conf.d/proxy_headers.conf
Aggiungi le seguenti righe:
proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; add_header Front-End-Https on; add_header Cache-Control no-cache;
Salva e chiudi il file, quindi crea un file di configurazione dell'host virtuale Nginx per Wildfly:
nano /etc/nginx/conf.d/wildfly.conf
Aggiungi le seguenti righe:
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; } }
Salva e chiudi il file, quindi verifica Nginx per eventuali errori di sintassi utilizzando il seguente comando:
nginx -t
Dovresti vedere il seguente output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Infine, riavvia il servizio Nginx per applicare le modifiche:
systemctl restart nginx
Puoi anche controllare lo stato di Nginx usando il comando seguente:
systemctl status nginx
Otterrai il seguente output:
? 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.
A questo punto, Nginx è installato e configurato per servire Wildfly. Ora puoi procedere al passaggio successivo.
Accedi all'interfaccia utente Web di Wildfly
Ora apri il tuo browser web e accedi alla pagina dell'applicazione Wildfly utilizzando l'URL http://wildfly.yourdomain.com . Dovresti vedere la pagina predefinita di Wildfly nella schermata seguente:
Per accedere alla console di amministrazione di Wildfly, digita l'URL http://wildfly.yourdomain.com/console/ nel tuo browser web. Ti verrà chiesto di fornire un nome utente e una password di amministratore come mostrato di seguito:
Fornisci il nome utente e la password dell'amministratore e fai clic su Accedi pulsante. Una volta effettuato l'accesso, dovresti vedere la dashboard dell'amministratore di Wildfly:
Conclusione
Congratulazioni! hai installato correttamente Wildfly con Nginx come proxy inverso su Debian 11. Ora puoi usare Wildfly per ospitare la tua applicazione Java su Internet. Sentiti libero di chiedermi se hai domande.