Dieser Artikel führt Sie in die Grundlagen von vhost und server block ein.
Überprüfen Sie den Status des Webservers
Die gängigsten Webserver, die unter Linux® laufen, sind Apache® (httpd oder apache2 ) und NGINX®. Plesk® ist eine GUI-Plattform zur Verwaltung von Websites. Wenn Sie Plesk installiert haben, verwenden Sie diesen Artikel als Leitfaden zum Verständnis von vhosts.
Standardmäßig erlauben Webserver HTTP-Datenverkehr über Port 80
und (sicherer) HTTPS-Datenverkehr über Port 443
.
Um den Webserver zu finden, der auf den Ports 80
läuft und 443
, geben Sie den folgenden Befehl ein:
# netstat -plnt | awk '$4 ~ /:(80|443)$/'
tcp6 0 0 :::80 :::* LISTEN 2549/httpd
tcp6 0 0 :::443 :::* LISTEN 2549/httpd
Um den Status eines Webservers zu überprüfen, führen Sie einen der in der folgenden Tabelle aufgeführten Befehle aus:
Art des Webservers | Befehl |
---|---|
httpd | service httpd status |
oder | |
systemctl status httpd | |
apache2 | service apache2 status |
oder | |
systemctl status apache2 | |
nginx | service nginx status |
oder | |
systemctl status nginx | |
Plesk | service psa status |
oder | |
systemctl status psa |
Geben Sie in Plesk den folgenden Befehl ein, um den Status zu überprüfen und festzustellen, welcher Webserver verwendet wird:
# service psa status; netstat -plnt | awk '$4 ~ /:(80|443)$/'
Prüfen Sie die vhosts-Konfiguration
Ein Webserver (oder ein Pool von Webservern) kann mehrere Websites hosten, indem er virtuelle Hosts (vhosts) verwendet. Vhosts ermöglichen es mehreren Websites, Ressourcen von einem physischen Server gemeinsam zu nutzen.
Vhosts können IP-basiert oder namensbasiert sein. IP-basierte Vhosts weisen einer Website eine andere IP-Adresse zu, und zwar namensbasiert vhosts weisen einer einzelnen IP-Adresse mehrere Hostnamen zu. Vhosts verfolgen Websites auf einem Webserver und spezifizieren die Konfiguration jeder Website.
Um die vhosts-Konfiguration in Apache zu überprüfen, geben Sie einen der folgenden Befehle ein:
# httpd -S
oder
# apache2ctl -S
*:80 example.com (/etc/httpd/vhost.d/example.com.conf:1)
Um den Inhalt einer vhost-Konfigurationsdatei zu lesen, geben Sie den folgenden Befehl ein:
# cat /etc/httpd/vhost.d/example.com.conf
Zu den Einträgen in der vhosts-Konfigurationsdatei gehören:
- :80 oder :443 :Diese Einträge geben an, ob die Website HTTP (
80
) oder HTTPS (443
). - DocumentRoot :Der Verzeichnispfad der Website-Dateien.
- Servername :Der Domainname der Website.
- Serveralias :Jeder andere Website-Domainname, den Sie auf ServerName umleiten möchten Domain. In der Regel verwenden Sie Domains vom Typ www.domain , Sie können aber auch andere Domains oder Subdomains verwenden.
- Fehlerprotokoll :Der Verzeichnispfad und Name der Fehlerprotokolle.
- Port 443 :Die SSL-Konfiguration. Kommentieren Sie diesen Abschnitt, wenn die Website kein gültiges SSL-Zertifikat hat.
- SSL-Dateien :Die drei SSL-Dateipfade, die für einen sicheren HTTPS-Server benötigt werden.
Das folgende Beispiel zeigt eine vhosts-Konfigurationsdatei:
<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>
Um die Konfigurationsdatei eines vorhandenen Vhosts zu kopieren, um einen neuen zu erstellen, geben Sie den folgenden Befehl ein:
# cat /OLD_DOMAIN.conf | sed 's/OLD_DOMAIN/NEW_DOMAIN/ig' >> /NEW_DOMAIN.conf
Bearbeiten Sie die neue vhost-Konfigurationsdatei nach Bedarf. Beispielsweise müssen Sie möglicherweise die Einstellungen kommentieren, die Port 443
machen aktiv.
So finden Sie den Speicherort von DocumentRoot Geben Sie in einer vhost-Konfigurationsdatei den folgenden Befehl ein:
# grep Doc /etc/httpd/vhost.d/example.com.conf
DocumentRoot /var/www/vhosts/example.com
Neuen vhost erstellen
Verwenden Sie die folgenden Anweisungen, um einen neuen vhost zu erstellen:
-
Kopieren Sie nach Möglichkeit einen vorhandenen vhost, um konsistente Einstellungen beizubehalten. Verwenden Sie einen Texteditor oder ein Tool wie
vim
,nano
,sed, or
ach`. -
Erstellen Sie ein neues DocumentRoot Verzeichnis. Das System erstellt automatisch die benutzerdefinierten und Fehlerprotokolle. Führen Sie den folgenden Befehl aus:
# mkdir -p /docroot
-
Überprüfen Sie, ob der Webserver keine Fehler sendet:
# httpd -t
-
Führen Sie einen ordnungsgemäßen Neustart auf dem Webserver durch, um die Änderungen mit minimaler Unterbrechung Ihrer Live-Umgebung zu übernehmen:
# service httpd graceful
-
Überprüfen Sie den Webserver erneut:
# httpd -t; service httpd status
Überprüfen und beheben Sie Änderungen an der vhost-Konfiguration
Um Fehler in Apache zu überprüfen, verwenden Sie einen der folgenden Befehle:
# httpd -t
oder
# 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
Verwenden Sie den folgenden Befehl, um Fehler in NGINX zu überprüfen:
# 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
Hinweis :Die Klausel Konnte nicht zuverlässig bestimmt werden ist üblich und bedeutet keinen Fehler. Sie können es normalerweise ignorieren.
Das folgende Beispiel zeigt einen Beispielfehler:
# 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
Beheben Sie diesen Fehler, indem Sie ein DocumentRoot erstellen :
# mkdir -p /var/www/vhosts/example.com
Ein weiterer Beispielfehler:
# 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
Das Wort oops befindet sich in der vhost-Datei, und Apache weiß nicht, wie er sie interpretieren soll. Sie können vim verwenden , Nano , oder einen anderen Texteditor, um den Fehler zu beheben.
Starten Sie einen Webserver neu
Der Webserver bestätigt die an der vhosts-Konfiguration vorgenommenen Änderungen nach einem Neustart. Die aktuellen Threads können beendet werden, bevor der Neustart mit dem graceful erfolgt Option.
Um einen ordnungsgemäßen Neustart auf Apache durchzuführen, geben Sie einen der folgenden Befehle ein:
# service httpd graceful
oder
# service apache2 graceful
Im Folgenden finden Sie Best Practices zur Vermeidung von Dienstunterbrechungen nach einer Änderung der vhosts-Konfiguration:
- Sichern Sie den Webserver.
- Nehmen Sie die Änderungen vor.
- Führen Sie einen ordnungsgemäßen Neustart durch.
- Stellen Sie sicher, dass der Webserver fehlerfrei läuft.
In einer Live-Umgebung ist es wichtig, möglichst viele Ausfallzeiten zu vermeiden, was bedeutet, dass Sie nach dem Neustart des Webservers die Überprüfungen so schnell wie möglich durchführen sollten. Gruppieren Sie dazu alle Befehle in einer Zeile.
Geben Sie einen der folgenden Befehle ein, um Apache ordnungsgemäß neu zu starten und nach Fehlern zu suchen:
# service httpd graceful; httpd -t; service httpd status | grep running
oder
# 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
Geben Sie die folgenden Befehle ein, um NGINX neu zu starten und zu überprüfen, ob es ausgeführt wird:
# nginx -s reload; nginx -t; service nginx status
Verwenden Sie die Registerkarte „Feedback“, um Kommentare abzugeben oder Fragen zu stellen. Sie können auch ein Gespräch mit uns beginnen.