Introduzione

WildFly, precedentemente noto come JBoss, è un runtime di applicazioni open source multipiattaforma scritto in Java che ti aiuta a creare incredibili applicazioni. WildFly è flessibile, leggero e si basa su sottosistemi collegabili che possono essere aggiunti o rimossi secondo necessità.

In questo tutorial ti guideremo attraverso i passaggi necessari per installare il server delle applicazioni WildFly su Debian 10.

Prerequisiti

L'utente che ha effettuato l'accesso deve disporre dei privilegi di sudo per poter installare i pacchetti.

Se desideri installare WildFly su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Installare Java OpenJDK

WildFly richiede l'installazione di Java. Installiamo OpenJDK su Debian 19:

sudo apt update
sudo apt install default-jdk

Creare un utente

Crea un nuovo utente e gruppo di sistema denominato wildfly con home directory /opt/wildfly che eseguirà il servizio WildFly:

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

Installare WildFly

Nel momento in cui scrivo, l'ultima versione di WildFly è la 18.0.1. Prima di continuare con il passaggio successivo, è necessario controllare la pagina di download per una nuova versione. Se è disponibile una nuova versione, sostituire la variabile WILDFLY_VERSION nel comando seguente.

Scarica l'archivio WildFly nella directory /tmp usando il seguente comando wget:

WILDFLY_VERSION=18.0.1.Final
wget https://download.jboss.org/wildfly/$WILDFLY_VERSION/wildfly-$WILDFLY_VERSION.tar.gz -P /tmp

Una volta completato il download, estrarre il file tar.gz e spostarlo nella directory /opt:

sudo tar xf /tmp/wildfly-$WILDFLY_VERSION.tar.gz -C /opt/

Crea un collegamento simbolico wildfly che punterà alla directory di installazione di WildFly:

sudo ln -s /opt/wildfly-$WILDFLY_VERSION /opt/wildfly

WildFly viene eseguito come utente wildfly che deve avere accesso alla directory di installazione di WildFly. Cambia la proprietà della directory in utente e gruppo wildfly:

sudo chown -RH wildfly: /opt/wildfly

Configurare Systemd

Il pacchetto WildFly include i file necessari per eseguire WildFly come servizio.

Inizia creando una directory che conterrà il file di configurazione WildFly:

sudo mkdir -p /etc/wildfly

Copia il file di configurazione nella directory /etc/wildfly:

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

Questo file consente di specificare la modalità WildFly e l'indirizzo di bind. Per impostazione predefinita, WildFly verrà eseguito in modalità autonoma e ascolterà tutte le interfacce. Per una configurazione standard non è necessario modificare il file di configurazione, in caso contrario aprire il seguente file e modificalo in base alle tue esigenze:

sudo nano /etc/wildfly/wildfly.conf
# The configuration you want to run
WILDFLY_CONFIG=standalone.xml

# The mode you want to run
WILDFLY_MODE=standalone

# The address to bind to
WILDFLY_BIND=0.0.0.0

Quindi, copia lo script WildFly launch.sh nella directory /opt/wildfly/bin/:

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

Gli script all'interno della director biny devono avere flag eseguibili:

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

L'ultimo passaggio consiste nel copiare il file di unità systemd denominato nella directory /etc/systemd/system/:

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

Ricarica la configurazione del gestore di sistema:

sudo systemctl daemon-reload

Avvia e abilita il servizio WildFly per l'avvio automatico all'avvio:

sudo systemctl start wildfly
sudo systemctl enable wildfly

Controlla lo stato del servizio con il seguente comando:

sudo systemctl status wildfly
● wildfly.service - The WildFly Application Server
   Loaded: loaded (/etc/systemd/system/wildfly.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-01-11 16:13:02 CET; 6s ago
 Main PID: 3652 (launch.sh)
    Tasks: 54 (limit: 2301)
   Memory: 144.7M
   CGroup: /system.slice/wildfly.service
           ├─3652 /bin/bash /opt/wildfly/bin/launch.sh standalone standalone.xml 0.0.0.0
           ├─3653 /bin/sh /opt/wildfly/bin/standalone.sh -c standalone.xml -b 0.0.0.0
           └─3733 java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.prefer

Configurare il firewall

Se il tuo server è protetto da un firewall e desideri accedere all'interfaccia WildFly dall'esterno della tua rete locale, devi aprire la porta 8080.

Per consentire il traffico sulla porta 8080 digitare il comando seguente:

sudo ufw allow 8080/tcp

Quando si esegue un'applicazione WildFly in un ambiente di produzione, molto probabilmente si avrà un bilanciamento del carico o un proxy inverso ed è consigliabile limitare l'accesso alla porta 8080 solo alla propria rete interna.

Configurare l'autenticazione WildFly

Ora che WildFly è installato e in esecuzione, il passaggio successivo è creare un utente che sarà in grado di connettersi utilizzando la console di amministrazione o in remoto tramite l'interfaccia della riga di comando.

Per aggiungere un nuovo utente usa lo script add-user.sh che si trova nella directory bin di WildFly:

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

Ti verrà chiesto quale tipo di utente desideri aggiungere:

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

Seleziona a e premi Enter:

Successivamente, lo script ti chiederà di inserire i dettagli del nuovo utente:

Enter the details of the new user to add.
Using realm 'ManagementRealm' as discovered from the existing property files.
Username : Noviello
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 'Noviello' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'Noviello' to file '/opt/wildfly-18.0.1.Final/standalone/configuration/mgmt-users.properties'
Added user 'Noviello' to file '/opt/wildfly-18.0.1.Final/domain/configuration/mgmt-users.properties'
Added user 'Noviello' with groups  to file '/opt/wildfly-18.0.1.Final/standalone/configuration/mgmt-groups.properties'
Added user 'Noviello' with groups  to file '/opt/wildfly-18.0.1.Final/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 <secret value="UGllcm8xMmVfIQ==" />

Il nuovo utente verrà aggiunto ai file delle proprietà utilizzati per l'autenticazione.

Test dell'installazione di WildFly

Per accedere alla pagina WildFly predefinita, apri il browser e digita l'indirizzo IP o il tuo nome dominio specificando la porta 8080:http://TUO_DOMINIO_O_IP>:8080

Supponendo che l'installazione abbia esito positivo, visualizzerai la pagina di benvenuto di WildFly.

Accedere alla console di amministrazione WildFly

Interfaccia a riga di comando

Per accedere alla console di amministrazione WildFly dalla riga di comando è possibile utilizzare lo script jboss-cli.sh.

Passare alla directory bin di WildFly ed eseguire lo script con l'opzione --connect:

cd /opt/wildfly/bin/
./jboss-cli.sh --connect

Ti verrà chiesto di inserire il nome utente e la password amministrativi creati precedentemente, o verrà effettuato il primo login in modo automatico:

Authenticating against security realm: ManagementRealm
Username: Noviello
Password:

Una volta effettuato l'accesso, il prompt della console cambierà in [[email protected]:9990 /]. Digitare help per ottenere un elenco di comandi e sintassi dei comandi.

Da qui è possibile distribuire e annullare la distribuzione delle applicazioni, gestire utenti e gruppi e configurare e monitorare il server WildFly.

Interfaccia web

Se si preferisce gestire il proprio server dalla GUI, WildFly fornisce anche una console basata sul Web.

Per impostazione predefinita, la console di amministrazione WildFly è disponibile solo da localhost su http://localhost:9990/console. Accedi utilizzando l'utente che hai creato precedentemente.

Se si desidera accedere alla console da postazioni remote è necessario apportare piccole modifiche ai file wildfly.service, wildfly.conf e launch.sh.

Apri wildfly.conf e aggiungi WILDFLY_CONSOLE_BIND=0.0.0.0 alla fine del file:

sudo nano /etc/wildfly/wildfly.conf
# The configuration you want to run
WILDFLY_CONFIG=standalone.xml

# The mode you want to run
WILDFLY_MODE=standalone

# The address to bind to
WILDFLY_BIND=0.0.0.0

# The address console to bind to
WILDFLY_CONSOLE_BIND=0.0.0.0

Apri launch.sh e modifica le seguenti righe $WILDFLY_HOME/bin/domain.sh e $WILDFLY_HOME/bin/standalone.sh , il risultato dovrebbe essere come il seguente:

sudo nano /opt/wildfly/bin/launch.sh
#!/bin/bash

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
f

Riavvia il servizio per rendere effettive le modifiche:

sudo systemctl restart wildfly

Apri wildfly.service e modifica la riga ExecStart in questo modo:

sudo nano /etc/systemd/system/wildfly.service
[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

Creare la directory /var/run/wildfly e impostare le autorizzazioni corrette:

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

Ricarica la configurazione del gestore di sistema:

sudo systemctl daemon-reload

Riavvia il servizio WildFly eseguendo:

sudo systemctl restart wildfly

Supponendo che il firewall non stia bloccando la porta 9990, si dovrebbe essere in grado di accedere alla console di amministrazione WildFly su http://TUO_DOMINIO_O_IP:9990/console.

Conclusione

Hai installato WildFly correttamente sul tuo server Debian 10. Dovresti visitare la documentazione WildFly ufficiale e saperne di più sulle funzionalità di WildFly.