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.
Inhaltsverzeichnis
- 1 Express-Setup – Alle Befehle im Überblick
- 2 Schritt 1 – Ordnerstruktur
- 3 Schritt 2 – Apache Virtual Host erstellen
- 4 Schritt 3 – Config-Datei aktivieren
- 5 Schritt 4 – Aufruf der Domain testen
- 6 Spezialfall – Nur eine Hauptdomain in Apache konfigurieren
- 7 Nächste Schritte – SSL-Schutz per Let’s Encrypt hinzufügen
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# VirtualHost für Domain erstellen (falls noch nicht passiert) # Ersetzt eure-url.de durch die genutzte URL. # Per export DOMAIN setzen wir eine Umgebungsvariable, die wir später per $DOMAIN nutzen können export DOMAIN=eure-url.de # Schritt 1 - Verzeichnis erstellen und Rechte anpassen sudo mkdir /var/www/$DOMAIN sudo chown -R www-data:www-data /var/www/$DOMAIN # Schritt 2 - Apache Config-Datei für domain.de erstellen printf " <VirtualHost *:80> ServerAdmin admin@$DOMAIN ServerName $DOMAIN ServerAlias www.$DOMAIN DocumentRoot /var/www/$DOMAIN ErrorLog \${APACHE_LOG_DIR}/error.log CustomLog \${APACHE_LOG_DIR}/access.log combined </VirtualHost> <Directory /var/www/$DOMAIN/> AllowOverride All </Directory>" | sudo tee /etc/apache2/sites-available/$DOMAIN.conf # Schritt 3 - VirtualHost Konfiguration für Domain aktivieren sudo a2ensite $DOMAIN.conf sudo systemctl reload apache2 |
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:
1 2 |
sudo mkdir /var/www/eure-domain.de sudo chown -R www-data:www-data /var/www/eure-domain.de |
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:
1 |
sudo nano /etc/apache2/sites-available/eure-domain.de.conf |
Diese benötigt den folgenden Inhalt:
1 2 3 4 5 6 7 8 9 10 11 12 |
<VirtualHost *:80> ServerAdmin admin@eure-domain.de ServerName eure-domain.de ServerAlias www.eure-domain.de DocumentRoot /var/www/eure-domain.de ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> <Directory /var/www/eure-domain.de/> AllowOverride All </Directory> |
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.
Per AllowOverride All erlauben wir die Nutzung von .htaccess-Dateien im Verzeichnis /var/www/eure-domain.de . Ohne diesen Eintrag wäre es beispielsweise nicht möglich WordPress zu verwenden.
Schritt 3 – Config-Datei aktivieren
Nachdem wir die Datei /etc/apache2/sites-available/eure-domain.de.conf erstellt haben, muss diese noch aktiviert werden:
1 |
sudo a2ensite eure-domain.de.conf |
Anschließend veranlassen wir Apache noch, die Konfigurationsdatei neu zu laden:
1 |
sudo systemctl reload apache2 |
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:
1 |
sudo nano /etc/apache2/sites-available/000-default.conf |
In dieser Datei könnt ihr nun eine Domain wie folgt hinzufügen (Zeilen 9 und 10):
9 10 |
ServerName eure-url.de ServerAlias www.eure-url.de |
- 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:
1 |
sudo systemctl reload apache2 |
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.