Anzeige
Tutorialbeschreibung

Die Server-Seite: Hosting und Webserver - Der Webserver Apache

Die Server-Seite: Hosting und Webserver - Der Webserver Apache

HTML, CSS und JavaScript/DOM sind Basistechnologien zum Erstellen von Webseiten. Doch zum Profiwissen gehört auch, zu wissen, wie eigentlich Webseiten vom Server zum Browser gelangen, was dabei genau geschieht und welche Möglichkeiten es gibt, Vorgänge zu optimieren oder auftretende Probleme zu beseitigen. Dieser Workshop beschreibt also den Schritt vom Webdesigner zum Webmaster.


Das nun folgende Tutorial ist ein Auszug aus dem Buch: Professionelle Websites von Stefan Münz.
Die Veröffentlichung des Kapitels erfolgt mit freundlicher Genehmigung von Pearson Education.


Der Webserver Apache


Webserver sind wie alle Server Softwareprodukte – auch wenn sie meistens keine eigene Anwendungsoberfläche besitzen. Während manche Server jedoch vergleichsweise schlicht sind, ist ein Webserver ein recht komplexes Produkt, das etliche Aufgaben zu erfüllen hat und an das extrem hohe Anforderungen gestellt werden, was die Laufstabilität betrifft. Die reine HTTP- Kommunikation ist längst nicht das einzige, was ein moderner Webserver zu beachten hat. Er muss auch serverseitige Scripts ausführen können, er muss Softwaremodule von Drittanbietern einbinden können und er muss dem Websiteanbieter zahlreiche und verzweigte Konfigurationsmöglichkeiten anbieten, die helfen, das Webangebot zu sichern und zu optimieren. Der Softwareentwicklungsaufwand für ein führendes Webserver- Produkt ist daher mindestens so hoch wie der für ein Office-Paket oder eine anspruchsvolle Grafik-Software.

Gemeinsam mit dem Boom, der durch die ersten Versionen des Netscape-Browsers Mitte der 90er Jahre ausgelöst wurde, begannen auch die Webserver von Netscape zu dominieren. Die Lizenzpolitik von Netscape sowie technische Eigenmächtigkeiten sorgten jedoch dafür, dass die Server der so genannten Enterprise-Serie bald wieder an Bedeutung verloren. Wie auch auf dem Browser-Markt, schien damit die Stunde für Microsoft geschlagen zu haben. Doch während am Browser-Markt der Internet Explorer alsbald zum meist verwendeten Produkt wurde, entwickelte sich der Server-Markt in eine andere Richtung.

Ein Grund dafür ist, dass Microsoft-Betriebssysteme, so beliebt sie für Desktop-PCs sind, unter Experten, die im Server-Bereich tätig sind, weniger Achtung genießen. Ein Server- Rechner sollte so weit wie möglich aus »transparenter« Software bestehen. Und genau das verhinderte und verhindert Microsofts Lizenzpolitik bis heute. Ganz anders dagegen das Linux-Projekt. Vom Betriebssystemkern über die zahlreichen Dienstprogramme bis hin zu wichtigen Anwendungen basiert in der Linux-Welt die Mehrzahl der Software auf dem Open-Source-Prinzip und jeder Funktionsaufruf ist offen dokumentiert. Außerdem steht Linux in der Tradition der Unix- hilosophie, deren typische und zuverlässig funktionierende Basis-Features wie Ein-/Ausgabekanäle, Prozess-Forking, Signalisierung, Piping usw. gerade im Server-Betrieb sehr gefragt sind.

So konnte sich im Laufe der Jahre ein betriebssystemübergreifendes, ambitioniertes Webserver- Projekt immer stärker etablieren: das Apache-Projekt. Auch der Apache ist ein Open-Source- Produkt. Mit zwei Dritteln Marktanteilen unter allen im heutigen Web ansprechbaren Webservern (Tendenz steigend) dominiert er klar und setzt die Standards.

Der Erfolg des Apache Webservers hängt allerdings auch mit dem Elan seiner Entwicklergemeinde zusammen. Nur wenige Open-Source-Projekte werden so fieberhaft und gewissenhaft weiterentwickelt und ständig optimiert wie der Apache Webserver. Seinen zahlreichen Zwischenversionen (patches genannt) soll er inoffiziellen Quellen zufolge sogar seinen Namen verdanken (a patchy server ...).

Links zum Apache Webserver:
Apache Software Foundation:
http://www.apache.org/
Dokumentation Apache 1.3 (en):
http://httpd.apache.org/docs/
Dokumentation Apache 2.0 (de):
http://httpd.apache.org/docs-2.0/de/
Dokumentation Apache 2.1 (de):
http://httpd.apache.org/docs-2.1/de/



1 Versionen, Bezug und Installation von Apache

Wenn Sie ein typisches Web-Hosting-Angebot unterschreiben, brauchen Sie sich um die Installation eines Webservers normalerweise keine Gedanken mehr zu machen. Im Fall von Virtual-Hosting- Angeboten haben Sie ohnehin wenn überhaupt nur Einfluss auf dezentrale Konfigurationsmöglichkeiten des Webservers, bei Root-Servern finden Sie auf jeden Fall eine Standardinstallation vor, die in der Regel auch schon so konfiguriert ist, dass sie mit anderen installierten Produkten wie PHP zusammenarbeitet.

Gerade wegen der intensiven Weiterentwicklung des Apache kann es jedoch für Mieter eines Root- Servers sinnvoll sein, hin und wieder ein Upgrade auf eine aktuellere Version aufzuspielen. Außerdem empfiehlt es sich bei der Entwicklung professioneller Sites dringend, lokal oder auf einem Testserver im Web das gesamte Webprojekt unter Server-Bedingungen lauffähig zu bekommen. Selbst wenn Produktiv- und Entwicklungsumgebung nicht hundertprozentig gleich sind, so hilft es auf jeden Fall, in der Entwicklungsumgebung einen Apache Webserver zu installieren, sofern in der Produktivumgebung ebenfalls ein solcher Server am Werk ist.

Download und Versionen

Die Download-Adresse für den Apache lautet http://httpd.apache.org/download.cgi. Darüber hinaus bieten fast alle Linux- Distributionen und andere Anbieter von Unix-Derivaten eigene Download- Möglichkeiten an. Auch Anbieter von Paketen wie LAMP (Apache- MySQL-PHP für Linux) oder WAMP (Apache-MySQL-PHP für Windows) bieten eigene Downloads an.

Vom Apache Webserver existieren derzeit zwei Versionenzweige: eine 1.3-Serie und eine 2.0-Serie. Beide werden noch aktiv im Web verwendet. Einige Server-Betreiber haben auch gute Gründe, nicht auf die neuere Versionslinie 2.0 umzusteigen. Gründe sind beispielsweise installierte Module, die es für die Version 2.0 noch nicht gibt. Da aber das Modul- Handling in Version 2.0 anders ist als in Version 1.3, würden die bisherigen Module unter der neueren Apache-Version nicht mehr laufen.

Beachten Sie auch, wenn Sie außerdem noch PHP als Scriptsprache in Verbindung mit Apache einsetzen wollen, einen Warnhinweis der PHP-Entwickler: Dort wird dringend davon abgeraten, PHP in Verbindung mit Apache 2.0 zu verwenden. Der Grund ist, dass Apache 2 so genannte Threads benutzt, um seine Arbeit effizienter zu verrichten. Wenn PHP als Apache-Modul installiert wird und damit Speicherbereiche des Apache nutzt, kann es zu Speicherkonflikten kommen, da viele PHP-Funktionen nicht »thread-save« sind. In der Praxis berichten jedoch viele Anwender, dass das Zusammenspiel zwischen Apache 2 und PHP problemlos funktioniert. Auf vielen öffentlichen Webservern mit PHP läuft jedoch wegen dieser Warnung meist noch eine Apache-1.3- Version.

Download und Installation unter Unix/Linux
Vom Apache-Server gibt es für Unix-/Linux-Derivate eine unkompilierte Version (auf der Download-Seite im Archiv-und-gZip-Format tar.gz angeboten). Daher muss der Server auf solchen Plattformen nach dem Download nicht nur installiert, sondern auch für die Betriebssystemumgebung kompiliert werden. Das standardisierte Verfahren der Makefiles macht es jedoch einfach, die Installation mit den eingestellten Defaults durchzuführen.

Die nachfolgende Beschreibung setzt voraus, dass Sie sich auf dem Rechner, auf dem der Apache installiert werden soll, eingeloggt haben auf Shell-Ebene arbeiten können und hinreichend Rechte besitzen, um neue Software zu installieren. Auf einem entfernten Server- Rechner genügt es, sich mit einem SSH-Client wie PuTTY eingeloggt zu haben.

Um den Download direkt von der Shell-Ebene zu starten, wechseln Sie z.B. in Ihr Home- Verzeichnis. Dann können Sie das wget-Kommando benutzen.

Beispiel:

wget http://apache.engram.de/apache.org/httpd/httpd-2.0.NN.tar.gz

Das NN steht hierbei für eine Zwischenversion des Apache. Den genauen Download-URI der tar.gz-Datei sollten Sie vorher im Browser ermitteln.

Beachten Sie, dass der Apache 2.0 während der Installation wenigstens 50 Mbyte freien Festplattenspeicher benötigt. Überprüfen können Sie den belegten und verfügbaren Speicherplatz durch Eingabe des folgenden Kommandos:

df -h

Stellen Sie vor der Installation sicher, dass ein Ansi-C-Compiler auf dem System installiert ist. Das Standardprodukt auf Linux-Distributionen ist der GNU C-Compiler GCC. Über die Shell können Sie beispielsweise eingeben:

gcc --help

Wenn dann Versionsinformationen und Aufrufmöglichkeiten zu GCC erscheinen, ist alles in Ordnung.
Nach dem Download kann die tar.gz-Datei durch folgendes Kommando dekomprimiert werden (NN steht für eine Zwischenversionsnummer des Apache):

gzip -d httpd-2_0_NN.tar.gz

Anschließend kann die so entpackte Archivdatei httpd-2_0_NN.tar entpackt werden:

tar xvf httpd-2_0_NN.tar

Als Nächstes sind grundsätzliche Konfigurationen für die Installation nötig. Die meisten Einstellungen können jedoch ebenso gut auch später vorgenommen werden. Entschieden werden sollte vor der Installation jedoch der Ablageort. Per Default wird Apache 2.0.x in das Verzeichnis /usr/local/apache2 installiert. Wenn Sie dies ändern möchten, können Sie beispielsweise Folgendes eingeben:

./configure --prefix=/usr/local/bin/apache

In diesem Beispiel wird der Apache im Verzeichnis /usr/local/bin/apache installiert. Wenn Sie gar keine Optionen konfigurieren möchten, starten Sie einfach nur ./configure ohne Parameter. Das Konfigurationsscript benötigt eine Weile für seine Arbeit. Anschließend kann der Kompilierungsvorgang gestartet werden:

make

Nachdem dieser Vorgang abgeschlossen ist, kann die Installation gestartet werden:

make install

Neben dieser unkompilierten Standarddistribution gibt es zahlreiche vorkompilierte oder in umgebungsspezifischen Paketformaten gespeicherte Distributionen für bestimmte Linux-Varianten, FreeBSD usw. Informationen und Downloads sind meist über die Webseiten zur Distribution erreichbar.

Download und Installation unter MS Windows
Es kommt in der Praxis nur selten vor, dass ein Apache-Webserver auf einem Windows- Betriebssystem für einen öffentlichen Webserver installiert wird. Es wird auch ausdrücklich davor gewarnt, dies mit älteren Windows-Versionen zu tun, die nicht auf NT-Technologie basieren, da die Sicherheitslücken dort einfach zu gravierend sind.
Wenn Sie Ihre Webseiten unter MS Windows entwickeln, ist es jedoch ratsam, sich Apache auch lokal zu installieren. Das hat verschiedene Vorteile:

- Sie können alle Seiten unter HTTP-Bedingungen testen.
- Sie können in HTML die absolute lokale Referenzierung nutzen (wie z.B. src="/pics/ fotos/bild1.png") und sich dabei wie in der Produktivumgebung auf das Web-Wurzelverzeichnis beziehen statt auf das Wurzelverzeichnis des aktuellen Laufwerks.
- Sie schaffen damit die Umgebungsbasis, die Sie für Webseiten mit PHP und MySQL ohnehin benötigen werden.

Über die Download-Seite von Apache können Sie »Binaries«, also vorkompilierte Versionen für MS Windows, herunterladen. Sollte dort beispielsweise keine aktuelle Version für Apache 2.0 verfügbar sein, finden Sie aktuelle Versionen auch über Download-Sites wie die von ZDNet (http://www.zdnet.de/downloads/).

Das Installationsprogramm (.exe oder .msi) kann ausgeführt werden. Zur Installation genügt es, der dialogorientierten Benutzerführung zu folgen. Wenn keine besonderen Gründe dagegen sprechen, ist es zweckmäßig, alle im Dialogverlauf angebotenen Defaults zu akzeptieren.

2 Start, Stopp und Neustart von Apache


Unter Unix-/Linux-Systemen ist im Normalfall root-Berechtigung erforderlich, um den Webserver zu starten. Der Grund ist, dass Apache den als wichtig erachteten Port 80 belegt. Die ausführbare Programmdatei heißt auf Unix-/Linux-Systemen httpd und unter Windows Apache.exe.

Unter Unix/Linux wird jedoch empfohlen, zum Starten, Stoppen und Neustarten des Servers nicht direkt die ausführbare Serverdatei zu verwenden, sondern das mit installierte Shellscript apachectl. Es befindet sich im gleichen Verzeichnis wie die ausführbare httpd- Datei, auffindbar über folgendes Shell-Kommando:

find / -name apachectl

Wechseln Sie in das entsprechende Verzeichnis oder starten Sie das Script mit vollem Pfadnamen. Die Kommandos zum Starten, Stoppen und Neustarten lauten:

[Pfad/]apachectl start
[Pfad/]apachectl stop
[Pfad/]apachectl restart

Wenn nach Eingabe des Kommandos nach kurzer Zeit wieder der Shell-Eingabeprompt erscheint, war die Aktion erfolgreich.

Unter MS Windows wird Apache seit Version 2.0 in aller Regel gleich bei der Installation als Service (Dienst) eingerichtet. Ein kleines Monitor-Tool wird dabei installiert, das als Icon im System Tray (kleine Symbole in der Taskleiste neben der Uhrzeitanzeige) erscheint:

Bilder

Abbildung 9.11: Icon des Apache 2.0 Monitor Tools unter MS Windows

Ein Doppelklick auf das Icon öffnet den Monitor. Die Schaltflächen Start, Stop und Restart lösen die drei entsprechenden Operationen aus.

3 Test von Webseiten unter Apache

Auf typischen Server-Rechnern im Internet, zu dem Sie über ein Web-Hosting-Vertrag Zugang haben, werden Sie bereits alles fertig eingerichtet vorfinden. Der Provider sollte Ihnen im Vertrag auch mitteilen, wo im Verzeichnisbaum sich die so genannte Document Root befindet, also das Startverzeichnis für eigene Webseiten.

Wir nehmen hier deshalb an, Sie haben einen Apache lokal auf Ihrem Windows-PC installiert und möchten nun testen, ob alles funktioniert. Gehen Sie dazu wie folgt vor:

1. Legen Sie ein gewünschtes Verzeichnis an, unterhalb dessen Sie HTML-Dateien und andere Dateien Ihres lokalen Webs ablegen wollen. Es ist egal, wo sich dieses Verzeichnis befindet. Es kann sich auch im LAN auf einem über Laufwerksbuchstaben ansprechbaren Verzeichnis befinden.
2. Suchen Sie im Programmverzeichnis von Apache (z.B. C:ProgrammeApacheApache 2) im Unterverzeichnis conf nach der Datei httpd.conf.
3. Öffnen Sie die httpd.conf mit einem Texteditor (z.B. mit dem Windows Notepad-Editor).
4. Suchen Sie nach einer Zeile, die mit DocumentRoot beginnt. Notieren Sie dahinter durch Leerzeichen getrennt den vollständigen Pfad zu dem Verzeichnis, in dem die Startseite Ihres lokalen Webs liegen soll. Trennen Sie dabei Verzeichnisangaben durch einfachen Schrägstrich. Erlaubt sind Angaben wie /Web oder f:/daten/hannes/http.
5. Speichern Sie die Änderungen in httpd.conf.
6. Starten Sie den Apache Webserver wie im vorherigen Abschnitt beschrieben neu.
7. Erzeugen Sie nun im angegebenen Web-Startverzeichnis eine HTML-Datei oder kopieren Sie eine vorhandene HTML-Datei in das Verzeichnis und nennen Sie sie test.htm.
8. Starten Sie einen Webbrowser und geben Sie in der Adresszeile ein:

http://127.0.0.1/test.htm

Wenn alles korrekt eingerichtet ist, erscheint die angegebene HTML-Datei als über HTTP aufgerufene Webseite im Browserfenster. Damit haben Sie einen funktionierenden lokalen Apache Webserver auf Ihrem PC.

4 Die zentrale Konfigurationsdatei httpd.conf

Nach jedem Start oder Neustart liest Apache zuerst seine zentrale Konfigurationsdatei ein. Das bedeutet andersherum, dass der Server nach jeder Änderung in dieser Datei neu gestartet werden muss, damit die Konfigurationsänderung wirksam wird.

Die zentrale Konfigurationsdatei von Apache hat den Namen httpd.conf. Sie ist im Installationsunterverzeichnis conf abgelegt. Wenn Sie unter Linux auf Shell-Ebene nach der Datei suchen möchten, können Sie eingeben:

find / -name httpd.conf

Um sich erst einmal den Inhalt anzeigen zu lassen, ohne etwas zu ändern, können Sie das more- Kommando oder, wenn verfügbar, das noch komfortablere less-Kommando verwenden:

more [Pfad/]httpd.conf
less [Pfad/]httpd.conf

Zum Bearbeiten der Konfigurationsdatei müssen Sie einen auf dem System verfügbaren Texteditor starten. Fast überall verfügbar ist auf jeden Fall der vi-Editor:

vi [Pfad/]httpd.conf

Unter MS Windows wechseln Sie in das Programmverzeichnis des Apache (z.B. C:/Programme/ Apache/Apache 2) und dort ins Unterverzeichnis conf. Die Datei httpd.conf können Sie mit jedem Texteditor öffnen (Datei selektieren, mit rechter Maustaste Kontextmenü öffnen und Öffnen mit... wählen).

Aufbau der zentralen httpd.conf
Die meisten Zeilen der Datei beginnen mit einem Gatterzeichen (#). Das sind Kommentarzeilen, die vom Apache Webserver ignoriert werden. Da die Konfigurationsmöglichkeiten nicht selten weitreichende Konsequenzen haben, ist die Datei üppig mit erklärenden Kommentaren ausgestattet.

Der genaue Inhalt der Datei variiert zwischen verschiedenen Apache-Versionen. Generell ist sie jedoch stets in drei entsprechend ausgewiesene Hauptabschnitte (Sections) unterteilt.

Section 1 betrifft das »global Environment«, also die allgemeine Server-Umgebung, Section 2 die 'Main' server configuration, also Konfigurationsdaten, die für alle Apache- Prozesse von Bedeutung sind, und Section 3 die Virtual Hosts. Die einzelnen Konfigurationsanweisungen werden als Direktiven (directives) bezeichnet. Diese haben folgenden Aufbau:

Bezeichner Wert

Das heißt, sie stehen in einer eigenen Zeile. Die Bezeichnung der Direktive und ihr zugeordneter Wert werden durch ein Leerzeichen voneinander getrennt (es dürfen auch mehrere Leerzeichen sein). Es gibt auch Gruppen von Direktiven. Diese werden in einer HTML-ähnlichen Weise in Tags eingeschlossen. Schema:

<Gruppenbezeichner>
Bezeichner Wert
Bezeichner Wert
</ Gruppenbezeichner>

Es würde den Rahmen dieses Buchs sprengen, auf alle Einstellmöglichkeiten detailliert einzugehen. Die wichtigsten sollten Sie jedoch kennen und selbstständig korrekt ändern können.

Root-Verzeichnis des Servers
Die Direktive ServerRoot hilft dem Server, seine Konfigurationsdaten, Fehlermeldungsdateien, Grafikressourcen usw. zu finden. Ändern Sie den Eintrag nie ohne besonderen Grund! Der Eintrag hat nichts mit der bekannteren Direktive DocumentRoot zu tun!

Persistente Verbindungen
Eine wichtige Rolle für die Performance des Apache spielen die persistenten Verbindungen (persistent connections). Jeder Browser, der auf einem Apache Webserver eine Webseite aufruft, erzeugt beim Erstaufruf einen neuen Apache-Prozess. Wenn die Direktive KeepAlive auf Off steht, wird nach jeder Kommunikation Browser-Anfrage > Server-Antwort der Prozess wieder beendet. Steht KeepAlive dagegen auf On, wird der gestartete Prozess erst beendet, wenn länger keine Kommunikation mit dem gleichen Client stattfindet. Wie viele Sekunden damit gewartet wird, ist bei KeepAliveTimeOut einstellbar. Der Wert bedeutet die Anzahl Sekunden, bis ein Apache-Prozess bei persistenter Verbindung wegen Inaktivität wieder beendet wird.

Weiterhin wichtig ist für dieses Feature der Wert zu MaxKeepAliveRequests. Der Wert legt fest, wie viele Browser-Anfragen innerhalb einer persistenten Verbindung maximal entgegengenommen werden dürfen, bevor der Prozess beendet wird. Ein Wert von 0 bedeutet unbegrenzt viele erlaubte Requests.

Der Vorteil persistenter Verbindungen ist eine deutlich schnellere Auslieferung von angeforderten Daten von bis zu 50%. Der Nachteil ist, dass die Apache-Prozesse dadurch länger im Arbeitsspeicher bleiben und bei hohen Besucherzahlen den Speicher stärker belasten.

Allgemeiner Timeout
Bei der Direktive TimeOut können Sie die Anzahl Sekunden einstellen, die ein Apache-Prozess warten soll, bevor er sich wegen erwarteter, aber bislang nicht eingetroffener Daten beenden soll. Je höher der Wert, desto länger bleibt der Prozess im Arbeitsspeicher. Je niedriger, desto höher die Wahrscheinlichkeit, dass z.B. Browser-Anfragen im »Nirwana« landen, weil ihr zugeordneter Server-Prozess bereits beendet wurde. Dennoch ist es in der Praxis stark belasteter Websites durchaus sinnvoll, diesen Wert vom Standardwert 300 deutlich zu verringern, z.B. auf 60. Dadurch kann der Server-Rechner entlastet werden.

Module
Im ersten Abschnitt der httpd.conf findet sich eine längere Liste von LoadModule-Einträgen. Viele davon sind per Default mit # auskommentiert, was bedeutet, dass sie beim Starten des Servers nicht geladen werden und nicht verfügbar sind. Jedes nicht auskommentierte Modul wird dagegen geladen und ist verfügbar.
Apache unterscheidet statische und dynamische Module. Statische Module sind vor dem Kompilieren des Servers festlegbar. Was Sie in der httpd.conf finden, sind dagegen dynamische Module.

Dynamische Module für Apache 2.0 und 1.x sind inkompatibel. Die Standardmodule, die zur Apache-Distribution gehören, sind an der Endung .so erkennbar. Aktivieren Sie durch Entfernen des Kommentarzeichens # nur diejenigen Module, die Sie wirklich benötigen. Durch Beschränkung auf die wirklich nötigen Module kann ein Apache-Prozess schneller erzeugt werden und belegt weniger Speicher.

Sie können auch selbst Module für Apache schreiben und diese einbinden. Zum Programmieren können Sie beispielsweise Perl benutzen, wenn diese Scriptsprache auf dem Rechner installiert ist. Apache-Module müssen allerdings so geschrieben sein, dass sie konform sind zur Apache-API (Application Interface).

Nachfolgende Tabelle listet besonders wichtige und interessante der dynamischen Standardmodule auf:

Bilder


Bei einigen der Module werden die erforderlichen Detail-Einstellungen in weiteren Einträgen der httpd.conf oder in verzeichnisspezifischen .htaccess-Dateien vorgenommen, d.h., das Aktivieren des Moduls ist nur ein Schritt – die zugehörige Konfiguration der andere.

Es gibt weitere wichtige Module, die nicht zum Standardumfang von Apache gehören. Für PHP- Programmierer ist das allen voran das Modul, welches es Apache erlaubt, PHPScripts direkt und überall (und nicht als CGI-Scripts) auszuführen. Zwar benötigen die einzelnen Apache-Prozesse dadurch einiges mehr an Arbeitsspeicher, doch die Performance ist deutlich höher.

Zentrale Server-Direktiven

Diese Direktiven sollten von jedem Webmaster ordentlich gepflegt und an die Erfordernisse angepasst werden.
Dazu gehört zunächst die Direktive ServerAdmin. Ihr Wert ist die E-Mail-Adresse des für den Server verantwortlichen Webmasters. Bei Fehlermeldungen wird diese Adresse mit ausgegeben.

Die Direktive ServerName erwartet die Angabe eines Hosts und, getrennt durch Doppelpunkt, den Default-Port, also host:Portnummer. Bei registrierten Domains ist dies der Haupt-Domain-Name, z.B. ichundmeinserver.de, oder, wenn kein solcher Domain-Name existiert, die IP-Adresse des Rechners oder ein Hostname. Bei lokalen Installationen kann hier z.B. die Loopback-Adresse 127.0.0.1 oder der Default-Hostname localhost angegeben werden. Default-Portnummer ist 80.

Die Direktive UseCanonicalName wird von Apache verwendet, wenn es nötig wird, aus einer Ressource des vom Server selbst verwalteten Domain-Bereichs einen vollständigen URI zu erzeugen. Mögliche Werte sind On und Off.

Ganz wichtig und fast in jeder Apache-Konfiguration zu ändern ist die Direktive DocumentRoot. Hier wird der absolute Pfad des Verzeichnisses angegeben, unterhalb dessen die Startdatei des Webangebots liegen soll. Sie können also Ihre Webdaten ablegen, wo Sie möchten. Wichtig ist nur, dass Sie an dieser Stelle angeben, wo die Daten liegen. Der Verzeichnispfad wird in Unix- chreibweise notiert, also durch einfache Schrägstriche, nicht durch die in der Windows-Welt üblichen Backslashes. Wenn Sie einen Apache unter MS Windows installiert haben und einen Laufwerksbuchstaben mit angeben wollen, können Sie das in der Form wie im Beispiel f:/daten/web tun. Wichtig ist außerdem, dass das Verzeichnis am Ende keinen abschließenden Schrägstrich erhält.

Ebenfalls Pflicht ist es für jeden Webmaster, sich über grundsätzliche Verzeichnisoptionen Gedanken zu machen. Die Verzeichnisoptionen gehören zu einer Gruppe von Verzeichnisdirektiven. Diese werden in <Directory> ... </Directory> eingeschlossen. Die Direktive für Verzeichnisoptionen lautet innerhalb dieser Tags Options. Der Direktive können mehrere Werte zugewiesen werden.

Beispiel:

<Directory />
Options Indexes FollowSymLinks Includes
</Directory>

Das Beispiel bedeutet: Setze für das bei DocumentRoot angegebene Wurzelverzeichnis für Webseiten (bezeichnet durch / im einleitenden <Directory>-Tag) sowie für alle Verzeichnisse unterhalb davon die Optionen Indexes, FolllowSymLinks und Includes. Alle anderen verfügbaren Optionen werden nicht gesetzt. Nachfolgende Optionen sind möglich:

Bilder


Weitere mögliche Direktiven innerhalb von <Directory> ... </Directory> sind AllowOverride (.htaccess-Dateien erlauben oder nicht) oder Deny from (IP-Bereiche oder Domains ausschließen). Auf diese Möglichkeiten gehen wir jedoch erst im nächsten Abschnitt in Zusammenhang mit .htaccess-Dateien näher ein. Es ist durchaus erlaubt, in der httpd.conf für jeden gewünschten Verzeichnisunterbaum separate Angaben mit <Directory> ... </ Directory> zu notieren, z.B.:

<Directory /fotos>
Options Indexes
</Directory>

Da es sich jedoch um verzeichnistypische Einstellungen handelt, können diese alternativ auch in .htaccess-Dateien im Verzeichnis selbst notiert werden.

Eine wichtige zentrale Direktive ist DirectoryIndex. Geben Sie hier durch Leerzeichen getrennt alle Dateinamen an, die bei Anforderung eines Verzeichnis-URI wie / oder /fotos/ automatisch ausgeliefert werden, wenn eine oder mehrere davon sich in einem Verzeichnis befinden.
Beispiel:

DirectoryIndex index.html index.htm index.php

Die Reihenfolge ist ebenfalls von Bedeutung. Sollten sich im Beispiel im Verzeichnis eine index.htm und eine index.php befinden, wird die index.htm ausgeliefert, weil sie zuerst notiert ist.

Die übrigen Direktiven der zentralen Server-Konfiguration sollten Sie nur ändern, wenn Sie besondere Gründe dafür haben.

5 Dezentrale Konfigurationsmöglichkeiten über .htaccess

In der Unix-/Linux-Welt haben Dateinamen, die mit einem Punkt beginnen, besondere Bedeutung. Es handelt sich in der Regel um verzeichnisspezifische Konfigurationsdateien. Es kann auch so eingestellt sein, dass Benutzer diese Dateien überhaupt nicht sehen können, wenn sie sich den Verzeichnisinhalt auflisten. Um solche Dateien bearbeiten zu können, müssen Sie sich auf der Shell-Ebene also entweder mit dem Administratorzugang (root-Kennung) oder mit einem Benutzernamen anmelden, für den solche Dateien sichtbar sind.

Auch der Apache Webserver verwaltet solche mit Punkt beginnende Dateien. Per Voreinstellung (in der httpd.conf bei der Direktive AccessFileName festlegbar) heißen diese Dateien .htaccess.

.htaccess-Dateien sind reine Textdateien. Am besten bearbeiten Sie sie vor Ort auf dem Server. Melden Sie sich dazu über SSH am Server-Rechner an. Wechseln Sie auf Shell- Ebene mit dem Kommando cd (change directory) in das gewünschte Verzeichnis, z.B. durch Eingabe von cd /usr/home/web/fotos. Erzeugen Sie dann beispielsweise mit dem vi-Editor eine .htaccess-Datei durch Eingabe von vi .htaccess.

In .htaccess-Dateien lassen sich z.B. folgende Optionen definieren:

- Verzeichnisschutz, d.h., nur Benutzer mit definiertem Benutzernamen und Passwort können Inhalte in diesem Verzeichnis und seinen Unterverzeichnissen aufrufen.
- Directory-Browsing: Für die Optik lassen sich Optionen festlegen, wie der Verzeichnisinhalt aufgelistet wird, falls eine typische Indexdatei fehlt, und ob Verzeichnis-Browsing erlaubt ist.
- Verzeichnisoptionen: Es sind die gleichen Angaben möglich wie bei der Direktive Options in der zentralen Konfiguration von Apache. Ebenso sind Angaben zu Direktiven wie DirectoryIndex und ErrorDocument erlaubt.
- Bei Content Negotiation können Optionen eingestellt werden, unter welchen Bedingungen welche Inhalte ausgeliefert werden.

Ein ausführliches Beispiel mit Anleitung zum Einrichten eines Verzeichnisschutzes werden wir in Abschnitt 11.4 behandeln.

6 Virtuelle Hosts mit Apache

Die Webstartseite eines lokal eingerichteten Apache Webservers ist über eine der beiden URIs http://127.0.0.1/ oder http://localhost/ erreichbar, bei LANs auch unter der LAN-IPAdresse des Rechners wie z.B. http://192.168.101.4/. Auf einem Host-Rechner, der mit eigener IP-Adresse im Internet ansprechbar ist, kann die Webstartseite mit dessen IPAdresse erreicht werden, z.B. mit http:// 192.0.34.166/.

Damit eine Namensadresse wie beispielsweise http://www.example.org/ weltweit aufrufbar ist, muss ein richtiger DNS-Server vorgeschaltet sein, der über den weltweiten Verbund der DNS-Gateways in der Lage ist, die zu einem Domain-Namen gehörende IPAdresse ausfindig zu machen.

Wenn Sie bei einem Provider ein Web-Hosting-Angebot des Typs Virtual Hosting (also keinen eigenen Root-Server) wahrnehmen, dann ist es jedoch häufig so, dass die Webseiten verschiedener Domain-Namen (wie etwa duseldamp.de, fondelkauz.de und kulabersitz. de) auf dem gleichen Server-Rechner untergebracht, also im DNS der gleichen IPAdresse zugeordnet sind. Treffen entsprechende Anfragen beim Webserver eines solchen Rechners ein, muss dieser selbst wissen, in welchem Startverzeichnis beispielsweise die Webseiten jeder einzelnen Domain liegen. Auch andere Konfigurationen können ja kundenspezifisch sein, wie etwa die Namen von Verzeichnis- efault-Dateien. Um solche »dezentralen« Konfigurationen für unterschiedliche Domains zu ermöglichen, verfügen Webserver wie Apache über das Feature, virtuelle Hosts einzurichten.

Was in der httpd.conf in Abschnitt 2, also der Main Server Configuration, eingestellt wird, gilt global für den Default-Host, den der Apache verwaltet. In Abschnitt 3 der Konfigurationsdatei können Sie jedoch innerhalb der Direktivengruppe <VirtualHost> ... </VirtualHost> beliebig viele weitere Hosts einrichten. Innerhalb der umschließenden Gruppen- Tags können fast alle Direktiven, die in der httpd.conf vorkommen, nochmals notiert werden, wobei die dort angegebenen Werte dann aber nur für diesen speziellen virtuellen Host gelten.

Für Hosting-Provider ist dieses Feature also der Schlüssel, um mehrere Kunden mit jeweils eigenen Domains auf dem gleichen Rechner zu hosten. Diese Einsatzmöglichkeit soll uns hier jedoch weniger interessieren. Hier soll es darum gehen, zu zeigen, wie Sie mithilfe von Virtual Hosting bequem verschiedene Webprojekte lokal pflegen können. Wenn Sie nämlich mehrere verschiedene Webprojekte pflegen, die im Web auf verschiedenen Servern liegen und/oder über verschiedene Domain-Namen zugänglich sind, dann ist es sinnvoll, sich in der lokalen Entwicklungsumgebung am eigenen PC für jedes Webprojekt eine eigene Namensadresse einzurichten. So können Sie Ihre unterschiedlichen Projekte anschließend lokal über Adressen wie http://moebelhaus.localhost/ oder http:// verein.test/ aufrufen. In den Apache-Konfigurationsdirektiven können Sie dann für jeden virtuellen Host die Konfigurationseinstellungen mit denen am jeweiligen »echten« Server des Projekts abstimmen.

Um in der lokalen Entwicklungsumgebung einen virtuellen Host einzurichten, können Sie wie folgt vorgehen:

1. Geben Sie in der httpd.conf des Apache am Ende der Datei folgendes Minimalgerüst
ein:

<VirtualHost *:80>
ServerName kunde.meier.localhost
DocumentRoot /daten/web/meier/htdocs
ErrorLog /daten/web/meier/logs/error.log
TransferLog /daten/web/meier/logs/access_log
</VirtualHost>

Damit richten Sie einen Beispiel-Host ein, der wie üblich über den HTTP-Port 80 erreichbar ist und über http://kunde.meier.localhost/ im Browser aufgerufen werden kann. Die Webinhalte des Projekts liegen unterhalb des Verzeichnisses /daten/web/ meier/htdocs. Ebenfalls angegeben werden die Dateipfade für die beiden wichtigen Server-Log-Dateien für Webzugriffe und Fehler.

Wählen Sie als Servernamen für den virtuellen Host am besten einen gewünschten Namen und hängen Sie .localhost oder .test an. Dies sind offiziell für solche Zwecke vorgesehene Top-Level- Domain-Bezeichnungen.

2. Speichern Sie die Änderungen in httpd.conf.

3. Starten Sie den Apache Webserver neu wie in Abschnitt 9.4.2 beschrieben.

4. Legen Sie die erforderlichen Verzeichnisse im Dateisystem an, also z.B. die Pfade /daten/web/meier/htdocs (Startverzeichnis für Webinhalte in unserem Beispiel) und /daten/web/meier/logs (Verzeichnis für Log-Dateien des Webservers für diesen virtuellen Host). Falls bereits Dateien für das Webprojekt existieren, legen Sie diese in das angegebene Startverzeichnis für Webinhalte. Wenn noch keine Dateien existieren, erzeugen Sie zum Testen eine kleine HTML-Datei, z.B. test.htm, und legen diese im Verzeichnis ab.

5. Suchen Sie auf dem lokalen Rechner die hosts-Datei, in der lokale Hostnamen vergeben werden können. Öffnen Sie die Datei mit einem Texteditor zum Bearbeiten.
Bei neueren Versionen von MS Windows (2000/NT/XP) liegt die hosts-Datei unterhalb des Windows-Programmverzeichnisses unter system32driversetc. Bei Linux-Rechnern liegt sie unter /etc.
Innerhalb der Datei können Sie IP-Adressen Hostnamen zuordnen. Das Schema lautet:

IP-Adresse Hostname [Hostname2 ...]

IP-Adresse und Hostname(n) werden durch ein oder mehrere Leerzeichen getrennt.

6. Ordnen Sie in der hosts-Datei der lokalen IP-Adresse, also der Loopback-Adresse 127.0.0.1, den Hostnamen zu, den Sie auch in der httpd.conf bei <VirtualHost> ... </VirtualHost> hinter der Direktive ServerName vergeben haben.

Im Beispiel könnte der Eintrag also lauten:

127.0.0.1 localhost kunde.meier.localhost

Sie können die Datei hosts übrigens auch nutzen, um Ihren privaten kleinen DNS-Server zu fahren und damit Webzugriffe auf häufig aufgerufene Seiten zu beschleunigen. Der Webbrowser sucht nämlich bei jeder Namensadresse erst einmal in dieser Datei, bevor er beim DNS-Server der Internetverbindung anfragt.
Ein Beispiel:

213.198.84.179 de.selfhtml.org

Damit kann der Browser die Dokumentation SELFHTML viel schneller auffinden als wenn er erst den DNS-Server des Providers befragen muss. Interessant sind solche Einträge beispielsweise für die Produktivseiten selbst betreuter Webprojekte, da man diese häufig aufrufen muss. Die IP- dressen von Domain-Namen bekommen Sie heraus, indem Sie auf Shell-Ebene oder unter Windows in einem DOS-Fenster ein ping- Kommando auf den Domain-Namen absetzen, wie z.B. ping de.selfhtml.org.

Abbildung 9.12: hosts-Datei unter MS Windows im Notepad-Editor

7. Speichern Sie die Datei hosts.

8. Testen Sie den angelegten virtuellen Host nun im Browser.

In unserem Beispiel können Sie eingeben: http://kunde.meier.localhost/.

Neben dem Anlegen eines virtuellen Hosts in der Apache-Konfiguration ist also eine Anpassung auf Systemebene, nämlich in der hosts-Datei, erforderlich.

7 Log-Dateien des Apache Webservers

Per Voreinstellung protokolliert der Webserver alle Zugriffe und alle dabei aufgetretenen Fehler in so genannten Log-Dateien. Die Log-Dateien bilden die Basis für spätere Statistiken, wie sie etwa von Tools wie dem Webalizer erstellt werden.

Der typische Dateiname für die Log-Datei mit Fehlern heißt error_log, und der für die Log-Datei mit Zugriffen heißt access_log (unter Windows error.log und access.log). Beide Dateinamen und ihr Ablageort sind in der httpd.conf konfigurierbar und zwar in den Direktiven ErrorLog (für die Fehler-Log-Datei) und CustomLog (für die Zugriffs-Log- Datei). Auf Windows-Systemen wird dazu per Default ein Unterverzeichnis logs im Programmverzeichnis des Apache Webservers verwendet. Auf Unix/Linux-Systemen werden die Dateien in der Regel in einem Verzeichnispfad namens /var/log/httpd abgelegt.

Für die Fehler-Log-Datei wird ferner eine Direktive namens LogLevel angeboten. Darin kann festgelegt werden, welche Arten von Meldungen in der Fehler-Log-Datei protokolliert werden sollen. Folgende Zuweisungen sind möglich:

Bilder

Jede Zeile in einer der Log-Dateien steht für einen protokollierten Eintrag. Das Format der Einträge in der Fehler-Log-Datei ist vorgegeben. Das der Zugriffs-Log-Datei können Sie dagegen aus Einzelbausteinen selbst zusammensetzen, je nachdem, welche Informationen Sie darin wünschen.

Ein Beispieleintrag aus der httd.conf:

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i""
combined
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

Jede Definition zur Direktive LogFormat legt ein mögliches Eintragsformat fest. Am Ende wird für das Eintragsformat ein Name vergeben, wie im Beispiel combind, common, referer und agent. Diese Namen können dann bei der Direktive CustomLog angegeben werden.

Beispieleintrag:

CustomLog /var/log/httpd/access_log common

Im Beispiel wird bestimmt, dass die Zugriffe in der Datei access_log im Verzeichnis /var/ log/httpd gespeichert werden sollen und dass dabei das unter dem Namen common definierte Log-Format verwendet werden soll. Falls Sie übrigens das Default-Log-Format des Apache verwenden möchten, können Sie die Direktive TransferLog anstelle von CustomLog verwenden.
Beispiel:

TransferLog /var/log/httpd/access_log

Der Unterschied zwischen TransferLog und CustomLog besteht also nur darin, dass bei CustomLog zusätzlich der Name des gewünschten Log-Formats angegeben wird.

Das Log-Format wird aus Bausteinen zusammengesetzt, deren Bezeichner durch ein Prozentzeichen eingeleitet wird. Der gesamte »Formatstring« wird in Anführungszeichen gesetzt. Nachfolgende Tabelle listet die Bedeutung von Prozentbezeichnern auf:

Bilder


Die Log-Dateien liegen im Klartext vor und können mit einem Texteditor oder einem Textanzeigeprogramm betrachtet werden. Allerdings können die Log-Dateien sehr groß werden und von manchen Programmen wegen ihrer Größe möglicherweise nicht verarbeitet werden.

Provider in Deutschland sind verpflichtet, Log-Dateien über einen gewissen Zeitraum hinweg aufzubewahren. Das sollte das Backup-System regeln. Außerdem müssen die Log-Dateien Rückschlüsse darüber erlauben, wer wann was aufgerufen hat. Achten Sie deshalb darauf, sofern Ihr Server in Deutschland steht, bei einem CustomLog-Format zumindest die Bezeichner %a, %h, %t und %U zu verwenden – auch im eigenen Interesse. Denn mithilfe dieser Daten können Sie z.B. schwere Hausfriedensbrecher in Foren oder Gästebüchern erfolgreich zur polizeilichen Anzeige bringen.

 

 

 

Das Tutorial ist ein Auszug aus dem Buch von Stefan Münz:

Professionelle Websites - Programmierung, Design und Administration von Webseiten
Addison-Wesley, 2. Auflage, 1136 Seiten, gebunden, komplett in Farbe, mit DVD

Die Veröffentlichung des Kapitels erfolgt mit freundlicher Genehmigung von
Pearson Education.

Mehr Informationen zu diesem wunderbaren Fachbuch für Webmaster und Webentwickler
gibt es hier: Professionelle Websites

Alle Teile des Buches: 

1 Intro
2 HTML und CSS
3 Dynamische Seiten mit JavaScript/DOM
4 Die Server-Seite
5 PHP und MySQL
6 XML
7 Betrieb von Websites
8 Referenz
Bilder

DVD-Werbung
Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von MaoMao
  • 09.01.2013 - 17:08

Gute Tutorial leicht erklärt.

Portrait von syzi
  • 02.02.2009 - 18:02

Super Tut, hat mir sehr geholfen. Freue mich schon die Nächsten zu lesen.

x
×
×