Introduzione

Apache Virtual Hosts consente l'esecuzione di più siti Web su un server Web. Con gli host virtuali, è possibile specificare la root del documento del sito (la directory che contiene i file del sito Web), creare una politica di sicurezza separata per ciascun sito, utilizzare certificati SSL diversi per ciascun sito e molto altro.

In questo tutorial, forniremo istruzioni dettagliate su come configurare gli host virtuali Apache su un server CentOS 8.

Prerequisiti

Assicurati di aver soddisfatto i seguenti prerequisiti prima di continuare con questo tutorial:

Se desideri installare Apache Virtual Hosts 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

DocumentRoot è 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 useremo la seguente struttura di directory:

/var/www/
├── example.com
│   └── public_html
├── example-1.com
│   └── public_html
├── example-2.com
│   └── public_html

Stiamo creando una directory separata per ogni dominio che vogliamo ospitare sul nostro server all'interno della directory var/www. All'interno di ciascuna di queste directory, creeremo una directory public_html che memorizzerà i file del sito Web del dominio.

Crea la directory principale per il dominio example.com usando il comando mkdir:

sudo mkdir -p /var/www/example.com/public_html

In questo tutorial utilizziamo nano, se preferisci puoi utilizzare vi installato di default sulla maggior parte delle distribuzioni.

sudo dnf install nano

A scopo di test creeremo un file index.html all'interno della directory root del documento di dominio. Apri il tuo editor e crea un file HTML con i seguenti contenuti:

sudo nano /var/www/example.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to example.com</title>
  </head>
  <body>
    <h1>Success! example.com home page!</h1>
  </body>
</html>

Tutti i comandi vengono eseguiti come utente sudo, quindi i file e le directory appena creati sono di proprietà dell'utente root. Per assicurarsi che non vi siano problemi di autorizzazione, modificare la proprietà della directory principale del documento di dominio per l'utente apache:

sudo chown -R apache: /var/www/example.com

Creare il file Virtual Host

Esistono alcuni modi per configurare un host virtuale. È possibile aggiungere tutte le direttive dell'host virtuale in un singolo file o creare un nuovo file di configurazione per ciascuna direttiva dell'host virtuale.

Per impostazione predefinita, Apache è configurato per caricare tutti i file di configurazione che terminano con .conf dalla directory /etc/httpd/conf.d/.

Per creare un host virtuale per un sito Web specifico, aprire l'editor preferito e creare il seguente file di configurazione di base dell'host virtuale:

sudo nano /etc/httpd/conf.d/example.com.conf
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/example.com/public_html

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog /var/log/httpd/example.com-error.log
    CustomLog /var/log/httpd/example.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 che devono corrispondere anche per 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 dal browser.
  • FollowSymLinks: Questa opzione indica al server Web di seguire 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.

Modifica il file in base alle tue esigenze e salvalo.

È importante che il nome del file di configurazione termini .conf. È 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.

Testare la sintassi del file di configurazione con:

sudo apachectl configtest

Se non ci sono errori vedrai il seguente output:

Syntax OK

Per attivare un host virtuale appena creato, riavvia il servizio Apache con:

sudo systemctl restart httpd

Verifica che tutto funzioni come previsto, aprendo http://example.com.

Conclusione

In questo tutorial, ti abbiamo mostrato come creare una configurazione host virtuale Apache. Puoi ripetere i passaggi sopra descritti e creare host virtuali aggiuntivi per tutti i tuoi domini.