Apache2 – HowTo #2 – Die Konfiguration
Aloha,
und damit starten wir auch schon mit dem zweiten Teil der Konfiguration vom Apache2 Webserver. Heute schauen wir uns mal an, wie man es hin bekommt, mehrere Webseiten auf seinem Server zu “hosten”. Natürlich kann man auf diese Art und Weise auch nur eine Webseite hosten.
Voraussetzungen:
Ich setze an dieser Stelle voraus, dass eine 2 Subdomains oder 1 Wildcard Domain per DNS auf den Server zeigt. In meinem Fall werden die beiden Subdomains
vhost1.debiandev.de
vhost2.debiandev.de
heißen. Diese solltet ihr im Verlauf des HowTo’s auf eure Domains abändern.
Vorwort:
Zuerst einmal sein gesagt, dass folgendes HowTo Basics darstellt, die auf jeden Fall vorhanden sein müssen, bevor wir zur automatisierten Erstellung von sogenannten vHosts kommen.
vHosts:
vHosts sind virtuelle Hosts – damit lassen sich mehrere Seiten auf einem Webserver hosten. Dies spart Ressourcen und ist verwaltungstechnisch um ein vielfaches einfacher.
An dieser Stelle setze ich auch Grundkenntnisse im Bereich der Linux Verwaltung voraus (cp, ls, mkdir, mv, cp, vi ….).
Konfiguration
Zunächst schauen wir uns einmal die Ordnerstruktur vom Apache Konfigruationsordner an.
ls -la /etc/apache2
-rw-r–r– 1 root root 9642 Feb 24 12:19 apache2.conf
drwxr-xr-x 2 root root 4096 Feb 18 14:22 conf.d
-rw-r–r– 1 root root 1465 Jan 31 19:35 envvars
-rw-r–r– 1 root root 31063 Jul 20 2013 magic
drwxr-xr-x 2 root root 4096 Feb 18 14:41 mods-available
drwxr-xr-x 2 root root 4096 Feb 19 10:16 mods-enabled
-rw-r–r– 1 root root 779 Feb 24 12:26 ports.conf
drwxr-xr-x 2 root root 4096 Feb 24 15:05 sites-available
drwxr-xr-x 2 root root 4096 Feb 24 13:00 sites-enabled
So in etwa sollte das Ganze nun aussehen. Zur apache2.conf kommen wir später – diese ist existentiell wichtig und muss auch Thematisch behandelt werden. Wir lassen erstmal alles bis auf die Verzeichnisse “sites-enabled” und “sites-available” außen vor.
sites-available
In diesem Verzeichnis werden die vHost Konfigurationen gespeichert, die generell Verfügbar sind. Die Konfigurationen die in diesem Ordner liegen werden nicht vom Webserver bei einem Neustart berücksichtigt. Dieser Ordner ist dazu gedacht, allgemein Webseiten zu definieren, aber noch “deaktiviert” zu lassen.
sites-enabled
Um Webseiten nun zu aktivieren, müssen diese hier verlinkt werden. Wie genau man das macht, erkläre ich euch im späteren Verlauf des HowTo’s.
Neuen vHost anlegen:
Beim anlegen eines neuen vHosts sind ein paar kleine Regeln von Nöten. Zunächst legen wir erstmal nur eine neue Datei im Verzeichnis /etc/apache2/sites-available an. Dazu wechseln wir erstmal in das Verzeichnis
cd /etc/apache2/sites-available
Nun legen wir per “touch” eine neue Datei an.
Wichtig: Man muss sich hier unbedingt eine Struktur einfallen lassen. Ich zum Beispiel habe mir angewöhnt, die Datei nach folgendem Muster zu bennen:
subdomain.domain.tld.conf
Unbedingt solltet ihr euch direkt von Anfang an angewöhnen, bei vHost Dateien immer die Endung “.conf” zu wahren. Ab, ich glaube, Apache 2.4 werden alle Dateien, die nicht auf “.conf” Enden unbeachtet weggelassen. Daher bitte jetzt direkt angewöhnen, sodass bei einem “Upgrade” zu einem späteren Zeitpunkt keine Fehler auftreten.
touch vhost1.debiandev.de.conf
Nun haben wir die Datei einfach nur angelegt. Der Inhalt dieser Datei ist nun leer, sofern Sie zuvor nicht vorhanden war. Jetzt öffnen wir die Datei und fügen unsere erste vHost Konfiguration ein.
vi vhost1.debiandev.de.conf
Der Inhalt sieht wie folgt aus
<VirtualHost *:80>
ServerAdmin webmaster@vhost1.debiandev.de
ServerName vhost1.debiandev.deDocumentRoot /var/www/vhost1.debiandev.de/htdocs/
<Directory /var/www/vhost1.debiandev.de/htdocs/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warnCustomLog ${APACHE_LOG_DIR}/access.log combined
CustomLog /var/www/vhost1.debiandev.de/logs/access.log vhost_combined
</VirtualHost>
Konfigurationserklärung
<VirtualHost *:80>: Dieser virtuelle Host hört auf alle IPs / Domains (*) die auf auf Port 80 (:80) angefragt werden
ServerAdmin: Diese Variable legt die E-Mailadresse fest, die angezeigt wird, wenn Fehler auftauchen (z. B. Interner Serverfehler 500)
ServerName: Diese Variable legt fest, auf welche “Domain” diese vHost Konfiguration “hören” soll.
DocumentRoot: Legt das Verzeichnis fest, in dem die Webseite später liegen wird.
<Directory …>…..</Directory>: Legt die Optionen fest, die für den Ordner “…” festgelegt werden sollen.
ErrorLog: Verzeichnis für die Logs fest
LogLevel: Legt fest, wie akribisch die Logs angelegt werden sollen
CustomLog: Legt das Verzeichnis fest, das die Logfiles für diesen explizite vHost enthält
jetzt speichern wir die Datei ab und verlassen den Editor (:wq).
Jetzt ist es so, dass die Datei, wie oben erklärt, bei einem Apache2 neustart einfach ignoriert werden würde (sites-available). Damit diese letztendlich vom Apache Webserver “angenommen” werden, müssen wir die Datei in den Ordner “sites-enabled” verlinken. Man kann dies mit dem “ln -s” Befehl machen, oder man nutzt einfach das Kommando, das bei der Installation von Apache2 mit installiert wurde. Dies nennt sich “a2ensite” (Apache2 enable site).
a2ensite vhost1.debiandev.de.conf
Nun schlägt der Server selber schon einen reload vor, damit die Einstellungen übernommen werden.
Enabling site vhost1.debiandev.de.
To activate the new configuration, you need to run:
service apache2 reload
Bevor wir das jedoch tun, müssen wir noch die Ordner anlegen, die wir oben in der Konfiguration festgelegt haben. Dies machen wir ganz schnell mittels folgender Befehle:
mkdir -p /var/www/vhost1.debiandev.de/htdocs/
mkdir -p /var/www/vhost1.debiandev.de/logs/
Das wars auch schon. Jetzt können wir den Server neu laden
service apache2 reload
Bis hier hin sollte alles ohne Probleme funktioniert haben. Man kann diesen beschriebenen Vorgang nun endlos lange, auch für vhost2.debandev.de, wiederholen um mehrere Webseiten auf dem Server anzulegen.
Rufen wir an dieser Stelle nun die URL auf, sollte eine “404 – Not Found” Seite oder eine Seite erscheinen, die den theoretischen Inhalt anzeigt.
http://vhost1.debiandev.de/
Sollten bei euch Probleme auftauchen ist es wichtig, dass ihr diese jetzt als Kommentar verfasst. Dieses HowTo ist eine GRUNDLAGE – die nächsten werden nicht mehr so ausführlich sein – daher bitte jetzt schreiben.
Liebe Grüße – Nico