Mehrere Webseiten auf einem Server

Auf Debian 9 mit einem Apache Webserver können -mit den so genannten Virtual Hosts- die Einstellungen vorgenommen werden, mehrere Webseite mit einem Server zu betreiben. Der Webserver reagiert dann auf den entsprechenden Namen, oder IP Adresse, und zeigt dazu die in der Konfiguration eingestellt Webseiten des eingerichteten root-Verzeichnisses an.

Demo Voraussetzung schaffen

Um die Virtual Host einzurichten, verbinden wir uns mit root zu dem Webserver und bauen erstmal ein root-Verzeichnis auf, wo die Inhalte der Webseite gespeichert werden.

mkdir /var/www/html/domain1.de

Dies erstellt das root-Verzeichnis für die erste Domain.

mkdir /var/www/html/domain2.de

Damit wird das root-Verzeichnis für die zweite Domain erstellt.
Um die Verbindungen testen zu können legen wir in den Verzeichnissen noch eine kleine Webseite an.

nano /var/www/domain1.de/index.html

Jetzt fügen wir diese HTML Zeilen ein:

<html>
<body>
<center>Dies ist die Domain<b>1</b></center>
</body>
</html>

Als sichtbare Ausgabe erwarten wir beim Aufruf von domain1.de jetzt den Text „Dies ist die Domain1„.

Genauso verfahren wir jetzt mit domain2.de.

nano /var/www/domain2.de/index.html

Jetzt fügen wir auch hier diese HTML Zeilen ein:

<html>
<body>
<center>Dies ist die Domain<b>2</b></center>
</body>
</html>

Als sichtbare Ausgabe erwarten wir beim Aufruf von domain2.de jetzt den Text „Dies ist die Domain2„.
Nun geben wir den Dateien noch die richtigen Rechte indem wir…

chown -R www-data: /var/www/html

… eingeben.

Erstellen von Virtual Host Dateien

Alle auf den Server verfügbaren Virtual Host Dateien haben die Datei-Endung .conf und liegen im Verzeichnis /etc/apache2/sites-available/.
Alle aktiven Virtual Host liegen im Verzeichnis /etc/apache2/sites-enabled/.
Wir erstellen jetzt eine Virtual Host Datei für unsere Domain1.de Webseite.
Dazu erstellen wir mit Eingabe von…

nano /etc/apache2/sites-available/domain1.de.conf

… die Virtual Host Datei domain1.de.conf.
Nun geben wir die Konfigurationsparameter ein. Ein Erklärung folgt etwas weiter unten im Text.

<VirtualHost *:80>

ServerAdmin admin@domain1.de
ServerName domain1.de
ServerAlias www.domain1.de

DocumentRoot /var/www/html/domain1.de

ErrorLog ${APACHE_LOG_DIR}/domain1.de_error.log
CustomLog ${APACHE_LOG_DIR}/domain1.de_access.log combined

</VirtualHost>

Wir speichern die Eingabe ab und beenden nano.

Jetzt machen wir passend zum domain2.de das gleiche.

nano /etc/apache2/sites-available/domain2.de.conf

Jetzt die Parameter für Domain2.de eintragen, speichern und nano verlassen.

<VirtualHost *:80> 

ServerAdmin admin@domain2.de 
ServerName domain2.de 
ServerAlias www.domain2.de 

DocumentRoot /var/www/html/domain2.de 

ErrorLog ${APACHE_LOG_DIR}/domain2.de_error.log 
CustomLog ${APACHE_LOG_DIR}/domain2.de_access.log combined 

</VirtualHost>

Jetzt haben wir zwei verfügbare Virtual Hosts. Funktionieren wird es noch nicht, da wir die Konfigurationen aktivieren müssen.

Erklärung der Parameter

Üblicherweise werden unverschlüsselte Webseiten über Port 80 am Server abgefragt. Mit …

<VirtualHost *:80>

… sagen wir dem Server auf welchem Port er hören soll.

Um unter Umständen den Server-Admin kontaktieren zu können tragen wir bei…

ServerAdmin admin@domain1.de

… die EMail-Adresse des Administrators ein. Man kann diese Zeile aber auch weglassen.
Der Parameter ServerName ist fast selbsterklärend. So heißt die Webseite.

ServerName domain1.de

Hier wäre der Server mit domain1.de ansprechbar.

Das ServerAlias ergänzt weitere Namen zu diesem Server unter der die Webseite erreicht werden soll.

ServerAlias www.domain1.de

Man würde den Server auch mit www.domain1.de erreichen.
Unter DocumentRoot wird der Ablagepfad für die Webinhalte eingetragen. Wir haben weiter vorne für jede Domain ein Verzeichnis angelegt und eine index.html erstellt.

DocumentRoot /var/www/html/domain1.de

Die Dateien dieses Virtual Host liegen unter /var/www/html/domain1.de.
In den letzten Zeilen wird noch der Speicherort für die Log-Dateien eingetragen.

ErrorLog ${APACHE_LOG_DIR}/domain1.de_error.log
CustomLog ${APACHE_LOG_DIR}/domain1.de_access.log combined

Mit …

</VirtualHost>

… werden die Parameter der Conf-Datei beendet.

Aktivieren der Virtual Hosts

Es gibt hier zwei Wege die Conf-Dateien zu aktivieren.
Beim ersten Weg geben wir im Terminal …

a2ensite domain1.de.conf
a2ensite domain2.de.conf

… ein, um unsere Demo-Konfiguration zu aktivieren.
Ein anderer Weg ginge über das so genannte „Erstellen von Simulierten-Links“ mit dem Befehl ln. Hierzu erstellen wir eine Verlinkung der conf-Dateien von /etc/apache/sites-available/ nach /etc/apache2/sites-enabled/, wir können aber auch einfach die conf-Dateien dort hin kopieren.

ln -s /etc/apache2/sites-available/domain1.de.conf /etc/apache2/sites-enabled/
ln -s /etc/apache2/sites-available/domain2.de.conf /etc/apache2/sites-enabled/

… oder …

cp /etc/apache2/sites-available/domain1.de.conf /etc/apache2/sites-enabled/domain1.de.conf
cp /etc/apache2/sites-available/domain2.de.conf /etc/apache2/sites-enabled/domain2.de.conf

Zuletzt muss der Apache2 Dienst neu gestartet werden, um die Änderungen umsetzen zu können.

systemctl restart apache2

Taucht jetzt keine Fehlermeldung auf kann man in einem Webbrowser die Webseiten abrufen.

http://domain1.de oder http://www.domain1.de in der Adressleiste des Webbrowser eingeben. Wird hier die passende, erstellte Webseite angezeigt funktioniert die Konfiguration.

Jetzt geben wir noch http://domain2.de oder http://www.domain2.de in der Adressleiste ein. Wird hier die passende, erstellte Webseite angezeigt, funktioniert auch diese Konfiguration und die Einrichtung ist abgeschlossen.