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 e domain2.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 [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

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 sottodominio www.
  • 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.