Dieser Artikel führt Sie in die Grundlagen von vhost und Webservern ein. Ein Webserver führt Software zum Verarbeiten von Webseiten aus. Nachdem der Webverkehr den Server erreicht hat, folgt er den Schritten, um die richtige Website zu erreichen. Wenn ein Server Webinhalte bereitstellt, müssen Sie einen Webserver installieren.
Überprüfen Sie den Status des Webservers
Die gängigsten Webserver, die unter Linux® laufen, sind Apache® (httpd oder apache2 ) und NGINX®. Möglicherweise haben Sie auch Plesk®. Sie können Plesk verwenden, um Ihre Websites in einem Windows®-Stil mit mehr Zeigen und Klicken zu verwalten. Wenn Sie Plesk installieren, verwenden Sie den Rest dieses Artikels als Übersicht über vhosts, da Sie Plesk anstelle der Linux-Befehlszeile verwenden müssen, um die hier beschriebenen Aufgaben auszuführen.
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 den folgenden Befehl ein, um nach Plesk zu suchen und festzustellen, welcher Webserver ausgeführt 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 auf IP-Adressen oder Namen basieren. Auf IP-Adressen basierende Vhosts weisen einer Website eine andere IP-Adresse zu, und namensbasierte 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. Dies ist meistens der Ort, an dem Entwickler Zugriff zum Hochladen von Dateien benötigen.
- 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.
- Sichere HTTPS-Site :Die drei SSL-Dateipfade, die für die vollständige Verschlüsselung benötigt werden, um daraus eine sicherere HTTPS-Site zu machen.
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 auskommentieren, 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 wie
vim
,nano
,sed
, oderawk
, wenn Sie es bearbeiten müssen.# cat /OLD_DOMAIN.conf | sed 's/OLD_DOMAIN/NEW_DOMAIN/ig' >> /NEW_DOMAIN.conf
-
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
-
Die kleinste Änderung an einem Vhost kann Ihren gesamten Webserver unterbrechen und ihn daran hindern, alle Ihre Websites zu bedienen. Verwenden Sie daher einen der folgenden Befehle, um den Webserver erneut zu überprüfen:
Art des Webservers Befehl httpd # httpd -t; service httpd status
apache2 # apache2ctl -t; service apache2 status
nginx # nginx -t; service nginx 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 Verzeichnis:
# 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
Manchmal kann die kleinste Änderung in einem Vhost Ihren gesamten Webserver unterbrechen und ihn daran hindern, alle Ihre Websites zu bedienen. Sichern Sie also Ihre Arbeit und stellen Sie nach einem ordnungsgemäßen Neustart zur Erkennung von Änderungen sicher, dass Ihr Webserver weiterhin fehlerfrei läuft.
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, so viele Ausfallzeiten wie möglich zu vermeiden, was bedeutet, dass Sie einen ordnungsgemäßen Neustart auf dem Webserver durchführen und Ihre Überprüfungen so schnell wie möglich durchführen müssen, damit Sie Ihre Änderungen bei Bedarf rückgängig machen können. Dazu können Sie alle Befehle in einer Zeile zusammenfassen.
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.