GNU/Linux >> Linux Esercitazione >  >> Linux

Nozioni di base su Vhost

Questo articolo presenta le nozioni di base su vhost e server web. Un server web esegue un software per elaborare le pagine web. Dopo che il traffico web ha raggiunto il server, segue i passaggi per raggiungere il sito web giusto. Se un server offre contenuti web, devi installare un server web.

Controlla lo stato del server web

I server Web più comuni eseguiti su Linux® sono Apache®(httpd o apache2 ) e NGINX®. Potresti anche avere Plesk®. Puoi usare Plesk per gestire i tuoi siti web in uno stile più punta e clicca Windows®. Se installi Plesk, usa il resto di questo articolo, una panoramica di vhosts perché devi usare Plesk invece della riga di comando di Linux per eseguire le attività qui descritte.

Per impostazione predefinita, i server Web consentono il traffico HTTP attraverso la porta 80 e il traffico HTTPS(sicuro) attraverso la porta 443 .

Per trovare il server web che gira sulle porte 80 e 443 , inserisci il seguente comando:

# netstat -plnt | awk '$4 ~ /:(80|443)$/'
tcp6       0      0 :::80                   :::*                    LISTEN      2549/httpd
tcp6       0      0 :::443                  :::*                    LISTEN      2549/httpd

Per verificare lo stato di un web server, eseguire uno dei comandi riportati nella tabella seguente:

Tipo di server web Comando
httpd service httpd status
o
systemctl status httpd
apache2 service apache2 status
o
systemctl status apache2
nginx service nginx status
o
systemctl status nginx
Plesk service psa status
o
systemctl status psa

Per verificare la presenza di Plesk e vedere quale server Web è in esecuzione, immetti il ​​seguente comando:

# service psa status; netstat -plnt | awk '$4 ~ /:(80|443)$/'

Controlla la configurazione dei vhost

Un server Web (o un pool di server Web) può ospitare diversi siti Web utilizzando host virtuali (vhost). I Vhost consentono a diversi siti Web di condividere risorse da un server fisico.

I Vhost possono essere basati sull'indirizzo IP o sul nome. I vhost basati sull'indirizzo IP assegnano un indirizzo IP diverso a un sito Web e i vhost basati sul nome assegnano più nomi host a un singolo indirizzo IP. I Vhost tengono traccia dei siti Web in un server Web, specificando la configurazione di ciascun sito Web.

Per verificare la configurazione di vhosts in Apache, inserisci uno dei seguenti comandi:

# httpd -S

o

# apache2ctl -S
*:80                   example.com (/etc/httpd/vhost.d/example.com.conf:1)

Per leggere il contenuto di un file di configurazione vhost, immettere il seguente comando:

# cat /etc/httpd/vhost.d/example.com.conf 

Le voci nel file di configurazione di vhosts includono:

  • :80 o :443 :Queste voci specificano se il sito Web utilizza HTTP (80 ) o HTTPS (443 ).
  • DocumentRoot :Il percorso della directory dei file del sito Web. Questo è il più delle volte il percorso in cui gli sviluppatori hanno bisogno di accedere per caricare i file.
  • Nomeserver :il nome di dominio del sito web.
  • ServerAlias :qualsiasi altro nome di dominio del sito Web che desideri reindirizzare al Nomeserver dominio. Di solito utilizzi domini del tipo www.domain , ma puoi anche utilizzare altri domini o sottodomini.
  • Registro errori :il percorso della directory e il nome dei log degli errori.
  • Porta 443 :La configurazione SSL. Commenta questa sezione se il sito Web non dispone di un certificato SSL valido.
  • Sito HTTPS sicuro :i tre percorsi file SSL necessari per la crittografia completa per trasformarlo in un sito HTTPS più sicuro.

L'esempio seguente mostra un file di configurazione di vhosts:

<VirtualHost *:80>
    DocumentRoot "/var/www/vhosts/example.com/httpdocs"
    ServerName "example.com"
    ServerAlias "www.example.com"
    <Directory /var/www/vhosts/example.com/httpdocs>
        AllowOverride All
        Options +FollowSymlinks
    </Directory>
 
    DirectoryIndex index.html index.php index.htm
 
    # Logging
    CustomLog /var/log/httpd/example.com-access_log combined
    ErrorLog /var/log/httpd/example.com-error_log
</VirtualHost>
 
#<VirtualHost *:443>
#    DocumentRoot "/var/www/vhosts/example.com/httpdocs"
#    ServerName "example.com"
#    ServerAlias "www.example.com"
#    <Directory /var/www/vhosts/example.com/httpdocs>
#        AllowOverride All
#        Options +FollowSymlinks
#    </Directory>
 
#    DirectoryIndex index.html index.php index.htm
 
#    # SSL Configuration
#    SSLEngine On
#    SSLCertificateFile /etc/httpd/conf/ssl.crt/2021-example.com.crt
#    SSLCACertificateFile /etc/httpd/conf/ssl.crt/2021-example.com.ca
#    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/2021-example.com.key
#
#    # Logging
#    CustomLog /var/log/httpd/example.com-ssl_access_log combined
#    ErrorLog /var/log/httpd/example.com-ssl_error_log
#</VirtualHost>

Per copiare il file di configurazione di un vhost esistente per crearne uno nuovo, immetti il ​​seguente comando:

# cat /OLD_DOMAIN.conf | sed 's/OLD_DOMAIN/NEW_DOMAIN/ig' >> /NEW_DOMAIN.conf

Modifica il nuovo file di configurazione di vhost come richiesto. Ad esempio, potresti dover commentare le impostazioni che rendono la porta 443 attivo.

Per trovare la posizione di DocumentRoot in un file di configurazione vhost, inserisci il seguente comando:

# grep Doc /etc/httpd/vhost.d/example.com.conf

DocumentRoot /var/www/vhosts/example.com

Crea un nuovo vhost

Utilizzare le seguenti istruzioni per creare un nuovo host virtuale:

  1. Se possibile, copia un host virtuale esistente per mantenere le impostazioni coerenti. Usa un editor di testo, come vim , nano , sed o awk , se devi modificarlo.

       # cat /OLD_DOMAIN.conf | sed 's/OLD_DOMAIN/NEW_DOMAIN/ig' >> /NEW_DOMAIN.conf
    
  2. Crea una nuova DocumentRoot directory. Il sistema crea automaticamente i registri personalizzati ed errori. Esegui il seguente comando:

    # mkdir -p /docroot
    
  3. Verifica che il server web non invii errori:

    # httpd -t
    
  4. Esegui un riavvio regolare sul server Web per incorporare le modifiche con interruzioni minime nel tuo ambiente live:

    # service httpd graceful
    
  5. La più piccola modifica in un vhost può interrompere l'intero server Web e impedirgli di servire tutti i tuoi siti Web. Per questo motivo, utilizza uno dei seguenti comandi per ricontrollare il server web:

    Tipo di server web Comando
    httpd # httpd -t; service httpd status
    apache2 # apache2ctl -t; service apache2 status
    nginx # nginx -t; service nginx status

Controlla e risolvi le modifiche alla configurazione di vhost

Per controllare gli errori in Apache, usa uno dei seguenti comandi:

# httpd -t

o

# apache2ctl -t

AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK

Per controllare gli errori in NGINX, usa il seguente comando:

# nginx -t

AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK

Nota :La clausola Impossibile determinare in modo affidabile è comune e non significa un errore. Di solito puoi ignorarlo.

L'esempio seguente mostra un errore di esempio:

# httpd -t
AH00112: Warning: DocumentRoot [/var/www/vhosts/example.com] does not exist
AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK

Risolvi questo errore creando una DocumentRoot directory:

# mkdir -p /var/www/vhosts/example.com

Un altro errore di esempio:

# httpd -t
AH00526: Syntax error on line 5 of /etc/httpd/vhost.d/example.com.conf:
Invalid command 'oops', perhaps misspelled or defined by a module not
included in the server configuration

La parola ops è nel file vhost e Apache non sa come interpretarlo. Puoi usare vim , nano o un altro editor di testo per correggere l'errore.

Riavvia un server web

Il server Web riconosce le modifiche apportate alla configurazione di vhosts dopo un riavvio. I thread correnti possono terminare prima che avvenga il riavvio con il aggraziato opzione.

Per eseguire un riavvio regolare su Apache, inserisci uno dei seguenti comandi:

# service httpd graceful

o

# service apache2 graceful

A volte, la più piccola modifica in un vhost può interrompere l'intero server Web e impedirgli di servire tutti i tuoi siti Web. Quindi esegui il backup del tuo lavoro e, dopo aver eseguito un riavvio regolare per riconoscere le modifiche, assicurati che il tuo server web funzioni ancora senza errori.

Di seguito sono riportate le best practice per evitare interruzioni del servizio dopo aver modificato la configurazione di vhosts:

  • Esegui il backup del server web.
  • Apporta le modifiche.
  • Fai un buon riavvio.
  • Assicurati che il server web funzioni senza errori.

In un ambiente live, la chiave è evitare il maggior numero possibile di tempi di inattività, il che significa che è necessario eseguire un riavvio regolare sul server Web ed eseguire i controlli il più rapidamente possibile in modo da poter annullare le modifiche se necessario. Per fare ciò, puoi raggruppare tutti i comandi su una riga.

Per eseguire un riavvio regolare su Apache e verificare la presenza di errori, immettere uno dei seguenti comandi:

# service httpd graceful; httpd -t; service httpd status | grep running

o

# service apache2 graceful; apache2ctl -t; service apache2 status | grep running

AH00558: httpd: Could not reliably determine the server's fully qualified domain
name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Redirecting to /bin/systemctl status httpd.service
Active: active (running) (Result: exit-code) since Mon 2021-01-18 12:53:06 GMT; 2 months 19 days ago

Per riavviare NGINX e verificare che sia in esecuzione, inserisci i seguenti comandi:

# nginx -s reload; nginx -t; service nginx status

Utilizza la scheda Feedback per inserire commenti o porre domande. Puoi anche avviare una conversazione con noi.


Linux
  1. Come configurare un server web Apache

  2. Ottimizzazione del server Web Apache Keep-alive

  3. Che cos'è un server Web e come funziona un server Web?

  4. Come installare Nginx Web Server su Linux

  5. È sicuro disabilitare IPv6 sul mio server Debian?

Come installare Nginx Web Server su Alpine Linux

Proteggi il tuo server Web Apache Best Practice

Server Web su Ubuntu 16.04??

Come installare il server Web Lighttpd su Ubuntu 18.04

Come configurare un server domestico

Nozioni di base sull'hosting Web e scelta di un provider