Wenn Sie auf einem Server mehr als eine Webseite betreiben möchten, bietet die virtuelle Hostkonfiguration zwei Möglichkeiten an. Virtuelle Hosts können IP-based
sein, was bedeutet, dass jedes Webangebot eine andere IP besitzt, oder Name-based
, was bedeutet, dass unter einer IP-Adresse mehrere Webseiten gehostet werden. Dieses Tutorial beschränkt sich auf die Verwendung von Name-based
VirtualHosts.
Apache Installation (Debian)
Folgendes Kommando installiert den Apache Webserver auf einem Debian (11) System in der Basis-Minimal-Installation:
# apt install apache2 -y
Damit läuft bereits eine Apache-Instanz auf dem Server:
# systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-08-09 12:30:59 CEST; 1min 12s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 1922 (apache2)
Tasks: 55 (limit: 4679)
Memory: 12.9M
CPU: 54ms
CGroup: /system.slice/apache2.service
├─1922 /usr/sbin/apache2 -k start
├─1924 /usr/sbin/apache2 -k start
└─1925 /usr/sbin/apache2 -k start
Aug 09 12:30:59 kb01 systemd[1]: Starting The Apache HTTP Server...
Aug 09 12:30:59 kb01 systemd[1]: Started The Apache HTTP Server.
Document-Root erstellen und Berechtigungen anpassen
# mkdir /var/www/docu1.prontosystems.de /var/www/docu2.prontosystems.de
# chown -R www-data:www-data /var/www/docu1.prontosystems.de/ /var/www/docu2.prontosystems.de/
# chmod -R 755 /var/www/docu1.prontosystems.de/ /var/www/docu2.prontosystems.de/
Document-Root Content erstellen
Hier wird die eigentliche Webseite installiert. Im Falle eines Contentmanagement Systems wie zB WordPress würden hier die Dateien der WordPress Installation abgelegt werden. Zu Demonstrationszwecken wird hier an dieser Stelle nur eine index.html
plaziert, die als Inhalt den jewiligen FQDN des virtuellen Hosts anzeigt:
# touch /var/www/docu1.prontosystems.de/index.html
# touch /var/www/docu2.prontosystems.de/index.html
<html> <head> <title>Welcome to the page docu1.prontosystems.de!</title> </head> <body> <h1>Congratulations! Your docu1.prontosystems.de server succeeded!</h1> </body> </html>
<html> <head> <title>Welcome to the page docu2.prontosystems.de!</title> </head> <body> <h1>Congratulations! Your docu2.prontosystems.de server succeeded!</h1> </body> </html>
Virtual-Host Konfigurationsdateien
Damit der Apache Webserver die verschiedenen Webseiten unterscheiden kann, wertet er den FQDN
im HTTP-Request des HTTP-Headers aus und durchsucht seine Konfiguration nach einen passenden virtuellen Host, wertet das Document-Root Verzeichnis aus und zeigt den Inhalt an.
Erstellen Sie dazu in /etc/apache2/sites-available
für jeden virtuellen Host eine Konfigurationsdatei mit entsprechend angepassten Inhalt:
/etc/apache2/sites-available# touch docu1.prontosystems.de.conf
/etc/apache2/sites-available# touch docu2.prontosystems.de.conf
Der Inhalt der Konfigurationsdatei entspricht dem folgendem Muster:
<VirtualHost *:80> ServerAdmin webmaster@prontosystems.de ServerName docu1.prontosystems.de DocumentRoot /var/www/docu1.prontosystems.de ErrorLog ${APACHE_LOG_DIR}/docu1.prontosystems.de_error.log CustomLog ${APACHE_LOG_DIR}/docu1.prontosystems.de_access.log combined </VirtualHost>
Analog dazu das gleiche für den zweiten virtuellen Host entsprechend angepasst noch einmal:
<VirtualHost *:80> ServerAdmin webmaster@prontosystems.de ServerName docu2.prontosystems.de DocumentRoot /var/www/docu2.prontosystems.de ErrorLog ${APACHE_LOG_DIR}/docu2.prontosystems.de_error.log CustomLog ${APACHE_LOG_DIR}/docu2.prontosystems.de_access.log combined </VirtualHost>
VirtualHost aktivieren
Abschließend werden die beiden neuen virtuellen Hosts aktiviert, die Default Seite deaktiviert und die Konfiguration gecheckt. Sie können die von Apache standardmäßige Default Webseite auch aktiviert lassen oder hier eine andere Seite pflegen. Apache zeigt bei einem fehlerhaftem HTTP-Request standardmäßig die erste Webseite der Konfiguration an:
# a2ensite docu1.prontosystems.de.conf
Enabling site docu1.prontosystems.de.
To activate the new configuration, you need to run:
systemctl reload apache2
# a2ensite docu2.prontosystems.de.conf
Enabling site docu2.prontosystems.de.
To activate the new configuration, you need to run:
systemctl reload apache2
# a2dissite 000-default.conf
Site 000-default disabled.
To activate the new configuration, you need to run:
systemctl reload apache2
# apachectl configtest
Syntax OK
# systemctl reload apache2
Vorausgesetzt Ihre DNS-Konfiguration ist korrekt, sollte Ihr Webserver jetzt die zwei unterschiedliche Webseiten ausliefern können: