Tutorial > Come configurare Virtual Host con Apache su AlmaLinux 8

Come configurare Virtual Host con Apache su AlmaLinux 8

Pubblicato il: 13 dicembre 2022

AlmaLinux Apache Hosting

Introduzione

Se hai la necessità di ospitare un sito web sul tuo server, allora dovrai innanzitutto installare un web server. Tra quelli a disposizione, uno dei più utilizzati oggi è Apache, compatibile sia con sistemi Unix che Windows e dotato di ottima integrazione con gli altri software e buon supporto dei media.

Cosa succede però se hai bisogno di ospitare più siti web sullo stesso server, pur avendo a disposizione un solo indirizzo IP pubblico? In questo caso avrai bisogno di configurare i Virtual Host su Apache per associare diversi domini allo stesso indirizzo IP.

In questa guida ti mostreremo come installare il web server e come configurare lo strumento Virtual Host per gestire un maggior numero di domini su uno stesso server web. Ogni dominio potrà avere in maniera a sè stante una configurazione, delle tecnologie e diverse versioni degli applicativi.

Per iniziare dovrai connetterti al tuo server tramite una connessione SSH. Se non l'hai ancora fatto, ti consigliamo di seguire la nostra guida per connetterti in sicurezza con il protocollo SSH su AlmaLinux 8. In caso di server locale puoi passare al punto successivo e aprire il terminale del tuo server.

Pre-Requisiti

Per seguire il tutorial, avrai prima di tutto bisogno dell'accesso a un server AlmaLinux 8 con un utente non-root ma con privilegi sudo.

Su tale server, sarà necessaria l'installazione di una componente Firewall.

Apache

Installazione

Apache è disponibile sulle principali repositories di AlmaLinux 8. Potrai, quindi, usare il gestore di pacchetti dnf:

$ sudo dnf install httpd

Dopo aver confermato la scelta, il gestore di pacchetti installerà Apache su AlmaLinux 8.

Volendo creare una connessione sicura con il server, Apache offre il protocollo HTTPS, aprendo la porta 443.

$ sudo firewall-cmd --permanent --add-service=https

Successivamente, ricarica il firewall per applicare le modifiche.

$ sudo firewall-cmd --reload

Controllare lo stato del tuo Server Web

Apache non si avvia in automatico su AlmaLinux 8. Di conseguenza, avrai bisogno di inviare il comando per far partire il processo.

$ sudo systemctl start httpd

Per ottenere conferma dell'avvenuto avvio di Apache, invia il comando:

$ sudo systemctl status httpd

L'output sarà simile, in caso di corretto funzionamento del servizio.

Stato del servizio Apache

Un altro modo per testare se Apache funzioni è quello di connettersi alla sua landing page. Per far ciò, dovrai semplicemente inserire l'indirizzo IP del tuo server nella barra degli indirizzi del browser.

Se hai creato il tuo Cloud Server su Aruba, sappi che al momento della creazione viene fornito un IP pubblico compreso nel costo, che trovi specificato all'interno del tuo pannello di controllo su Aruba Cloud.

Altrimenti per scoprire l'indirizzo IP del tuo server puoi sempre ricorrere alla scansione degli indirizzi host connessi alla tua rete e provare a collegarti a essi, fino a trovare quello del tuo server Apache.

$ hostname -I

Un'altra modalità, più rapida, è quella di richiedere il tuo indirizzo IP dal sito icanhazip.com, tramite il comando curl per l'esecuzione della richiesta.

$ curl -4 icanhazip.com

Ottenuto l'indirizzo IP del server, specificalo nella barra degli indirizzi, ricordando di indicare anche il protocollo http.

Pagina di Test di Apache

Se sarete in grado di visualizzare questa pagina, contenente diverse informazioni su Apache, sarete riusciti a verificarne il funzionamento in questo altro modo.

Gestione dei processi di Apache

Ora che il servizio è in esecuzione, puoi usare alcuni comandi per gestirlo.

La sintassi base è quella che include il comando systemctl, assieme alla specifica di alcune opzioni aggiuntive:

$ sudo systemctl opzione httpd

Le opzioni disponibili, saranno:

  • stop, arresta il server
  • start, avvia il server
  • restart, riavvia il server
  • reload, ricarica la nuova configurazione senza far cadere le connessioni
  • disable, disabilita l'avvio automatico di Apache
  • enable, abilita l'avvio automatico di Apache.

Terminata questa parte introduttiva sul servizio Apache, passiamo a descrivere Virtual Host.

Virtual Hosts

Configurazione

I virtual hosts permettono di incapsulare i dettagli di configurazione e permetterti di gestire più domini con diverse versioni degli applicativi sullo stesso server.

Su AlmaLinux 8, Apache ha un virtual host attivato di default che ospita files nel percorso /var/www/html. Tuttavia, far convivere più siti nella stessa directory potrebbe essere poco efficiente. Sarebbe quindi opportuno creare una directory per ogni sito.

È importante creare anche le giuste sottocartelle per dividere i file html dai files di log.

Inizia col creare una sottodirectory nel tuo dominio, chiamata html :

$ sudo mkdir -p /var/www/nomedominio/html

Crea una nuova sottodirectory dedicata ai files di log:

$ sudo mkdir -p /var/www/nomedominio/log

Ora assegna la proprietà della cartella html alla variabile di ambiente $USER :

$ sudo chown -R $USER:$USER /var/www/nomedominio/html

Ora, esegui questo comando per assicurarti che il web root possieda i permessi di default:

$ sudo chmod -R 755 /var/www

Ora, crea una pagina di esempio in HTML, usando l'editor testuale che preferisci (nano, vi).

$ sudo vi /var/www/nomedominio/html/index.html

Aggiungi ora, all'interno del nuovo file di testo creato, il seguente codice HTML:

<html>
  <head>
    <title>Esempio</title>
  </head>
  <body>
    <h1>Questa è una pagina html</h1>
  </body>
</html>

Nel caso di vi, per salvare il file dovrai usare ESC, scrivere :wq e premere Invio.

Ora che hai creato le cartelle del tuo sito e possiedi una pagina index per il tuo sito, non ti resta che iniziare a creare i files del virtual host.

Per creare i virtual host, dovrai creare una directory che contenga i siti resi disponibili: per far ciò, nomineremo la directory sites-available.

Una seconda directory da creare è sites-enabled, che servirà a comunicare ad Apache che uno specifico virtual host sia pronto a ricevere i visitatori.

$ sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

Ora dirai ad Apache:

$ sudo vi /etc/httpd/conf/httpd.conf

Premi la G. Poi premi i e metti la modalità INSERT, e aggiungi questa linea alla fine del file. Nota bene che la stringa sia esattamente alla fine.

IncludeOptional sites-enabled/*.conf

Terminata la modifica, chiudi il file salvandolo.

Ora che hai costruito le directories per il tuo virtual host, sarà l'ora di creare il file virtual host.

Crea, per iniziare, un nuovo file nella directory sites-available, utilizzando il comando:

$ sudo vi /etc/httpd/sites-available/tuodominio.com.conf

All'interno del file, inserisci le seguenti stringhe:

<VirtualHost *:80>
    ServerName www.tuodominio.com
    ServerAlias tuodominio.com
    DocumentRoot /var/www/tuodominio.com/html
    ErrorLog /var/www/tuodominio.com/log/error.log
    CustomLog /var/www/tuodominio.com/log/requests.log combined
</VirtualHost>

A questo punto, avrai creato il file di configurazione del tuo virtual host, dove saranno indicate alcune informazioni necessarie per la gestione del sito da parte di Apache.

Ora, crea un collegamento con la directory sites-enabled, usando il comando ln:

$ sudo ln -s /etc/httpd/sites-available/tuodominio.com.conf /etc/httpd/sites-enabled/tuodominio.com.conf

La configurazione del tuo virtual host sarà ora completata, ma resta necessario controllare e sistemare i permessi di SELinux per i Virtual Hosts.

Configurare i permessi SELinux per Virtual Host

SELinux è un modulo di sicurezza del kernel Linux. AlmaLinux 8 ha SELinux configurato per funzionare in sinergia con la configurazione di Apache.

Tuttavia, avendo creato in precedenza dei files di configurazione, è necessario che tu ricontrolli la configurazione del modulo di sicurezza.

Ci sono due metodi per concedere autorizzazioni ad Apache: il primo sarà un metodo più universale, mentre il secondo ti permetterà di agire su directories specifiche di Apache. È chiaro che agire sulle directory specifiche aiuta ad avere un maggior livello di controllo sui privilegi concessi ad Apache.

Impostare dei privilegi universali per Apache

Impostare dei privilegi universali permetterà a SELinux di trattare in maniera identica tutti i processi collegati ad Apache.

Per far ciò, basterà modificare il valore booleano, identificato dalla voce httpd_unified, in 1.

$ sudo setsebool -P httpd_unified 1

Analizzando la sintassi completa del comando:

  • Il comando setsebool si usa per modificare i valori booleani in SELinux
  • Il flag -P permetterà di rendere i cambiamenti persistenti nei successivi riavvii
  • La variabile httpd_unified contiene il valore booleano che indicherà a SELinux di gestire tutti i processi di Apache allo stesso modo, impostando il valore 1.

Impostare dei privilegi sulle directories di Apache

È possibile impostare individualmente i permessi concessi da SELinux ad alcune cartelle di Apache, permettendoti una gestione e un controllo migliore. Tuttavia, richiede più tempo e maggiore manutenzione nel caso di variazioni.

Prova, per iniziare, a concedere dei permessi alla cartella log del tuo dominio. Per far ciò, usa il comando:

$ sudo ls -dlZ /var/www/tuodominio.com/log/

Controllando, dovresti ottenere un output simile:

Output cartella log

Test del Virtual Host

Terminate le fasi di configurazione, è ora di testare il tuo virtual host.

Il primo step è riavviare Apache:

$ sudo systemctl restart httpd

Puoi ora controllare se i files di log di Apache siano stati creati nella apposita directory del tuo dominio. Usa il comando ls per ricevere una lista dei contenuti di quella directory:

$ ls -lZ /var/www/tuodominio.com/log

Dovresti ottenere un output simile:

Output files di log

Ora, non resta che testare il funzionamento del tuo server, inserendo nella barra degli indirizzi quella del tuo dominio.

Se dovessi correttamente visualizzare una pagina html, allora il test sarà andato a buon fine!

Conclusioni

Terminato il tutorial, sarai stato in grado di installare il servizio Apache e configurare dei virtual hosts per gestire più domini su uno stesso server con AlmaLinux 8.