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

Richten Sie virtuelle Apache-Hosts auf dem Ubuntu-Betriebssystem ein

Nachdem Apache installiert ist und ausgeführt wird, können Sie ihn so konfigurieren, dass er mehrere Domänen bedient, indem Sie virtuelle Hosts verwenden .

Layout erstellen

Dieses Beispiel verwendet zwei Domains:domain1.com und domain2.com.

  1. Erstellen Sie in Ihrem Home-Verzeichnis einen public_html-Ordner:

    cd ~
    mkdir public_html
    
  2. Erstellen Sie für jede Domain, die Sie hosten möchten, einen Ordner mit einem Standardsatz von Unterordnern. Die folgenden Befehle erstellen die Ordner public, private, log, cgi-bin und backup für domain1.com und domain2.com:

    mkdir -p public_html/domain1.com/{public,private,log,cgi-bin,backup}
    mkdir -p public_html/domain2.com/{public,private,log,cgi-bin,backup}
    

index.html erstellen

Der Inhalt des öffentlichen Ordners liegt bei Ihnen, aber dieses Beispiel verwendet eine sehr einfache HTML-Datei, damit Sie die Arbeit des virtuellen Hosts überprüfen können.

  1. Erstellen Sie für jede Domain eine index.html-Datei:

    nano public_html/domain1.com/public/index.html
    
  2. Fügen Sie der Datei index.html den folgenden Code hinzu:

    <html>
      <head>
        <title>domain1.com</title>
      </head>
      <body>
    
        <h1>domain1.com</h1>
      </body>
    </html>
    
  3. Wiederholen Sie den Vorgang, sodass Sie eine ähnliche Datei für domain2.com haben. Ersetzen Sie alle Instanzen von domain1.com mit domain2.com .

Virtuelle Hosts definieren

Jetzt haben Sie eine Grundstruktur für Ihre zwei Domains, Sie können zwei virtuelle Hosts definieren.

NameVirtualHost überprüfen

Bei virtuellen Hosts sorgt die NameVirtualHost-Einstellung oft für Verwirrung.

Jede Schnittstelle und jeder Port, auf dem Apache lauschen soll, benötigt eine NameVirtualHost-Direktive. Sie können die Direktive nur einmal pro Port definieren.

Im Apache-Layout für das Ubuntu-Betriebssystem gibt es eine Standard-NameVirtualHost-Anweisung in der ports.conf Datei.

Führen Sie den folgenden Befehl aus, um den Inhalt von ports.conf anzuzeigen :

cat /etc/apache2/ports.conf

Sie sollten die folgende Ausgabe erhalten (es sei denn, Sie haben die Datei zuvor geändert):

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

Die Standardeinstellung NameVirtualHost erfüllt die aktuellen Anforderungen - Apache wendet namensbasierte Logik und Einstellungen für virtuelle Hosts auf HTTP-Anforderungen an, die an jeder verfügbaren Schnittstelle (*) an Port 80 gesendet werden.

Hinweis :Die Platzierung der standardmäßigen NameVirtualHost-Direktive in ‚ports.conf‘ ist neu im Apache-Layout des Ubuntu-Betriebssystems; vorherige Releases haben eine ähnliche Einstellung im Standard-vhost platziert.

Define benutzerdefinierte virtuelle Hosts

Jetzt können Sie Ihre eigenen virtuellen Hosts hinzufügen, damit Sie beginnen können, Ihre Domains zu bedienen.

Erstellen Sie die vhost-Datei für domain1:

sudo nano /etc/apache2/sites-available/domain1.com.conf

Der Inhalt sieht wie folgt aus:

# Place any notes or comments you have here
# It will make any customisation easier to understand in the weeks to come

# domain: domain1.com
# public: /home/demo/public_html/domain1.com/

<VirtualHost *:80>

  # Admin email, Server Name (domain name) and any aliases
  ServerAdmin [email protected]
  ServerName  domain1.com
  ServerAlias www.domain1.com


  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html
  DocumentRoot /home/demo/public_html/domain1.com/public


  # Custom log file locations
  LogLevel warn
  ErrorLog /var/log/apache2/error-mydomainname.com.log
  CustomLog /var/log/apache2/access-mydomainname.com.log combined

</VirtualHost>

Aktivieren Sie die Website

Aktivieren Sie die Site wie folgt:

sudo a2ensite domain1.com

Die Ausgabe des Befehls sieht wie folgt aus:

Site domain1.com installed; run /etc/init.d/apache2 reload to enable.

Führen Sie den empfohlenen Befehl aus:

sudo /etc/init.d/apache2 reload

Um die Domäne zu testen, ohne eine DNS-Zone und Einträge auf einigen Internet-Nameservern zu erstellen, können Sie die Datei „/etc/hosts“ auf Ihrem lokalen Computer so ändern, dass sie einige Einträge enthält, die „domain1.com“, „domain2.com“ und den Rest zuordnen an die öffentliche IP-Adresse des Demo-Cloud-Servers:

127.0.0.1    localhost
...

# entries related to the demo Cloud Server
123.45.67.890   domain1.com
123.45.67.890   www.domain1.com
123.45.67.890   domain2.com
...

Der Speicherort der Datei „hosts“ hängt davon ab, welches Betriebssystem auf Ihrem lokalen Computer geladen ist.

Hinweis :Einträge in der Datei „hosts“ müssen vor dem Testen und Verwenden von Live-DNS-Zonen und -Einträgen, die auf Internet-Nameservern erstellt wurden, entfernt werden. Wenn Sie sie nicht entfernen, kann dies zu Verwirrung Ihrerseits und zu ungenauen Tests neuer oder geänderter öffentlicher DNS-Einträge führen.

Wenn solche Änderungen zu Testzwecken vorgenommen werden, können Sie in einem Webbrowser auf Ihrem lokalen Computer zu Ihrer Website navigieren und der Inhalt der Datei public/index.html wird angezeigt.

Verwenden Sie den ServerAlias

Beachten Sie, dass Sie in der vhost-Datei einen ServerAlias ​​festlegen. Wenn Sie das DNS richtig eingerichtet haben, können Sie auch diese Adresse verwenden.

Über das Erzwingen der einen oder anderen Adresse sprechen wir in einem späteren Artikel über Rewrite-Regeln.

Wiederholen Sie den Vorgang für die andere Domain

Um domain2.com zu erstellen und zu aktivieren, wiederholen Sie den Vorgang wie folgt:

  1. Erstellen Sie die vhost-Datei:

    sudo nano /etc/apache2/sites-available/domain2.com
    ...
    # Enter the details for domain2.com as per the example shown above
    
  2. Aktivieren Sie die Site und starten Sie Apache neu:

    sudo a2ensite domain2.com
    ...
    sudo /etc/init.d/apache2 reload
    
  3. Navigieren Sie zur zweiten Domain:

    https://domain2.com
    or
    https://www.domain2.com
    

Sie sollten die Indexdatei „domain2.com“ sehen.

Protokolldateien anzeigen

Wie in der vhosts-Datei definiert, hat jede Domain ihre eigenen Protokolldateien.

Listen Sie die Protokolle für Ihre Domains auf:

ls /var/log/apache2/error-mydomainname.com.log

Die Ausgabe ist genau wie erwartet:

access.log  error.log

Standard-vhost-Datei

Obwohl Sie den standardmäßigen virtuellen Host geändert haben, haben Sie ihn beibehalten.

Wenn jemand die IP-Adresse des Cloud-Servers eingibt, wird ihm der Inhalt dieser Standard-vhosts-Datei angezeigt (wenn Sie keinen separaten vhost für die IP-Adresse eingerichtet haben).

Warum werden sie von dieser vhost-Datei bereitgestellt?

Apache durchsucht die aktivierten vhost-Dateien in alphabetischer Reihenfolge und wenn es keine für die angeforderte IP-Adresse oder den Domänennamen finden kann, bedient es die erste (alphabetisch).

Wenn Sie die Standard-vhost-Datei deaktiviert oder gelöscht hätten, würde der Inhalt von domain1.com angezeigt (alphabetisch vor domain2.com).

Dies sollten Sie bei der Planung Ihrer Websites berücksichtigen. Möchten Sie, dass eine bestimmte Domäne die Standarddomäne ist? Möchten Sie, dass die IP-Adresse einen völlig anderen Inhalt hat?

Legen Sie die E-Mail-Adresse des Administrators fest

Legen Sie die E-Mail-Adresse für den Serveradministrator fest. Diese Adresse wird verwendet, wenn Sie den Server so einrichten, dass er Sie kontaktiert, wenn Fehler auftreten. Sie wird auch in der Serversignatur angezeigt, wenn ihr Wert auf E-Mail gesetzt ist. (Siehe Abschnitt Apache-Fußzeilen definieren .

ServerAdmin [email protected]

Legen Sie den Domainnamen fest

Legen Sie den Domänennamen (ServerName) für den virtuellen Host fest. Sie können beliebig viele Aliase (ServerAlias) haben. Beispielsweise können Sie domain.com und domain.net auf denselben Inhalt verweisen lassen.

ServerName domain.com
ServerAlias www.domain.com

Hinweis :Dies ist keine Rewrite-Regel, aber die hier definierten Domains liefern denselben Inhalt (vorausgesetzt, Sie haben das DNS so eingestellt, dass es auf Ihre Cloud-Server-IP verweist).

Indexdatei definieren

Definieren Sie die Indexdatei (die Startseite, die angezeigt wird, wenn die Domainadresse eingegeben wird). Dies ist nützlich, wenn Sie möchten, dass der Benutzer zu einer alternativen Seite oder zu einer nicht standardmäßigen Startseite weitergeleitet wird.

DirectoryIndex index.html

Hinweis :Dies ist keine gute Methode zum Umleiten von Benutzern, da sie möglicherweise direkt zu einer nicht angegebenen Seite wie domain.com/index.php gehen, während der DirectoryIndex-Wert nur für Benutzer funktioniert, die domain.com aufrufen.

Den Dokumentenpfad definieren

Definieren Sie den Speicherort der öffentlichen Dateien der Domain. Verwenden Sie einen absoluten Pfadnamen.

DocumentRoot /home/demo/public_html/domain.com/public

Setzen Sie die Protokolldateien

Legen Sie die Protokollebenen und den Speicherort für die Protokolldateien der virtuellen Hosts fest.

LogLevel warn
ErrorLog  /var/log/apache2/error-mydomainname.com.log
CustomLog /var/log/apache2/access-mydomainname.com.log combined

Fehlerdokumente definieren

Setzen Sie das ErrorDocument, das für alle Standard-Fehlermeldungen verwendet wird.

ErrorDocument 404 /errors/404.html
ErrorDocument 403 /errors/403.html

In diesem Beispiel gibt es einen „Fehler“-Ordner im öffentlichen Verzeichnis. Jedes Fehlerdokument wurde erstellt und im Fehlerordner abgelegt. Die angezeigten Pfade sind relativ zum zuvor definierten DocumentRoot-Ordner.

Wenn keine Fehlermeldungen definiert sind, generiert Apache seine eigenen Fehlerseiten. Benutzerdefinierte Fehlerseiten sind benutzerfreundlicher und können so weit oder so wenig wie gewünscht angepasst werden.

Apache-Fußzeilen definieren

Definieren Sie ServerSignature, um anzugeben, ob die Serverdetails in vom Server generierten Fehlerseiten oder Indexlisten angezeigt werden. Die Optionen sind Ein, Aus und E-Mail.

ServerSignature On

Der Detaillierungsgrad der Signatur wird über ServerTokens konfiguriert, die nicht in der Virtual Hosts-Datei festgelegt werden können. Für das Apachelayout des Ubuntu-Betriebssystems ist dies ordnungsgemäß in „/etc/apache2/conf.d/security“ festgelegt. Weitere Informationen finden Sie im Artikel Apache-Konfiguration Nr. 2 NEED LINK.

Wenn ServerSignature auf E-Mail eingestellt ist , wird die ServerAdmin-E-Mail angezeigt.

cgi-bin aktivieren

Aktivieren Sie den cgi-bin-Speicherort, wie er durch das benutzerdefinierte virtuelle Hosts-Layout definiert ist. Sie können cgi-bin im DocumentRoot-Verzeichnis belassen, wenn Sie möchten.

ScriptAlias /cgi-bin/ /home/demo/public_html/domain.com/cgi-bin/
<Location /cgi-bin>
  Options +ExecCGI
</Location>

Verzeichnisoptionen festlegen

Legen Sie die Optionen für das angegebene Verzeichnis fest. Das folgende Beispiel aktiviert die FollowSymLinks-Option für das öffentliche Verzeichnis vondomain.com.

  Options FollowSymLinks

Im Folgenden finden Sie weitere Optionen, die Sie festlegen können:

Option zum Durchsuchen von Verzeichnissen

Verwenden Sie -Indexes, um das Durchsuchen von Verzeichnissen zu deaktivieren. Um das Durchsuchen von Verzeichnissen zu aktivieren, verwenden Sie +Indexes.

Options -Indexes

SSI-Option

Server Side Includes aktivieren oder deaktivieren. Das folgende Beispiel disablesit.

Options -Includes

Aktivieren oder deaktivieren Sie die Option, Symlinks zu folgen. Seien Sie vorsichtig mit dieser Option, da sie zu Sicherheitsrisiken führen kann (versehentliche Verknüpfung mit Konfigurationsordnern).

Options -FollowSymLinks

Sie können die Direktive SymLinksIfOwnerMatch anstelle von FollowSymLinks verwenden. Die Direktive SymLinksIfOwnerMatch erlaubt symbolischen Links nur dann zu folgen, wenn der Eigentümer des Links mit dem Eigentümer der Zieldatei oder des Zielverzeichnisses identisch ist (in Bezug auf die Eigentümerschaft/Berechtigungen des Linux-Dateisystems). Dies verhindert viele der Sicherheitsrisiken, die eine einfache FollowSymlinks-Anweisung erzeugen kann.

.htaccess-Option

Setzen Sie AllowOverride auf None, um die .htaccess-Unterstützung zu deaktivieren. Setzen Sie es auf Alle, um Unterstützung zuzulassen.

AllowOverride None

Sie können auch angeben, welche .htaccess-Funktionen aktiviert werden sollen, wie zum Beispiel:

AllowOverride AuthConfig Indexes

Die Apachehtaccess- und AllowOverride-Dokumente enthalten weitere Informationen zu den verschiedenen Funktionen.

Denken Sie daran, Ihre .htaccess-Datei besonders zu schützen. Sie können dies tun, indem Sie es in etwas Unverständliches umbenennen und den Zugriff auf die Datei aus externen Quellen verweigern:

AccessFileName .myobscurefilename
<Files ~ "^\.my">
    <SatisfyAll>
    Require all denied
    </SatisfyAll>
</Files>

Hinweis :Das vorhergehende Beispiel ist für Apache 2.4 formatiert. Wenn Sie 2.2 verwenden, ersetzen Sie ** Require all denied ** durch Order Allow,Deny | Von allen ablehnen | Zufriedenstellend .

Keine Optionen

Geben Sie Keine an, um alle verfügbaren Optionen zu deaktivieren.

Options None

Optionshierarchie

Die Optionsdirektiven können pro Verzeichnis gesetzt werden, wie im folgenden Beispiel gezeigt:

  AllowOverride None
  Options None

AllowOverride All

Die erste Verzeichniseinstellung würde alle Optionen ausschalten und die.htaccess-Unterstützung für alle Verzeichnisse deaktivieren.

Die zweite Verzeichniseinstellung würde jedoch die erste außer Kraft setzen und die Unterstützung von .htaccess für das Verzeichnis domain.com/public zulassen.

Zusammenfassung

Die virtuelle Hosts-Datei ist ein einfach zu verwendendes, aber sehr leistungsfähiges Werkzeug. Wir empfehlen, dass Sie eine Einstellung eingeben und diese dann testen. Geben Sie dann die nächste Einstellung ein und testen Sie sie usw.

Nachdem Sie sich damit vertraut gemacht haben, werden Sie feststellen, dass Sie alle Ihre Webordner und -dateien genau steuern können.


Linux
  1. Ändern Sie den SSH-Port im Betriebssystem Linux Ubuntu

  2. Konfigurieren Sie Apache auf dem Ubuntu-Betriebssystem

  3. Konfigurieren Sie den MySQL-Server auf dem Ubuntu-Betriebssystem

  4. Erstellen Sie virtuelle CentOS NGINX-Hosts

  5. Planen Sie Neustarts im Ubuntu-Betriebssystem

So richten Sie virtuelle Apache-Hosts unter CentOS 8 ein

So richten Sie Apache Virtual Hosts unter Ubuntu 18.10 ein

So installieren Sie Apache Server und richten virtuelle Hosts unter Ubuntu 22.04 ein

So richten Sie Apache Virtual Hosts unter Debian 11 ein

So richten Sie Apache Virtual Hosts unter Ubuntu 18.04 ein

So richten Sie virtuelle Apache-Hosts unter Ubuntu 20.04 ein