Apache Virtual Hosts ti consente di eseguire più di un sito Web su una singola macchina. Con Virtual Hosts, puoi specificare la radice del documento 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 gli host virtuali Apache su un server Debian 10.
Prerequisiti #
Assicurati di aver soddisfatto i seguenti requisiti prima di continuare con questo tutorial:
- Nome di dominio che punta all'IP del tuo server pubblico.
- Apache installato sul tuo sistema CentOS.
- Sei loggato come root o utente con privilegi sudo.
Crea la struttura della directory #
La radice del documento è la directory in cui sono archiviati e serviti i file del sito Web per un nome di dominio in risposta alle richieste. La radice del documento può essere impostata in qualsiasi posizione desideri.
Utilizzeremo la seguente struttura di directory:
/var/www/
├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
├── domain3.com
│ └── public_html
Ogni dominio ospitato sul server avrà la radice del documento impostata su /var/www/<domain_name>/public_html
.
Iniziamo creando la directory principale del documento per il primo dominio, example.com
:
sudo mkdir -p /var/www/example.com/public_html
Creeremo anche un index.html
file all'interno della directory principale del documento di dominio che verrà mostrato quando visiti il dominio nel tuo browser.
Apri il tuo editor di testo preferito, crea un nuovo file e incolla quanto segue:
/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>
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, cambia la proprietà della directory principale del documento di dominio e tutti i file all'interno della directory all'utente apache (www-data
) :
sudo chown -R www-data: /var/www/example.com
Crea un host virtuale #
Sui sistemi Debian, i file di configurazione degli host virtuali Apache si trovano in /etc/apache2/sites-available
directory e può essere abilitato creando collegamenti simbolici al /etc/apache2/sites-enabled
directory, che viene letta da Apache durante l'avvio.
Apri il tuo editor di testo preferito e crea il seguente file di configurazione di base dell'host virtuale:
/etc/apache2/sites-available/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 ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
ServerName
:il dominio che dovrebbe corrispondere a questa configurazione dell'host virtuale. Questo dovrebbe essere il tuo nome di dominio.ServerAlias
:anche tutti gli altri domini o sottodomini che dovrebbero corrispondere a questo host virtuale, in generewww
sottodominio.DocumentRoot
:la directory da cui Apache servirà i file di dominio.Options
:questa direttiva controlla quali funzioni 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.htaccess
può sovrascrivere le direttive di configurazione.ErrorLog
,CustomLog
:specifica la posizione per i file di registro.
Modifica il file in base alle tue esigenze e salvalo.
Puoi nominare il file di configurazione come preferisci. La procedura migliore consiste nell'utilizzare il nome di dominio come nome del file di configurazione dell'host virtuale.
Per abilitare il nuovo file host virtuale, usa a2ensite
script di supporto che crea un collegamento simbolico dal file host virtuale a sites-enabled
directory:
sudo a2ensite example.com
L'altra opzione è creare manualmente un collegamento simbolico come mostrato di seguito:
sudo ln -s /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-enabled/
Una volta abilitata la configurazione, verifica se la sintassi è corretta:
sudo apachectl configtest
Se non ci sono errori, vedrai il seguente output:
Syntax OK
Riavvia apache2
servizio per rendere effettive le modifiche:
sudo systemctl restart apache2
Per verificare che tutto funzioni come previsto, apri http://example.com
nel tuo browser preferito e vedrai qualcosa del genere: