Tutorial: Apache Domains & Virtual Hosts anlegen

Dieses Tutorial erklärt euch, wie ihr beim Apache-Server Domains hinzufügen könnnt. Dies ist möglich, indem in der Apache-Konfiguration je Domain ein sogenannter Virtual Host erstellt wird.

Dieses Tutorial setzt voraus, dass Apache bereits installiert ist. Wie dies geht, ist im Tutorial Apache installieren auf Linux beschrieben.

In diesem Tutorial nutze ich Ubuntu 18.04. Das Tutorial funktioniert aber für die meisten Linux-Betriebssysteme.

Express-Setup – Alle Befehle im Überblick

Nachfolgende eine Befehle im Überblick um einen Virtual Host für eine Domain anzulegen. Details der Schritte folgen in den nachfolgenden Abschnitten.

 

Schritt 1 – Ordnerstruktur

Es empfiehlt sich, die Websites der verschiedenen Domains in einer übersichtlichen Ordnerstruktur abzulegen. Dazu empfehle ich, pro Domain einen entsprechenden Unterordner unter /var/www/ anzulegen:

  • /var/www/domain1.de
  • /var/www/domain2.com

Für diese Ordner solltet ihr den Besitzer und die Gruppe anschließend noch auf www-data setzen. Die Erstellung des Ordners und die Anpassung des Benutzers / der Gruppe geht wie folgt:

Schritt 2 – Apache Virtual Host erstellen

Damit ein Aufruf von http://www.eure-domain.de die entsprechenden Dateien von /var/www/eure-domain.de anzeigt, muss eine neue Konfigurationsdatei erstellt werden.

Ich empfehle dazu die Datei /etc/apache2/sites-available/eure-domain.de.conf zu erstellen:

Diese benötigt den folgenden Inhalt:

Dabei haben die Einträge folgende Bedeutungen:

  • ServerAdmin: Bei einem Fehler mit dem Webserver wird diese E-Mail-Adresse des Administrators angezeigt. Besuchern können diese dann z.B. kontaktieren um den Fehler zu melden.
  • ServerName: Dies ist die Domain die ihr für Apache anlegt. Für Aufrufe von http://eure-domain.de werden dann die Dateien aus DocumentRoot verwendet.
  • ServerAlias: Hier kann man alternative Domainnamen angeben. Wir haben es so definiert, das beim Aufruf von http://www.eure-domain.de ebenfalls die Dateien aus dem selben DocumentRoot verwendet wird.
  • DocumentRoot:  Verzeichnis, dass für diese Domain genutzt werden soll.
  • ErrorLog & CustomLog: Fehler-Log-Datei und Aufruf-Log-Datei für diese Domain. Hier verwenden wir die Standard-Apache-Logdateien.

Schritt 3 – Config-Datei aktivieren

Nachdem wir die Datei /etc/apache2/sites-available/eure-domain.de.conf erstellt haben, muss diese noch aktiviert werden:

Anschließend veranlassen wir Apache noch, die Konfigurationsdatei neu zu laden:

Schritt 4 – Aufruf der Domain testen

Zum zu testen ob alles geklappt hat, erstellt eine Index-Datei: /var/www/eure-domain.de/index.html und befüllt diese mit einem beliebigen Text.

Sofern eure DNS-Einstellungen richtig konfiguriert sind und eure-domain.de auf die IP eures Servers verweist, sollte ihr die erstelle index.html sehen wenn ihr http://eure-domain.de aufruft.

Spezialfall – Nur eine Hauptdomain in Apache konfigurieren

Möchtet ihr mit eurem eigenem Webserver nur eine Domain betreiben, so ist die Erstellung eines neuen virtual Hosts nicht unbedingt erforderlich. Stattdessen kann man die existente Konfiguration anpassen:

In dieser Datei könnt ihr nun eine Domain wie folgt hinzufügen (Zeilen 9 und 10):

  • ServerName: Definiert die Domain. Wenn diese Domain aufgerufen wird, werden die Dateien aus DocumentRoot dem Besucher angezeigt
  • ServerAlias: Hier können wir alternative Domains spezifizieren. Hier geben wir www.eure-domain.de an, damit diese Domain ebenfalls funktioniert.

Anschließend muss die Konfiguration von Apache noch neu geladen werden:

Wenn ihr mehrere Domains oder Subdomains auf dem Webserver mit verschiedenen Inhalten betreiben möchtet, dann ist es erforderlich für jede Domain einen entsprechenden Virtual Host zu erstellen. Folgt dazu den Schritten 1) – 4).

Nächste Schritte – SSL-Schutz per Let’s Encrypt hinzufügen

Let’s Encrypt bietet einen kostenlosen SSL-Schutz für Domains an. Dieser Schutz funktioniert nur für Domains, nicht für IP-Adressen.

Wenn ihr den Virtual Host wie oben für eure Domain erstellt habt, könnt ihr als nächstes eure Seite per SSL schützen. Genaue Details sind im Artikel: Tutorial: Apache & Let’s Encrypt für SSL-Schutz beschrieben.