Nel mio ultimo post, ho spiegato come configurare un server web Apache per un singolo sito web. Si è rivelato molto facile. In questo post, ti mostrerò come servire più siti Web utilizzando una singola istanza di Apache.
Nota:ho scritto questo articolo su una macchina virtuale usando Fedora 27 con Apache 2.4.29. Se hai un'altra distribuzione o release di Fedora, i comandi che utilizzerai e le posizioni e il contenuto dei file di configurazione potrebbero essere diversi.
Come menzionato nel mio precedente articolo, tutti i file di configurazione per Apache si trovano in /etc/httpd/conf
e /etc/httpd/conf.d
. I dati per i siti web si trovano in /var/www
per impostazione predefinita. Con più siti web, dovrai fornire più posizioni, una per ogni sito che ospiti.
Hosting virtuale basato sul nome
Con l'hosting virtuale basato sul nome, puoi utilizzare un unico indirizzo IP per più siti web. I server Web moderni, incluso Apache, utilizzano il hostname
parte dell'URL specificato per determinare quale host web virtuale risponde alla richiesta di pagina. Ciò richiede solo un po' più di configurazione rispetto a un singolo sito.
Anche se stai iniziando con un solo sito Web, ti consiglio di configurarlo come host virtuale, il che renderà più semplice aggiungere più siti in un secondo momento. In questo articolo, riprenderò da dove eravamo rimasti nell'articolo precedente, quindi dovrai configurare il sito Web originale, un sito Web virtuale basato sul nome.
Preparazione del sito web originale
Prima di configurare un secondo sito Web, è necessario che l'hosting virtuale basato sul nome funzioni per il sito esistente. Se non hai un sito web esistente, torna indietro e creane uno ora.
Una volta che hai il tuo sito, aggiungi la seguente stanza in fondo al suo /etc/httpd/conf/httpd.conf
file di configurazione (l'aggiunta di questa stanza è l'unica modifica che devi apportare a httpd.conf
file):
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html
ServerName www.site1.org
</VirtualHost>
Questa sarà la prima stanza dell'host virtuale e dovrebbe rimanere la prima per renderla la definizione predefinita. Ciò significa che l'accesso HTTP al server tramite l'indirizzo IP, o tramite un altro nome che si risolve in questo indirizzo IP ma che non dispone di una specifica stanza di configurazione dell'host denominata, sarà indirizzato a questo host virtuale. Tutte le altre stanze di configurazione dell'host virtuale dovrebbero seguire questa.
Devi anche configurare i tuoi siti web con voci in /etc/hosts
per fornire la risoluzione del nome. L'ultima volta, abbiamo usato l'indirizzo IP per localhost
. Normalmente, questo sarebbe fatto usando il servizio di nomi che usi; ad esempio, Google o Godaddy. Per il tuo sito web di prova, fallo aggiungendo un nuovo nome a localhost
riga in /etc/hosts
. Aggiungi le voci per entrambi i siti Web in modo da non dover modificare nuovamente questo file in seguito. Il risultato è simile al seguente:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 www.site1.org www.site2.org
Cambiamo anche il /var/www/html/index.html
file per essere un po' più esplicito. Dovrebbe assomigliare a questo (con del testo aggiuntivo per identificare questo come sito web numero 1):
<h1>Hello World</h1>
Web site 1.
Riavvia il server HTTPD per abilitare le modifiche a httpd
configurazione. È quindi possibile guardare il sito Web utilizzando il browser in modalità testo Lynx dalla riga di comando.
[root@testvm1 ~]# systemctl restart httpd
[root@testvm1 ~]# lynx www.site1.org
Hello World
Web site 1.
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
Puoi vedere che viene visualizzato il contenuto rivisto per il sito Web originale e che non ci sono errori evidenti. Premere il tasto “Q”, seguito da “Y” per uscire dal browser web Lynx.
Configurazione del secondo sito web
Ora sei pronto per configurare il secondo sito web. Crea una nuova struttura di directory del sito Web con il seguente comando:
[root@testvm1 html]# mkdir -p /var/www/html2
Nota che il secondo sito web è semplicemente un secondo html
directory nella stessa /var/www
directory come primo sito.
Ora crea un nuovo file di indice, /var/www/html2/index.html
, con il seguente contenuto (questo file indice è leggermente diverso, per distinguerlo da quello del sito originale):
<h1>Hello World -- Again</h1>
Web site 2.
Crea una nuova stanza di configurazione in httpd.conf
per il secondo sito Web e posizionarlo sotto la precedente stanza dell'host virtuale (i due dovrebbero sembrare molto simili). Questa stanza indica al server web dove trovare i file HTML per il secondo sito.
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html2
ServerName www.site2.org
</VirtualHost>
Riavvia HTTPD e usa Lynx per visualizzare i risultati.
[root@testvm1 httpd]# systemctl restart httpd
[root@testvm1 httpd]# lynx www.site2.org
Hello World -- Again
Web site 2.
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
Qui ho compresso l'output risultante per adattarsi a questo spazio. La differenza nella pagina indica che questo è il secondo sito web. Per mostrare entrambi i siti Web contemporaneamente, apri un'altra sessione del terminale e utilizza il browser Web Lynx per visualizzare l'altro sito.
Altre considerazioni
Questo semplice esempio mostra come servire due siti Web con una singola istanza del server HTTPD Apache. La configurazione degli host virtuali diventa un po' più complessa se si considerano altri fattori.
Ad esempio, potresti voler utilizzare alcuni script CGI per uno o entrambi questi siti web. Per fare ciò, devi creare directory per i programmi CGI in /var/www
:/var/www/cgi-bin
e /var/www/cgi-bin2
, per essere coerente con la denominazione della directory HTML. Sarà quindi necessario aggiungere direttive di configurazione alle stanze dell'host virtuale per specificare l'ubicazione della directory per gli script CGI. Ogni sito Web potrebbe anche avere directory da cui scaricare file; ciò richiederebbe anche voci nella stanza dell'host virtuale appropriato.
Il sito Web di Apache descrive altri metodi per la gestione di più siti Web, nonché opzioni di configurazione dall'ottimizzazione delle prestazioni alla sicurezza.
Apache è un potente server web che può essere utilizzato per gestire siti web che vanno dal semplice al più complesso. Sebbene la sua quota complessiva si stia riducendo, Apache rimane il server HTTPD più comunemente utilizzato su Internet.