Introduzione
Un host virtuale è una direttiva di configurazione di Apache che consente di eseguire più di un sito Web su un singolo server. Con Virtual Hosts, è possibile specificare la root del sito (la directory contenente i file del sito Web), creare una politica di sicurezza separata per ciascun sito, utilizzare certificati SSL diversi e molto altro.
Questo articolo descrive come configurare host virtuali Apache su Ubuntu 20.04 LTS Focal Fossa.
Prerequisiti
Assicurati di aver soddisfatto i seguenti requisiti prima di continuare con la guida:
- Uno o più nomi di dominio che puntano al tuo IP del server pubblico. In questo tutorial utilizzeremo
domain1.com
edomain2.com
, fare attenzione a modificare i seguenti valori con il proprio nome dominio. - Apache installato sul tuo sistema Ubuntu.
- Hai effettuato l'accesso come root o utente con privilegi sudo.
Se desideri creare Host Virtuali con Apache 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 root@IP_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 nome_utente@IP_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 nome_utente@IP_DEL_SERVER -p PORTA
Creare la struttura delle directory
La root del documento è la directory in cui i file del sito Web per un nome di dominio vengono archiviati e offerti in risposta alle richieste. È possibile impostare la root del documento in qualsiasi posizione desiderata, in questo esempio utilizzeremo la seguente struttura di directory:
/var/www/
├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
Ogni dominio ospitato sul server avrà la root del documento impostata su /var/www/<domain_name>/public_html
.
Inizia creando la directory principale per il dominio con il comando mkdir:
sudo mkdir -p /var/www/domain1.com/public_html
Creeremo anche un file index.html
all'interno della directory root del documento di dominio che verrà mostrato quando visiti il dominio nel tuo browser.
Quindi con il tuo editor di testo preferito, creare il seguente file:
sudo nano /var/www/domain1.com/public_html/index.html
Incolla il seguente testo all'interno del file:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to domain1.com</title>
</head>
<body>
<h1>Success! domain1.com home page!</h1>
</body>
</html>
Poiché i comandi precedenti vengono eseguiti come utente sudo, i file e le directory appena creati sono di proprietà di root. Per evitare problemi di autorizzazione, modifica la proprietà della directory root del documento di dominio e di tutti i file all'interno della directory all'utente apache (www-data
):
sudo chown -R www-data: /var/www/domain1.com
Creare un host virtuale
Sui sistemi Ubuntu, i file di configurazione degli host virtuali Apache si trovano nella directory /etc/apache2/sites-available
. Possono essere abilitati creando collegamenti simbolici alla directory /etc/apache2/sites-enabled
, che Apache legge durante l'avvio.
Apri il tuo editor di testo preferito e crea il seguente file di configurazione di base dell'host virtuale:
sudo nano /etc/apache2/sites-available/domain1.com.conf
Incolla il seguente codice, modificando il nome dominio:
<VirtualHost *:80>
ServerName domain1.com
ServerAlias www.domain1.com
ServerAdmin [email protected]
DocumentRoot /var/www/domain1.com/public_html
<Directory /var/www/domain1.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/domain1.com-error.log
CustomLog ${APACHE_LOG_DIR}/domain1.com-access.log combined
</VirtualHost>
ServerName
: Il dominio che deve corrispondere per questa configurazione dell'host virtuale. Questo dovrebbe essere il tuo nome di dominio.ServerAlias
: Tutti gli altri domini o sottodomini che devono corrispondere a questo host virtuale come il sottodominiowww
.DocumentRoot
: La directory da cui Apache servirà i file di dominio.Options
: Questa direttiva controlla quali funzionalità del server sono disponibili in una directory specifica.-Indexes
: Impedisce gli elenchi di directory.FollowSymLinks
: Quando questa opzione è abilitata, Apache seguirà i collegamenti simbolici.AllowOverride
: Specifica quali direttive dichiarate nel file.htaccess
possono sovrascrivere le direttive di configurazione.ErrorLog
,CustomLog
: Specifica il percorso per i file di registro.
È possibile assegnare un nome al file di configurazione come desiderato, ma è consigliabile utilizzare il nome di dominio come nome del file di configurazione dell'host virtuale.
Per abilitare il nuovo file host virtuale, utilizzare lo script helper a2ensite
che crea un collegamento simbolico dal file host virtuale alla directory sites-enabled
:
sudo a2ensite domain1.com
L'altra opzione è quella di creare manualmente un link simbolico come mostrato di seguito:
sudo ln -s /etc/apache2/sites-available/domain1.com.conf /etc/apache2/sites-enabled/
Al termine, testare la configurazione per eventuali errori di sintassi con:
sudo apachectl configtest
Se non ci sono errori, vedrai il seguente output:
Syntax OK
Riavvia il servizio Apache per rendere effettive le modifiche:
sudo systemctl restart apache2
Infine per verificare che tutto funzioni come previsto, apri il browser e collegati al tuo nome dominio http://domain1.com
e vedrai il contenuto della pagina index.html
creata precedentemente.
Conclusione
Hai imparato a creare una configurazione con Apache Virtual Host per ospitare più domini su un singolo server Ubuntu 20.04 LTS Focal Fossa.
Ripeti i passaggi sopra descritti per creare host virtuali aggiuntivi per tutti i tuoi domini.