GNU/Linux >> Znalost Linux >  >> Linux

Základy Vhosts a serverových bloků

Tento článek vás seznámí se základy vhost a blokování serverů.

Zkontrolujte stav webového serveru

Nejběžnějšími webovými servery, které běží na Linuxu®, jsou Apache® (httpd nebo apache2 ) a NGINX®. Plesk® je GUIplatforma pro správu webových stránek. Pokud máte nainstalovaný Plesk, použijte tento článek jako průvodce pro pochopení vhosts.

Ve výchozím nastavení povolují webové servery provoz HTTP přes port 80 a HTTPS (zabezpečený) provoz přes port 443 .

Chcete-li najít webový server, který běží na portech 80 a 443 , zadejte následující příkaz:

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

Chcete-li zkontrolovat stav webového serveru, spusťte jeden z příkazů uvedených v následující tabulce:

Typ webového serveru Příkaz
httpd service httpd status
nebo
systemctl status httpd
apache2 service apache2 status
nebo
systemctl status apache2
nginx service nginx status
nebo
systemctl status nginx
Plesk service psa status
nebo
systemctl status psa

Chcete-li v Plesku zkontrolovat stav a zjistit, který webový server se používá, zadejte následující příkaz:

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

Zkontrolujte konfiguraci vhosts

Webový server (nebo skupina webových serverů) může hostit několik webových stránek pomocí virtuálních hostitelů (vhosts). Vhosts umožňují několika webům sdílet zdroje z fyzického serveru.

Vhosts mohou být založeny na IP nebo na názvu. Vhostitelé na základě IP přidělují webu jinou IP adresu a podle názvu vhosts přiřadí více názvů hostitelů jedné IP adrese. Vhosts sledují webové stránky na webovém serveru a určují konfiguraci každé webové stránky.

Chcete-li zkontrolovat konfiguraci vhosts v Apache, zadejte jeden z následujících příkazů:

# httpd -S

nebo

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

Chcete-li přečíst obsah konfiguračního souboru vhost, zadejte následující příkaz:

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

Položky v konfiguračním souboru vhosts zahrnují:

  • :80 nebo :443 :Tyto položky určují, zda web používá HTTP (80 ) nebo HTTPS (443 ).
  • DocumentRoot :Cesta k adresáři souborů webových stránek.
  • Název serveru :Název domény webu.
  • Alias ​​serveru :Jakýkoli jiný název domény webových stránek, který chcete přesměrovat na Název serveru doména. Obvykle používáte domény typu www.domena , ale můžete použít i jiné domény nebo subdomény.
  • ErrorLog :Cesta k adresáři a název protokolů chyb.
  • Port 443 :Konfigurace SSL. Pokud web nemá platný certifikát SSL, okomentujte tuto sekci.
  • Soubory SSL :Tři cesty k souboru SSL potřebné pro zabezpečený server HTTPS.

Následující příklad ukazuje konfigurační soubor 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>

Chcete-li zkopírovat konfigurační soubor existujícího vhost za účelem vytvoření nového, zadejte následující příkaz:

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

Podle potřeby upravte nový konfigurační soubor vhost. Například budete možná muset okomentovat nastavení, které dělá port 443 aktivní.

Chcete-li najít umístění DocumentRoot v konfiguračním souboru vhost zadejte následující příkaz:

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

DocumentRoot /var/www/vhosts/example.com

Vytvořit nový vhost

K vytvoření nového vhost použijte následující pokyny:

  1. Pokud je to možné, zkopírujte existující vhost, abyste zachovali konzistentní nastavení. Použijte textový editor nebo nástroj jako vim , nano , sed, or awk`.

  2. Vytvořte nový DocumentRoot adresář. Systém vytváří vlastní a chybové protokoly automaticky. Spusťte následující příkaz:

    # mkdir -p /docroot
    
  3. Zkontrolujte, zda webový server neodesílá žádné chyby:

    # httpd -t
    
  4. Proveďte elegantní restart na webovém serveru, abyste začlenili změny s minimálním narušením vašeho živého prostředí:

    # service httpd graceful
    
  5. Znovu zkontrolujte webový server:

    # httpd -t; service httpd status
    

Kontrola a odstraňování problémů se změnami konfigurace vhost

Chcete-li zkontrolovat chyby v Apache, použijte jeden z následujících příkazů:

# httpd -t

nebo

# 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

Chcete-li zkontrolovat chyby v NGINX, použijte následující příkaz:

# 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

Poznámka :Klauzule Nelze spolehlivě určit je běžné a neznamená to chybu. Obvykle to můžete ignorovat.

Následující příklad ukazuje ukázkovou chybu:

# 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

Opravte tuto chybu vytvořením DocumentRoot :

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

Další příklad chyby:

# 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

Slovo jejda je v souboru vhost a Apache neví, jak jej interpretovat. Můžete použít vim , nano , nebo jiný textový editor pro opravu chyby.

Restartujte webový server

Webový server potvrdí změny provedené v konfiguraci vhosts po restartu. Aktuální vlákna mohou skončit dříve, než dojde k restartu s ladným možnost.

Chcete-li provést elegantní restart na Apache, zadejte jeden z následujících příkazů:

# service httpd graceful

nebo

# service apache2 graceful

Níže jsou uvedeny doporučené postupy, jak se vyhnout přerušením služby po změně konfigurace vhosts:

  • Zálohujte webový server.
  • Proveďte změny.
  • Proveďte elegantní restart.
  • Ujistěte se, že webový server běží bez chyb.

Je důležité vyhnout se co největšímu prostojům v živém prostředí, což znamená, že po restartu webového serveru byste měli provádět kontroly co nejrychleji. Chcete-li to provést, seskupte všechny příkazy na jeden řádek.

Chcete-li provést elegantní restart na Apache a zkontrolovat chyby, zadejte jeden z následujících příkazů:

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

nebo

# 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

Chcete-li restartovat NGINX a zkontrolovat, zda běží, zadejte následující příkazy:

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

Pomocí karty Zpětná vazba můžete přidat komentáře nebo položit otázky. Můžete s námi také zahájit konverzaci.


Linux
  1. Stav systému a serveru

  2. Stav a závislosti služby Solaris?

  3. Server Ubuntu 14 a Xrdp?

  1. Apache2 a Bind?

  2. Vytváření a správa snímků

  3. Stavové kódy odpovědi HTTP

  1. Meziprocesová komunikace v Linuxu:Sokety a signály

  2. Co je webový server a jak webový server funguje?

  3. Základy Vhosts