GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Vhosts-Grundlagen

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:

  1. Kopieren Sie nach Möglichkeit einen vorhandenen vhost, um konsistente Einstellungen beizubehalten. Verwenden Sie einen Texteditor wie vim , nano , sed , oder awk , wenn Sie es bearbeiten müssen.

       # cat /OLD_DOMAIN.conf | sed 's/OLD_DOMAIN/NEW_DOMAIN/ig' >> /NEW_DOMAIN.conf
    
  2. Erstellen Sie ein neues DocumentRoot Verzeichnis. Das System erstellt automatisch die benutzerdefinierten und Fehlerprotokolle. Führen Sie den folgenden Befehl aus:

    # mkdir -p /docroot
    
  3. Überprüfen Sie, ob der Webserver keine Fehler sendet:

    # httpd -t
    
  4. 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
    
  5. 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.


Linux
  1. Optimieren von Apache Web Server Keepalive

  2. Was ist ein Webserver und wie funktioniert ein Webserver?

  3. So installieren Sie den Nginx-Webserver unter Linux

  4. Grundlagen zu Vhosts und Serverblöcken

  5. Ist es sicher, IPv6 auf meinem Debian-Server zu deaktivieren?

So installieren Sie den Nginx-Webserver unter Alpine Linux

Sichern Sie Ihren Apache-Webserver Best Practice

Webserver auf Ubuntu 16.04??

So installieren Sie den Lighttpd-Webserver unter Ubuntu 18.04

So richten Sie einen Heimserver ein

Webhosting-Grundlagen und Auswahl eines Anbieters