Apache è attualmente il server web più utilizzato al mondo. Si tratta di un software open-source gestito da The Apache Software Foundation. A partire da settembre 2020, si stima che gestisca il 36% di tutto il traffico dei siti web nel mondo. Gli sviluppatori lo adorano per la sua velocità, sicurezza, affidabilità e robustezza. La sua facilità di personalizzazione gli consente di soddisfare le esigenze di molti ambienti installando estensioni e moduli.
Apache viene fornito con un sistema di corrispondenza che puoi utilizzare per ospitare più domini o siti utilizzando una singola installazione del server Apache esposta su un singolo indirizzo IP. I domini o i siti sono configurati in uno dei file di configurazione di Apache definiti come host virtuali.
Ogni dominio ha una definizione di host virtuale con una directory specifica a cui punta. Quando un utente visita un dominio, il server esamina ogni host virtuale corrispondente e seleziona quale utilizzare per soddisfare la richiesta del visitatore in base all'hostname inserito. Se non viene trovato alcun hostname corrispondente, il server utilizza come fallback il primo host virtuale definito nel file conf. Il visitatore accederà alla pagina web richiesta senza sapere che lo stesso server sta ospitando altri siti. A seconda delle risorse disponibili sul tuo server e di quanto traffico può gestire, puoi ospitare tutti i domini che desideri.
In questo tutorial, ti guideremo nella configurazione degli host virtuali su Ubuntu 20.04 server.
Come prima cosa
Per seguire questo tutorial, dovresti avere un'installazione di Ubuntu 20.04. È inoltre necessario creare un utente non-root e accedere con esso.
I passaggi di questo tutorial richiedono anche che Apache sia installato. Se non l'hai già fatto, puoi installarlo usando i comandi seguenti. Puoi seguire il nostro tutorial sulla configurazione dello stack LAMP – Linux Apache MySQL PHP per una guida alla configurazione più dettagliata.
|
1 2 |
sudo apt update sudo apt install apache2 |
Dovresti avere nomi di dominio gratuiti o a pagamento registrati presso un registrar di domini di tua scelta. Assicurati che i domini puntino al tuo server configurando i record DNS. Tuttavia, puoi comunque utilizzare le nostre configurazioni per seguire i passaggi di questo tutorial. Utilizzeremo example.dev e mydomain.com per questo tutorial. Sei libero di sostituirli con i tuoi. Se decidi di utilizzare i domini di prova, i file hosts su Apache devono essere modificati per gestire i domini. Vedremo come fare più avanti nel tutorial.
Passo 1 – Configurazione delle directory del sito web
Queste sono le directory che contengono i dati del sito a cui accederanno i visitatori del tuo sito web. La document root di Apache accessibile da Internet si trova solitamente in /var/www. Qui è dove creeremo le directory per i singoli domini che vogliamo ospitare. In ciascuna delle directory, aggiungeremo la directory public_html per contenere i file effettivi del sito web. L'host virtuale punta alla directory public_html. Questo ti offre flessibilità poiché puoi tenere i file cruciali del sito web all'esterno di public_html e inserire all'interno solo i file pubblici.
Successivamente, inserisci i comandi seguenti per creare le directory. Ricorda sempre di sostituire i domini di prova con i tuoi domini effettivi per le configurazioni successive:
|
1 2 |
sudo mkdir -p /var/www/example.dev/public_html sudo mkdir -p /var/www/mydomain.com/public_html |
Passo 2 – Modifica dei permessi di lettura-scrittura
I comandi precedenti hanno creato la struttura delle directory ma hanno mantenuto la proprietà dell'utente root. Vogliamo che il nostro utente non-root abbia i permessi completi di lettura e scrittura sulle directory. Vogliamo anche che il web in generale abbia i permessi di lettura.
Per prima cosa, cambia la proprietà all'utente non-root inserendo il seguente comando:
|
1 2 |
sudo chown -R $USER:$USER /var/www/example.dev/public_html sudo chown -R $USER:$USER /var/www/mydomain.com/public_html |
La variabile $USER acquisisce le credenziali dell'utente attualmente connesso. L'utente normale ora ha la proprietà di public_html. Successivamente, è necessario concedere i permessi di lettura al web generale. Il seguente comando consente il permesso a tutti i file nella directory garantendo che le pagine web siano servite correttamente:
|
1 |
sudo chmod -R 755 /var/www |
Eseguendo i tre comandi precedenti, il tuo sito web può ora servire contenuti. Inoltre, il tuo utente può ugualmente creare contenuti da servire nelle directory specifiche. Qui puoi trovare maggiori informazioni sui permessi di Ubuntu.
Step 3 – Creare pagine demo nelle directory per ciascun host virtuale
Con la struttura delle directory pronta, è il momento di fare un po' di scripting. Utilizzeremo HTML e l'editor di testo nano per creare alcune pagine web di base. Inserisci il seguente comando per aprire nano e creare un file index.html nella directory del primo dominio:
|
1 |
vim /var/www/example.dev/public_html/index.html |
Nell'editor, inserisci il seguente codice di esempio che verrà mostrato quando accediamo al dominio:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Benvenuto su Example.dev!</title> </head> <body> <h1>Successo! L'host example.dev virtuale funzionais working!</h1> </body> </html> |
Dopo aver incollato le righe precedenti, premi “!wq” per salvare e uscire dal file.
Crea la pagina index.html per il secondo dominio utilizzando l'editor nano inserendo il seguente comando:
|
1 |
vim /var/www/mydomain.com/public_html/index.html |
Quindi, nell'editor, incolla il seguente codice HTML, salva ed esci:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Benvenuto su Mydomain.com!</title> </head> <body> <h1>Successo! L'host mydomain.com virtuale funzionais working!</h1> </body> </html> |
Ora hai le pagine per testare i due host virtuali che andremo a creare nel prossimo passo.
Passo 4 – Creare i file di host virtuale per i nomi di dominio
I file di host virtuale contengono le configurazioni per ciascun host virtuale. Definiscono come verrà servito un nome di dominio. Una nuova installazione di Apache include un file di host virtuale predefinito chiamato 000-default.conf che possiamo utilizzare e adattare ai nostri domini. Come puoi vedere, termina con l'estensione .conf, che è ciò che Ubuntu si aspetta per i file di configurazione.
I file di configurazione di Apache si trovano nella directory /etc/apache2/sites-available. Lì memorizzeremo i nostri file di host virtuale. Possiamo copiare il file conf predefinito e modificarlo dove necessario.
-
Crea il primo file di host virtuale per il dominio example.dev
Inserisci il seguente comando per creare example.dev.conf copiando il file conf predefinito:
|
1 |
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.dev.conf |
Successivamente, apri il file creato utilizzando l'editor nano con i privilegi sudo tramite il seguente comando:
|
1 |
sudo nano /etc/apache2/sites-available/example.dev.conf |
Il file conf predefinito si presenta come nello screenshot qui sotto. I commenti servono a guidarti. Possiamo rimuoverli e lasciare solo il file pulito con le righe di configurazione effettive:

È necessario personalizzare questo file per il proprio nome di dominio e il percorso della directory in cui sono stati salvati i file del sito web. Inoltre, aggiorneremo e aggiungeremo diverse direttive al file. Contiene già una direttiva ServerAdmin, che contiene l'indirizzo email su cui l'amministratore del server riceverà le email. Ha anche una direttiva DocumentRoot, che punta alla directory in cui sono stati memorizzati i file del sito web.
Dobbiamo aggiungere due nuove direttive: ServerName e ServerAlias. ServerName imposta il nome di dominio di base. È dove inserisci il tuo dominio. ServerAlias definisce altri nomi che Apache dovrebbe far corrispondere come se fossero il nome di dominio di base. Ti consente di far corrispondere host come www.
Aggiorna il file in modo che appaia come mostrato di seguito:
|
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin admin@example.dev ServerName example.dev ServerAlias www.example.dev DocumentRoot /var/www/example.dev/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Successivamente, aggiorna i tuoi domini e la tua email in modo appropriato. Una volta fatto, premi CTRL + O e INVIO per salvare il file. Per uscire dall'editor, premi CTRL + X.
-
Crea il primo file di host virtuale per il dominio mydomain.com
Possiamo semplicemente copiare l'host virtuale per il primo dominio e aggiornarlo dove necessario per il secondo dominio. Usa il seguente comando per copiare il file:
|
1 |
sudo cp /etc/apache2/sites-available/example.dev.conf /etc/apache2/sites-available/mydomain.com.conf |
Quindi, aprilo nell'editor nano usando il comando:
|
1 |
sudo nano /etc/apache2/sites-available/mydomain.com.conf |
Trova le direttive e aggiornale in modo appropriato in modo che il file appaia come mostrato di seguito:
|
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin admin@mydomain.com ServerName mydomain.com ServerAlias www.mydomain.com DocumentRoot /var/www/mydomain.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Una volta fatto, salva il file ed esci dall'editor.
Passaggio 5 – Abilitazione dei file di host virtuale
Nel passaggio quattro, abbiamo creato i file di host virtuale. Tuttavia, non sono funzionanti finché non li abiliti. Apache ha uno strumento chiamato a2ensite che useremo per abilitare gli host virtuali.
Inserisci i seguenti due comandi per abilitare gli host virtuali:
|
1 2 |
sudo a2ensite example.dev.conf sudo a2ensite mydomain.com.conf |
L'output dei comandi sopra indicati è come mostrato di seguito:

Successivamente, dovresti disabilitare il file di configurazione predefinito; utilizziamo lo strumento Apache a2dissite per disabilitare i siti. Inserisci il seguente comando:
|
1 |
sudo a2dissite 000-default.conf |
Come si vede dall'output, è necessario riavviare Apache affinché le configurazioni vengano applicate. Usa il seguente comando:
|
1 |
sudo systemctl restart apache2 |
Quindi, controlla lo stato di Apache utilizzando il seguente comando:
|
1 |
sudo systemctl status apache2 |
L'output mostra che il tuo server è attivo e funzionante, ed è in grado di gestire i due siti web.

Passaggio 6 – Modificare gli host locali con i domini di esempio
Se non hai registrato un dominio reale ma stai invece utilizzando domini di test, dovrai aggiornare i file host locali. Questi devono intercettare il traffico e indirizzarlo alla directory del tuo sito web quando navighi su uno qualsiasi dei domini impostati nei file dei virtual host. Ricorda che questo funzionerà solo sul tuo computer locale. Se il tuo computer locale esegue un sistema operativo Windows, allora segui le istruzioni per configurare gli host su questo link.
Se ti trovi su una macchina Mac o Linux, il file hosts si trova nella directory /etc. Useremo l'editor nano per aprirlo e aggiungere i nostri domini di test. Per prima cosa, trova l'indirizzo IP del tuo VPS inserendo il seguente comando:
|
1 |
curl -4 icanhazip.com |
Inserisci il seguente comando per aprire il file e aggiornarlo con l'indirizzo IP del tuo server:
|
1 |
sudo nano /etc/hosts |
|
1 2 3 4 |
127.0.0.1 localhost 127.0.1.1 ComputerName your_server_IP example.dev your_server_IP mydomain.com |
Quindi, salva e chiudi il file. Ogni volta che inserisci un nome di dominio nel tuo browser, viene prima controllato il file host. Se il nome di dominio viene trovato, il traffico viene indirizzato all'indirizzo IP specificato. Se non viene trovato, viene utilizzato il sistema DNS per il reindirizzamento globale. Per i nostri domini di test, il traffico sarà indirizzato all'indirizzo IP specificato.
Passaggio 7 – Testare i Virtual Host
Con i nomi di dominio configurati, puoi verificare se funzionano controllandoli nel browser/terminale:
|
1 |
curl http://example.dev |
L'output dovrebbe mostrare qualcosa del genere:

|
1 |
http://mydomain.com |

Congratulazioni! Hai configurato con successo due siti web per l'esecuzione su un unico server.
Conclusione
In questa guida hai imparato come configurare il tuo server Apache per gestire più di un sito web. Se desideri aggiungere altri siti web, puoi farlo seguendo i passaggi e configurando i virtual host. Apache può gestire tutti i domini che desideri, a patto che le risorse del tuo server siano in grado di supportarli.
Buon computing!
Commenti
Ancora nessun commento. Scrivi il primo.