GNU/Linux >> Linux Esercitazione >  >> Linux

Configura host virtuali Apache sul sistema operativo Ubuntu

Ora che Apache è installato e in esecuzione, puoi configurarlo per servire più domini utilizzando host virtuali .

Crea il layout

Questo esempio utilizza due domini:dominio1.com e dominio2.com.

  1. Nella tua home directory, crea una cartella public_html:

    cd ~
    mkdir public_html
    
  2. Per ogni dominio che desideri ospitare, crea una cartella con un insieme standard di sottocartelle. I seguenti comandi creano le cartelle public, private, log, cgi-bin e backup per domain1.com e domain2.com:

    mkdir -p public_html/domain1.com/{public,private,log,cgi-bin,backup}
    mkdir -p public_html/domain2.com/{public,private,log,cgi-bin,backup}
    

Crea index.html

Il contenuto della cartella pubblica dipende da te, ma questo esempio utilizza un file HTML molto semplice in modo da poter controllare il lavoro dell'host virtuale.

  1. Per ogni dominio, crea un file index.html:

    nano public_html/domain1.com/public/index.html
    
  2. Aggiungi il codice seguente al file index.html:

    <html>
      <head>
        <title>domain1.com</title>
      </head>
      <body>
    
        <h1>domain1.com</h1>
      </body>
    </html>
    
  3. Ripeti la procedura in modo da avere un file simile per domain2.com. Sostituisci tutte le istanze di domain1.com con domain2.com .

Definisci host virtuali

Ora hai una struttura di base per i tuoi due domini, puoi definire due host virtuali.

Rivedi NameVirtualHost

Con gli host virtuali, l'impostazione NameVirtualHost crea spesso confusione.

Ogni interfaccia e porta su cui Apache è impostato in ascolto necessita di una direttiva NameVirtualHost. Puoi definire la direttiva solo una volta perport.

Nel layout Apache per il sistema operativo Ubuntu è presente una direttiva NameVirtualHost predefinita nel ports.conf file.

Esegui il comando seguente per esaminare il contenuto di ports.conf :

cat /etc/apache2/ports.conf

Dovresti ottenere il seguente output (a meno che tu non abbia precedentemente modificato il file):

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

L'impostazione predefinita di NameVirtualHost soddisfa i requisiti attualmente:Apache applicherà la logica e le impostazioni dell'host virtuale basato su nome per le richieste HTTP effettuate su qualsiasi interfaccia disponibile (*) alla porta 80.

Nota :Il posizionamento della direttiva NameVirtualHost predefinita in'ports.conf' è una novità per il layout Apache del sistema operativo Ubuntu; priorreleases ha inserito un'impostazione simile nel vhost predefinito.

Definisci host virtuali personalizzati

Ora sei pronto per aggiungere i tuoi host virtuali in modo da poter iniziare a servire i tuoi domini.

Crea il file vhost per dominio1:

sudo nano /etc/apache2/sites-available/domain1.com.conf

Il contenuto è il seguente:

# Place any notes or comments you have here
# It will make any customisation easier to understand in the weeks to come

# domain: domain1.com
# public: /home/demo/public_html/domain1.com/

<VirtualHost *:80>

  # Admin email, Server Name (domain name) and any aliases
  ServerAdmin [email protected]
  ServerName  domain1.com
  ServerAlias www.domain1.com


  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html
  DocumentRoot /home/demo/public_html/domain1.com/public


  # Custom log file locations
  LogLevel warn
  ErrorLog /var/log/apache2/error-mydomainname.com.log
  CustomLog /var/log/apache2/access-mydomainname.com.log combined

</VirtualHost>

Abilita il sito

Abilita il sito come segue:

sudo a2ensite domain1.com

L'output del comando è il seguente:

Site domain1.com installed; run /etc/init.d/apache2 reload to enable.

Esegui il comando consigliato:

sudo /etc/init.d/apache2 reload

Per testare il dominio senza creare una zona DNS e record su alcuni server dei nomi Internet, puoi modificare il file '/etc/hosts' sul tuo computer locale per includere alcune voci che mappano 'dominio1.com', 'dominio2.com' e il resto all'indirizzo IP pubblico del Cloud Server demo:

127.0.0.1    localhost
...

# entries related to the demo Cloud Server
123.45.67.890   domain1.com
123.45.67.890   www.domain1.com
123.45.67.890   domain2.com
...

La posizione del file "hosts" varia a seconda del sistema operativo caricato sul computer locale.

Nota :le voci nel file "hosts" devono essere rimosse prima del test e dell'utilizzo di zone DNS attive e record creati su server dei nomi Internet. La mancata rimozione potrebbe creare confusione da parte tua e test imprecisi di record DNS pubblici nuovi o modificati.

Con tali modifiche apportate a scopo di test, puoi navigare sul tuo sito in un browser web sul tuo computer locale e viene mostrato il contenuto del file public/index.html.

Utilizza ServerAlias

Nota che nel file vhost, imposti un ServerAlias. Se hai impostato correttamente il DNS, puoi utilizzare anche quell'indirizzo.

Parleremo di forzare un indirizzo o l'altro in un articolo successivo sulle regole di riscrittura.

Ripeti la procedura per l'altro dominio

Per creare e abilitare domain2.com, ripeti la procedura come segue:

  1. Crea il file vhost:

    sudo nano /etc/apache2/sites-available/domain2.com
    ...
    # Enter the details for domain2.com as per the example shown above
    
  2. Abilita il sito e riavvia Apache:

    sudo a2ensite domain2.com
    ...
    sudo /etc/init.d/apache2 reload
    
  3. Vai al secondo dominio:

    https://domain2.com
    or
    https://www.domain2.com
    

Dovresti vedere il file di indice "domain2.com".

Visualizza file di registro

Come definito nel file vhosts, ogni dominio ha i propri file di log.

Elenca i log per i tuoi domini:

ls /var/log/apache2/error-mydomainname.com.log

L'output è esattamente come previsto:

access.log  error.log

File vhost predefinito

Sebbene tu abbia modificato l'host virtuale predefinito, l'hai lasciato al suo posto.

Se qualcuno inserisce l'indirizzo IP del server cloud, gli viene servito il contenuto di quel file vhosts predefinito (se non hai impostato vhost separato per l'indirizzo IP).

Perché vengono serviti da quel file vhost?

Apache ricerca i file vhost abilitati in ordine alfabetico e se non riesce a trovarne uno per l'indirizzo IP o il nome di dominio richiesto, serve il primo (in ordine alfabetico).

Se avessi disabilitato o eliminato il file vhost predefinito, il contenuto di dominio1.com verrebbe visualizzato (prima di dominio2.com in modo alfabetico).

Questo è qualcosa da considerare quando pianifichi i tuoi siti web. Vuoi che un dominio particolare sia l'impostazione predefinita? Vuoi che l'indirizzo IP abbia contenuti completamente diversi?

Imposta l'indirizzo email dell'amministratore

Impostare l'indirizzo e-mail per l'amministratore del server. Questo indirizzo viene utilizzato se imposti il ​​server per contattarti quando si verificano errori. Viene anche mostrato in ServerSignature se il suo valore è impostato su Email. (Vedi la sezione Definizione dei piè di pagina di Apache .

ServerAdmin [email protected]

Imposta il nome di dominio

Impostare il nome di dominio (ServerName) per l'host virtuale. Puoi avere tutti gli alias (ServerAlias) come richiesto. Ad esempio, puoi fare in modo chedominio.com e dominio.net puntino allo stesso contenuto.

ServerName domain.com
ServerAlias www.domain.com

Nota :Questa non è una regola di riscrittura, ma i domini definiti qui serviranno lo stesso contenuto (supponendo che tu abbia impostato il DNS in modo che punti all'IP del tuo Cloud Server).

Definisci il file di indice

Definire il file di indice (la home page che viene visualizzata quando viene inserito l'indirizzo di dominio). Ciò è utile se desideri che l'utente venga indirizzato a una pagina alternativa o a una home page non standard.

DirectoryIndex index.html

Nota :Questo non è un buon metodo per reindirizzare gli utenti perché potrebbero andare direttamente a una pagina non specificata, come domain.com/index.php, mentre il valore DirectoryIndex funziona solo per coloro che accedono a domain.com.

Definisci il percorso dei documenti

Definisci la posizione dei file pubblici del dominio. Usa un percorso assoluto.

DocumentRoot /home/demo/public_html/domain.com/public

Imposta i file di registro

Imposta i livelli di registro e la posizione per i file di registro degli host virtuali.

LogLevel warn
ErrorLog  /var/log/apache2/error-mydomainname.com.log
CustomLog /var/log/apache2/access-mydomainname.com.log combined

Definisci documenti di errore

Impostare ErrorDocument, che viene utilizzato per tutti i messaggi di errore standard.

ErrorDocument 404 /errors/404.html
ErrorDocument 403 /errors/403.html

In questo esempio, è presente una cartella "errori" nella directory pubblica. Ogni documento di errore è stato creato e inserito nella cartella degli errori. I percorsi mostrati sono relativi alla cartella DocumentRoot definita in precedenza.

Se i messaggi di errore non sono definiti, Apache genera le proprie pagine di errore. Le pagine di errore personalizzate sono più facili da usare e possono essere personalizzate quanto, o poco, quanto vuoi.

Definisci i piè di pagina di Apache

Definisci ServerSignature per specificare se i dettagli del server vengono visualizzati nelle pagine di errore o negli elenchi di indici generati dal server. Le opzioni sono Attivato, Disattivato ed E-mail.

ServerSignature On

Il livello di dettaglio nella firma è configurato tramite ServerTokens, che non può essere impostato nel file Virtual Hosts. Per il layout Apache del sistema operativo Ubuntu, questo è impostato correttamente in '/etc/apache2/conf.d/security'. Per maggiori dettagli, consulta l'articolo Configurazione di Apache n. 2 NEED LINK.

Se ServerSignature è impostato su Email , verrà visualizzata l'e-mail di ServerAdmin.

Abilita cgi-bin

Abilita il percorso cgi-bin come definito dal layout host virtuale personalizzato. Se lo desideri, puoi lasciare cgi-bin nella posizione di DocumentRoot.

ScriptAlias /cgi-bin/ /home/demo/public_html/domain.com/cgi-bin/
<Location /cgi-bin>
  Options +ExecCGI
</Location>

Imposta le opzioni della directory

Impostare le opzioni per la directory specificata. L'esempio seguente abilita l'opzione FollowSymLinks per la directory pubblica didomain.com.

  Options FollowSymLinks

Di seguito sono riportate altre opzioni che puoi impostare:

Opzione di navigazione nella directory

Per disattivare l'esplorazione delle directory, utilizzare -Indici. Per attivare la navigazione nelle directory, usa +Indici.

Options -Indexes

Opzione SSI

Abilita o disabilita Server Side Include. L'esempio seguente disabilita.

Options -Includes

Abilita o disabilita l'opzione per seguire i collegamenti simbolici. Fai attenzione con questa opzione perché può comportare rischi per la sicurezza (collegamento involontario a cartelle di configurazione).

Options -FollowSymLinks

Puoi considerare l'utilizzo della direttiva SymLinksIfOwnerMatch invece di FollowSymLinks. La direttiva SymLinksIfOwnerMatch consente di seguire i collegamenti simbolici solo se il proprietario del collegamento è identico al proprietario del file o della directory di destinazione (in termini di proprietà/autorizzazioni del file system Linux). Ciò previene molti dei rischi per la sicurezza che la semplice direttiva FollowSymlinks può creare.

Opzione .htaccess

Imposta AllowOverride su None per disabilitare il supporto .htaccess. Impostalo su Tutti per consentire il supporto.

AllowOverride None

Puoi anche specificare quali funzionalità .htaccess abilitare, come ad esempio:

AllowOverride AuthConfig Indexes

I documenti Apachehtaccess eAllowOverride hanno maggiori informazioni sulle diverse funzionalità.

Ricorda di proteggere in modo specifico il tuo file .htaccess. Puoi farlo rinominandolo in qualcosa di oscuro e negando l'accesso al file da fonti esterne:

AccessFileName .myobscurefilename
<Files ~ "^\.my">
    <SatisfyAll>
    Require all denied
    </SatisfyAll>
</Files>

Nota :L'esempio precedente è formattato per Apache 2.4. Se si utilizza la 2.2, sostituire ** Richiedi tutto negato ** con Ordine Consenti, Nega | Nega da tutti | Soddisfare tutti .

Nessuna opzione

Specifica Nessuno per disattivare tutte le opzioni disponibili.

Options None

Gerarchia delle opzioni

Le direttive delle opzioni possono essere impostate per directory, come mostrato nell'esempio seguente:

  AllowOverride None
  Options None

AllowOverride All

La prima impostazione della directory disattiverebbe tutte le opzioni e disabiliterebbe il supporto.htaccess per tutte le directory.

Tuttavia, la seconda impostazione della directory sovrascriverebbe la prima e consentirebbe il supporto.htaccess per la directory domain.com/public.

Riepilogo

Il file degli host virtuali è uno strumento facile da usare ma molto potente. Ti consigliamo di inserire un'impostazione e quindi di testarla. Quindi inserisci l'impostazione successiva e prova, e così via.

Dopo aver acquisito familiarità con esso, vedrai che avrai un controllo accurato su tutte le tue cartelle e file web.


Linux
  1. Crea host virtuali CentOS NGINX

  2. Disabilita un host virtuale nel sistema operativo Ubuntu e CentOS per Apache e Nginx

  3. Installa IMAP per PHP 7.1 sul sistema operativo Ubuntu

  4. Installa MySQL Server sul sistema operativo Ubuntu

  5. Pianifica i riavvii nel sistema operativo Ubuntu

Come configurare gli host virtuali Apache su CentOS 8

Come configurare gli host virtuali Apache su Ubuntu 18.10

Come installare il server Apache e configurare host virtuali su Ubuntu 22.04

Come configurare gli host virtuali Apache su Debian 11

Come configurare gli host virtuali Apache su Ubuntu 18.04

Come configurare gli host virtuali Apache su Ubuntu 20.04