Cos'è Apache Virtual Hosts?
Host virtuale termine si riferisce al metodo di esecuzione di più di un sito Web come host1.domain.com, host2.domain.com o www.domain1.com, www.domain2.com ecc., su un unico sistema. Esistono due tipi di hosting virtuale in Apache, ovvero basato su IP hosting virtuale e basato sul nome hosting virtuale. Con l'hosting virtuale basato su IP, puoi ospitare più siti Web o domini sullo stesso sistema, ma ogni sito Web/dominio ha un indirizzo IP diverso. Con l'hosting virtuale basato sul nome, puoi ospitare più siti Web/domini sullo stesso indirizzo IP. L'hosting virtuale può essere utile se desideri ospitare più siti Web e domini da un singolo server fisico o VPS. Spero che tu abbia l'idea di base degli host virtuali Apache. Oggi vedremo come configurare gli host virtuali Apache in Ubuntu 18.04 LTS.
Scarica - eBook gratuito:"Apache HTTP Server Cookbook"Configura gli host virtuali Apache in Ubuntu 18.04 LTS
L'indirizzo IP della mia casella di prova è 192.168.225.22 e il nome host è ubuntuserver .
Per prima cosa, vedremo come configurare host virtuali basati sui nomi nel server web Apache.
Configura host virtuali basati sul nome
Assicurati di aver installato il server web Apache. Per installarlo su Ubuntu, esegui:
$ sudo apt-get install apache2
Una volta installato Apache, verifica se funziona o meno navigando nella pagina di prova di Apache nel browser.
Apri il tuo browser web e puntalo a http://IP_Address o http://localhost . Dovresti vedere una pagina come quella di seguito.
Bene! Il server web Apache è attivo e funzionante!!
Creerò due host virtuali, ovvero otechnix1.lan e otechnix2.lan .
Creiamo una directory per il primo host virtuale ostechnix1.lan. Questa directory è necessaria per memorizzare i dati dei nostri host virtuali.
Per farlo, inserisci:
$ sudo mkdir -p /var/www/html/ostechnix1.lan/public_html
Allo stesso modo, crea una directory per il secondo host virtuale ostechnix2.lan come mostrato di seguito.
$ sudo mkdir -p /var/www/html/ostechnix2.lan/public_html
Le due directory precedenti sono di proprietà dell'utente root. Dobbiamo cambiare la proprietà all'utente normale.
Per farlo, esegui:
$ sudo chown -R $USER:$USER /var/www/html/ostechnix1.lan/public_html
$ sudo chown -R $USER:$USER /var/www/html/ostechnix2.lan/public_html
Qui, $USER fa riferimento all'utente attualmente connesso.
Quindi, imposta i permessi di lettura sulla directory principale di Apache, ad esempio /var/www/html/ usando il comando:
$ sudo chmod -R 755 /var/www/html/
Lo facciamo perché abbiamo già creato una directory separata per ogni host virtuale per la memorizzazione dei propri dati. Quindi abbiamo reso la directory radice di Apache in sola lettura per tutti gli utenti tranne l'utente root.
Abbiamo creato le directory richieste per la memorizzazione dei dati di ciascun host virtuale, impostando le autorizzazioni appropriate. Ora è il momento di creare alcune pagine di esempio che verranno servite da ciascun host virtuale.
Creiamo una pagina di esempio per il sito ostechnix1.lan. Per farlo, esegui:
$ sudo vi /var/www/html/ostechnix1.lan/public_html/index.html
Aggiungi le seguenti righe:
<html> <head> <title>www.ostechnix.lan</title> </head> <body> <h1>Hello, This is a test page for ostechnix1.lan website</h1> </body> </html>
Salva e chiudi il file.
Allo stesso modo, crea una pagina di esempio per il sito ostechnix2.lan:
$ sudo vi /var/www/html/ostechnix2.lan/public_html/index.html
Aggiungi le seguenti righe:
<html> <head> <title>www.ostechnix.lan</title> </head> <body> <h1>Hello, This is a test page for ostechnix2.lan website</h1> </body> </html>
Salva e chiudi il file.
Successivamente, dobbiamo creare file di configurazione per ogni host virtuale. Per prima cosa, facciamolo per il sito ostechnix1.lan.
Copia il file dell'host virtuale predefinito chiamato 000-default.conf contenuti nei nuovi file host virtuali come di seguito.
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ostechnix1.lan.conf
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ostechnix2.lan.conf
Tieni presente che devi salvare tutti i file di configurazione con .conf estensione alla fine, altrimenti non funzionerà.
Ora modifica i file di configurazione in modo che corrispondano ai nostri host virtuali.
Modifica otechnix.lan1.conf file:
$ sudo vi /etc/apache2/sites-available/ostechnix1.lan.conf
Modifica/modifica i valori ServerAdmin, ServerName, ServerAlias e DocumentRoot corrispondono all'host virtuale.
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin [email protected] ServerName ostechnix1.lan ServerAlias www.ostechnix1.lan DocumentRoot /var/www/html/ostechnix1.lan/public_html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost>
Salva e chiudi il file.
Quindi, modifica otechnix2.lan.conf file:
$ sudo vi /etc/apache2/sites-available/ostechnix2.lan.conf
Apporta le modifiche necessarie.
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin [email protected] ServerName ostechnix2.lan ServerAlias www.ostechnix2.lan DocumentRoot /var/www/html/ostechnix2.lan/public_html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost>
Salva/chiudi il file.
Dopo aver apportato le modifiche necessarie, disabilitare il file di configurazione dell'host virtuale predefinito, ovvero 000.default.conf e abilita tutti i file di configurazione dell'host virtuale appena creati come mostrato di seguito.
$ sudo a2dissite 000-default.conf
$ sudo a2ensite ostechnix1.lan.conf
$ sudo a2ensite ostechnix2.lan.conf
Riavvia il server web di Apache per rendere effettive le modifiche.
$ sudo systemctl restart apache2
Questo è tutto. Abbiamo configurato correttamente host virtuali in Apache. Andiamo avanti e controlliamo se funzionano o meno.
Apri il file /etc/hosts in qualsiasi editor:
$ sudo vi /etc/hosts
Aggiungi tutti i tuoi siti Web/domini virtuali uno per uno come di seguito.
[...] 192.168.225.22 ostechnix1.lan 192.168.225.22 ostechnix2.lan [...]
Si noti che se si desidera accedere agli host virtuali da qualsiasi sistema remoto, è necessario aggiungere le righe precedenti nel file /etc/hosts di ciascun sistema remoto.
Salva e chiudi il file.
Apri il tuo browser web e puntalo a http://otechnix1.lan o http://otechnix2.lan .
Pagina di prova ostechnix1.lan:
Pagina di prova di otechnix2.lan:
Congratulazioni! Ora puoi accedere a tutti i tuoi siti web. D'ora in poi, puoi caricare i dati e servirli da diversi siti web.
Come hai notato, abbiamo utilizzato lo stesso indirizzo IP (cioè 192.168.225.22) per ospitare due diversi siti web (http://otechnix1.lan e http://otechnix2.lan). Questo è ciò che chiamiamo hosting virtuale basato sul nome. Spero questo sia di aiuto. Ti mostrerò come configurare l'hosting virtuale basato su IP nella prossima guida. Fino ad allora, restate sintonizzati!