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

Grundlagen zu Vhosts und Serverblöcken

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:

  1. 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`.

  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. Ü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.


Linux
  1. Was ist ein Webserver und wie funktioniert ein Webserver?

  2. Status und Abhängigkeiten des Solaris-Dienstes?

  3. Apache2 und binden?

  4. Snapshots erstellen und verwalten

  5. Vhosts-Grundlagen

Nginx unter Ubuntu 14.04 und 16.04 installieren

SSH-Tunneling und Proxying

NIS-Client und -Server

Grundlagen der VMware-Virtualisierung – VMware Server und VMware ESXi

Häufige Serverprobleme und Lösungen

Webhosting-Grundlagen und Auswahl eines Anbieters