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:
-
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`. -
Vytvořte nový DocumentRoot adresář. Systém vytváří vlastní a chybové protokoly automaticky. Spusťte následující příkaz:
# mkdir -p /docroot
-
Zkontrolujte, zda webový server neodesílá žádné chyby:
# httpd -t
-
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
-
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.