Introduzione

Il server HTTP Apache è un popolare server Web open source che offre flessibilità, potenza e supporto diffuso per gli sviluppatori. La configurazione del server Apache non avviene in un singolo file monolitico, ma avviene invece attraverso un design modulare in cui è possibile aggiungere e modificare nuovi file secondo necessità. All’interno di questo design modulare, puoi creare un singolo sito o dominio chiamato host virtuale .

Utilizzando host virtuali, un’istanza di Apache può servire più siti Web. Ogni dominio o singolo sito configurato utilizzando Apache indirizzerà il visitatore a una directory specifica contenente le informazioni di quel sito. Questo avviene senza indicare al visitatore che lo stesso server è responsabile anche di altri siti. Questo schema è espandibile senza alcun limite software purché il server possa gestire il carico.

In questa guida configurerai gli host virtuali Apache su un server Ubuntu 20.04. Durante questo processo imparerai come offrire contenuti diversi a visitatori diversi a seconda dei domini richiesti creando due siti host virtuali.

Prerequisiti

Per completare con successo questo tutorial, avrai bisogno di due domini con:

  • Un record A con your_domain che punta all’indirizzo IP pubblico del tuo server.
  • Un record A con www.tuo_dominio che punta all’indirizzo IP pubblico del tuo server.

Per altri fornitori, fare riferimento alla documentazione del prodotto pertinente.

Nota: se al momento non disponi di domini, puoi utilizzare i valori di test localmente sul tuo computer. Il passaggio 6 di questo tutorial ti mostrerà come testare e configurare i valori del test. Ciò ti consentirà di convalidare la tua configurazione anche se i tuoi contenuti non saranno disponibili ad altri visitatori tramite il nome di dominio.

Passaggio 1: creazione della struttura di directory

Il primo passo è creare una struttura di directory che conterrà i dati del sito che servirai ai visitatori.

La root del tuo documento , la directory di livello superiore che Apache esamina per trovare il contenuto da servire, verrà impostata su directory individuali nella /var/wwwdirectory. Creerai una directory qui per ciascuno degli host virtuali.

All’interno di ciascuna di queste directory, creerai una public_htmldirectory. La public_htmldirectory contiene il contenuto che verrà offerto ai tuoi visitatori. Le directory principali, denominate qui come your_domain_1your_domain_2, conterranno gli script e il codice dell’applicazione per supportare il contenuto web.

Utilizza questi comandi, con i tuoi nomi di dominio, per creare le tue directory:

$ sudo mkdir -p /var/www/your_domain_1/public_html
    
$ sudo mkdir -p /var/www/your_domain_2/public_html

Assicurati di sostituire your_domain_1your_domain_2con i tuoi rispettivi domini. Ad esempio, se uno dei tuoi domini fosse example.com , creeresti questa struttura di directory: /var/www/example.com/public_html.

Passaggio 2: concessione delle autorizzazioni

Hai creato la struttura delle directory per i tuoi file, ma sono di proprietà dell’utente root . Se vuoi che il tuo utente normale sia in grado di modificare i file in queste directory web, puoi cambiare la proprietà con questi comandi:

$ sudo chown -R $USER:$USER /var/www/your_domain_1/public_html
    
$ sudo chown -R $USER:$USER /var/www/your_domain_2/public_html

La $USERvariabile assumerà il valore dell’utente con cui sei attualmente connesso quando premi ENTER. In questo modo, l’utente normale ora possiede le public_htmlsottodirectory in cui memorizzerai i tuoi contenuti.

Dovresti anche modificare le tue autorizzazioni per assicurarti che l’accesso in lettura sia consentito alla directory web generale e a tutti i file e le cartelle in essa contenuti in modo che le pagine possano essere servite correttamente:

$ sudo chmod -R 755 /var/www

Il tuo server web ora dispone delle autorizzazioni necessarie per fornire i contenuti e il tuo utente dovrebbe essere in grado di creare contenuti nelle cartelle necessarie. Il passaggio successivo è creare contenuto per i tuoi siti host virtuali.

Passaggio 3: creazione di pagine predefinite per ciascun host virtuale

Una volta predisposta la struttura delle directory, puoi iniziare a concentrarti su ogni singolo sito host virtuale e sul contenuto all’interno di quel sito. Inizia creando una index.htmlpagina per il tuo primo sito your_domain_1.

Apri e crea il index.htmlfile con il tuo editor di testo preferito. Questo esempio utilizza nano:

$ nano /var/www/your_domain_1/public_html/index.html

All’interno di questo file, crea un file HTML che indichi ai visitatori a quale sito sono collegati:

/var/www/tuo_dominio_1/public_html/index.html

<html>
  <head>
    <title>Welcome to your_domain_1!</title>
  </head>
  <body>
    <h1>Success! The your_domain_1 virtual host is working!</h1>
  </body>
</html>

Per salvare e chiudere il file in nano, iniziare premendo CTRL+X. Premere Yquando viene richiesto di salvare il file, quindi premere ENTERuna volta terminato per uscire.

Successivamente, copia questo file da utilizzare come base per il tuo secondo sito digitando:

$ cp /var/www/your_domain_1/public_html/index.html /var/www/your_domain_2/public_html/index.html

Quindi apri questo nuovo file e modifica le informazioni rilevanti utilizzando il tuo editor di testo come prima:

$ nano /var/www/your_domain_2/public_html/index.html

/var/www/tuo_dominio_2/public_html/index.html

<html>
  <head>
    <title>Welcome to your_domain_2!</title>
  </head>
  <body> <h1>Success! The your_domain_2 virtual host is working!</h1>
  </body>
</html>

Salva e chiudi questo file. Ora hai una pagina per ciascun sito che puoi utilizzare per testare la configurazione dell’host virtuale.

Passaggio 4: creazione di nuovi file host virtuale

I file host virtuali sono i file che specificano la configurazione effettiva dei tuoi host virtuali e determinano come il server web Apache risponderà alle varie richieste di dominio.

Apache viene fornito con un file host virtuale predefinito chiamato 000-default.conf. Puoi copiare questo file per creare file host virtuali per ciascuno dei tuoi domini.

Copia il file di configurazione predefinito sul primo dominio:

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/your_domain_1.conf

Tieni presente che la configurazione predefinita di Ubuntu richiede che ciascun file host virtuale termini con .conf.

Apri il nuovo file nel tuo editor di testo preferito con privilegi di root :

$ sudo nano /etc/apache2/sites-available/your_domain_1.conf

Con i commenti rimossi, il file sarà simile a questo:

/etc/apache2/sites-available/tuo_dominio_1.conf

<VirtualHost *:80>
  ...
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
   ...
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

All’interno di questo file, personalizza gli elementi per il tuo primo dominio e aggiungi alcune direttive aggiuntive. Questa sezione dell’host virtuale corrisponde a qualsiasi richiesta effettuata sulla porta 80, la porta HTTP predefinita.

Innanzitutto, modifica la ServerAdmindirettiva in un’e-mail attraverso la quale l’amministratore del sito può ricevere e-mail:

/etc/apache2/sites-available/tuo_dominio_1.conf

ServerAdmin admin@your_domain_1

Successivamente, aggiungi due ulteriori direttive. Il primo, chiamato ServerName, stabilisce il dominio di base per la definizione dell’host virtuale. Il secondo, chiamato ServerAlias, definisce ulteriori nomi che dovrebbero corrispondere come se fossero il nome base. Ciò è utile per abbinare ulteriori host definiti. Ad esempio, se imposti la ServerNamedirettiva su example.compotresti definire a ServerAliasto www.example.com, ed entrambi punteranno all’indirizzo IP di questo server.

Aggiungi queste due direttive al tuo file di configurazione dopo la ServerAdminriga:

/etc/apache2/sites-available/tuo_dominio_1.conf

<VirtualHost *:80>
  ...
    ServerAdmin admin@your_domain_1
    ServerName your_domain_1
    ServerAlias www.your_domain_1
    DocumentRoot /var/www/html
    ...
</VirtualHost>

Successivamente, modifica il percorso del file host virtuale per la radice del documento per questo dominio. Modifica la DocumentRootdirettiva in modo che punti alla directory creata per questo host:

/etc/apache2/sites-available/tuo_dominio_1.conf

DocumentRoot /var/www/your_domain_1/public_html

Ecco un esempio del file host virtuale con tutte le modifiche apportate sopra:

/etc/apache2/sites-available/tuo_dominio_1.conf

<VirtualHost *:80>
  ...
    ServerAdmin admin@your_domain_1
    ServerName your_domain_1
    ServerAlias www.your_domain_1
    DocumentRoot /var/www/your_domain_1/public_html
    ...
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ...
</VirtualHost>

Salva e chiudi il file.

Crea il tuo secondo file di configurazione copiando il file dal tuo primo sito host virtuale:

$ sudo cp /etc/apache2/sites-available/your_domain_1.conf /etc/apache2/sites-available/your_domain_2.conf

Apri il nuovo file nel tuo editor preferito:

$ sudo nano /etc/apache2/sites-available/your_domain_2.conf

Ora devi modificare tutte le informazioni per fare riferimento al tuo secondo dominio. Una volta terminato, dovrebbe assomigliare a questo:

/etc/apache2/sites-available/tuo_dominio_2.conf

<VirtualHost *:80>
  ...
    ServerAdmin admin@your_domain_2
    ServerName your_domain_2
    ServerAlias www.your_domain_2
    DocumentRoot /var/www/your_domain_2/public_html
    ...
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ...
</VirtualHost>

Salva e chiudi il file quando hai finito.

Passaggio 5: abilitazione dei nuovi file host virtuale

Ora che hai creato i file host virtuali, devi abilitarli. Apache include alcuni strumenti che ti consentono di farlo.

Utilizzerai lo a2ensitestrumento per abilitare ciascuno dei tuoi siti. Se desideri saperne di più su questo script, puoi fare riferimento alla a2ensitedocumentazione .

Utilizza i seguenti comandi per abilitare i tuoi siti host virtuali:

$ sudo a2ensite your_domain_1.conf
    
 $ sudo a2ensite your_domain_2.conf

Verrà visualizzato un output per entrambi i siti, simile all’esempio seguente, che ti ricorderà di ricaricare il tuo server Apache:

Output
Enabling site example.com.
To activate the new configuration, you need to run:
  systemctl reload apache2

Prima di ricaricare il server, disabilita il sito predefinito definito in 000-default.confutilizzando il a2dissitecomando:

$ sudo a2dissite 000-default.conf
Output
Site 000-default disabled.
To activate the new configuration, you need to run:
  systemctl reload apache2

Successivamente, verifica gli errori di configurazione:

$ sudo apache2ctl configtest

Dovrebbe ricevere il seguente output:

Output. . .
Syntax OK

Al termine, riavvia Apache per rendere effettive queste modifiche.

$ sudo systemctl restart apache2

Facoltativamente, puoi controllare lo stato del server dopo tutte queste modifiche con questo comando:

$ sudo systemctl status apache2

Il tuo server ora dovrebbe essere configurato per servire due siti web. Se utilizzi nomi di dominio reali, puoi saltare il Passaggio 6 e passare al Passaggio 7. Se stai testando la configurazione localmente, segui il Passaggio 6 per scoprire come testare la configurazione utilizzando il computer locale.

Passaggio 6: (facoltativo) configurazione del file host locale

Se non hai utilizzato i nomi di dominio effettivi di tua proprietà per testare questa procedura e hai invece utilizzato domini di esempio, puoi comunque testare la funzionalità dei tuoi siti host virtuali modificando temporaneamente il hostsfile sul tuo computer locale. Questo intercetterà tutte le richieste per i domini che hai configurato e le indirizzerà al tuo Virtual Private Server (VPS), proprio come farebbe il sistema DNS se utilizzassi domini registrati. Funzionerà solo dal tuo computer locale ed è solo a scopo di test.

Assicurati di eseguire questi passaggi sul tuo computer locale e non sul tuo server VPS. Sarà necessario conoscere la password amministrativa del computer o essere altrimenti membro del gruppo amministrativo.

Se utilizzi un computer Mac o Linux, modifica il tuo file locale con privilegi di amministratore digitando:

$ sudo nano /etc/hosts

Se utilizzi un computer Windows, apri il prompt dei comandi e digita:

$ notepad %windir%\system32\drivers\etc\hosts

I dettagli che devi aggiungere sono l’indirizzo IP pubblico del tuo server, seguito dal dominio che desideri utilizzare per raggiungere quel server. Utilizzando i domini utilizzati in questa guida e sostituendo l’IP del server con il your_server_IPtesto, il file dovrebbe assomigliare a questo:

/etc/hosts

127.0.0.1   localhost
127.0.1.1   guest-desktop
your_server_IP your_domain_1
your_server_IP your_domain_2

Questo indirizzerà tutte le richieste per i tuoi due domini sul tuo computer e le invierà al tuo server all’indirizzo IP designato.

Salva e chiudi il file.

Passaggio 7: testare i risultati

Ora che hai configurato i tuoi host virtuali, puoi testare la tua configurazione andando sui domini che hai configurato nel tuo browser web:

http://your_domain_1
An example of the virtual host web page with edited content

Puoi anche visitare la tua seconda pagina host e visualizzare il file che hai creato per il tuo secondo sito:

http://your_domain_2
An example of a different virtual host web page with edited content

Se entrambi questi siti funzionano come previsto, hai configurato correttamente due host virtuali sullo stesso server.

Nota: se hai modificato il file host del tuo computer locale, come nel passaggio 6 di questo tutorial, potresti voler eliminare le righe che hai aggiunto ora che hai verificato che la configurazione funziona. Ciò eviterà che il tuo hostsfile venga riempito con voci che non sono più necessarie.

Conclusione

Ora hai un singolo server che gestisce due nomi di dominio separati. Puoi espandere questo processo seguendo i passaggi descritti sopra per aggiungere ulteriori host virtuali. Non esiste alcun limite software al numero di nomi di dominio che Apache può gestire, quindi sentiti libero di creare tanti host virtuali quanti il ​​tuo server è in grado di gestire.

Fonte: https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-20-04






Home | Chi siamo | Chat | Contattaci | Whois

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *