Virtuelle Hosts mit Apache

Der Webserver Apache bietet die Möglichkeit, mehrere Seiten, die unter verschiedenen Hosts laufen, gleichzeitig zu betreiben. Die Seiten www.MeineSeite.de und www.Beispiel.de können also auf dem selben Server und Apache laufen. Vorraussetzung dafür ist, dass jeder Host mit einem virtuellen Host in Apache verbunden wird.
Virtuelle Hosts werden unter Linux (Debian/Ubuntu) in dem Verzeichnis /etc/apache2/sites-available/ definiert. Dort ist standardmäßig schon eine Datei mit dem Namen default für einen virtuellen Host angelegt, die in etwa so aussieht:

<VirtualHost *:80>
	ServerAdmin webmaster@localhost

	DocumentRoot /var/www/htdocs
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/htdocs>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined
</VirtualHost>

Diese sorgt dafür, dass erstmal alles, was auf dem Apache auf Port 80 ankommt, auf die Inhalte in dem Verzeichnis /var/www/htdocs geleitet wird.

Soll jetzt also zusätzlich noch die Seite www.Beispiel.de betrieben werden, die zwar auf dem selben Apache auch auf Port 80 ankommt, allerdings einen völlig anderen Inhalt hat, muss man Apache mitteilen, dass die Inhalte der Seite www.Beispiel.de in einem anderen Verzeichnis liegen. Man muss der Seite also eine andere „DocumentRoot“ zuordnen.

Man legt also für die neue Seite ein weiteres Verzeichnis an – in diesem Fall zum Beispiel

mkdir /var/www/beispiel

und kopiert die Inhalte der neuen Seite in das Verzeichnis.
Anschließend noch mit den Befehl

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

die richtigen Rechte für den Apache auf das Verzeichnis und dessen Inhalte legen.

Jetzt wird der virtuelle Host angelegt.
Dafür muss in dem Verzeichnis /etc/apache2/sites-available/ für den neuen virtuellen Host eine weitere Datei angelegt werden. Dafür wird einfach die Datei „default“ kopiert und der neuen Datei gibt man der Übersichtlichkeit halber einfach den Namen der neuen Seite. In diesem Fall also

root@arm:~# cd /etc/apache2/sites-available/
root@arm:/etc/apache2/sites-available# cp default Beispiel.de

Jetzt muss die neue Datei noch bearbeitet werden, so das der entsprechende Host auch zur der richtigen „DocumentRoot“ geleitet wird.
Dazu mit einem Editor die Datei öffnen, die Zeile mit dem ServerName einfügen, die „DocumentRoot“ und die Einstellungen für das Directory anpassen.

Also für Die Seite www.Beispiel.de:

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
        ServerName Beispiel.de

	DocumentRoot /var/www/beispiel
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/beispiel>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
   .
   .
   .
</VirtualHost *:80>

Diese Einträge sorgen jetzt dafür, dass alle Anfragen an den Apache, die an die Seite unter dem Host www.Beispiel.de gerichtet sind, an die Inhalte in dem Verzeichnis /var/www/beispiel weitergeleitet werden.
Alle Anderen Request gehen weiterhin über die Einstellung in default an das Verzeichnis /var/www/htdocs.

Anschließend muss die neue Seite nur noch aktiviert werden.
Das geht mit:

a2ensite Beispiel.de

Fertig!

Schreibe einen Kommentar