Apache konfigurieren
Hinweis: Dieser Beitrag bezieht sich auf ältere Apache-Versionen. In neueren Versionen sind alle Konfigurationsparameter in der Datei httpd.conf untergebracht.
erschienen in PC-Online 7/99
Linux-Anwender haben es gut. Denn das Betriebssystem bringt einen kompletten WWW-Server für höchste Ansprüche mit. Apache heißt das Goldstück, das jeden PC in einen Website verwandelt. PC-Online zeigt, wie Sie den eigenen WWW-Server vorbereiten und optimal einsetzen.
Wozu ein eigener Web-Server?
Ein eigener Web-Server eignet sich nicht nur für professionelle Provider. Wer immer eine eigene Homepage anbietet, kann diese mit einem eigenen Server besser und zuverlässiger austesten. Denn der Apache bietet Zugang zu CGI-Skripts und zu den Fähigkeiten des Linux-Systems. Der Test von WWW-Seiten auf einem System ohne Server hingegen scheitert spätestens dann, wenn es um die Programmierung von Web-Anwendungen geht.
Und noch einen gewaltigen Vorteil hat der eigene Server im Haus: mit ihm können Sie gefahrlos alle Fähigkeiten von Perl, CGI, Linux und Apache ausloten, experimentieren und so neue Ideen und Konzepte für die Homepage ausprobieren ohne den laufenden Betrieb des eigenen Servers zu stören.
Nicht zuletzt ist ein eigener Web-Server hochinteressant in kleinen Netzwerken. Jede Arbeitsgruppe, jeder kleine Betrieb stellt eine hausinterne Homepage zusammen. Diese enthält Telefonliste, Urlaubsplan oder den Zugang zur gemeinsamen Datenbank. Zusätzlich macht sich der Apache-Rechner auch als File-und Mail-Server nützlich.
Voraussetzungen
Für den Betrieb eines eigenen Web-Servers genügt ein alter Rechner, zum Beispiel ein ausrangierter Pentium 60. Mit Speicher sollte man nicht knausern: 32 Mbyte sind gut, 64 Mbyte besser. Bei den aktuellen Preisen für RAM-Bausteine wird der Ausbau keine allzugroße Investition. Als Festplatte reicht für den Normalbetrieb 1 Gbyte, ein CD-Rom-Laufwerk sollte auch im Rechner stecken. Vorsicht: Diese Angaben gelten für Server, die nicht am Internet angebunden sind. Je mehr User auf einen Web-Server zugreifen, desto mehr Power und Speicher braucht der Rechner.
Schließlich benötigen Sie noch die Server-Software selbst. Apache findet sich auf praktisch allen Linux-Distributionen und wird zum Beispiel bei Redhat gleich mitinstalliert. Sie sollten eine möglichst aktuelle Linux-Distribution mit einem ebenso aktuellen Apache einsetzen. Die Angaben in diesem Artikel beziehen sich auf die Redhat-Distribution 5.2 Apollo und Apache 1.3.
Der erste Test
Um zu sehen, ob der Apache-Server bereits in Ihrem System arbeitet, rufen Sie ihn einfach auf. Dazu benötigen Sie die Adresse Ihres Linux-Systems - entweder die IP-Nummer oder den Namen. Wenn der Linux-Rechner in einem Netzwerk hängt, können Sie von einer anderen Maschine aus auf den Server zugreifen. Dazu rufen Sie auf einem Computer im selben Netzwerk einen Web-Browser auf und geben in der Adreßzeile die IP-Nummer des Apache-Systems ein. In den folgenden Beispielen ist das die IP 192.168.0.31. Sofern Sie nur auf einem nicht vernetzten Rechner arbeiten, greifen Sie über die IP-Nummer 127.0.0.1 oder den Rechnernamen localhost auf das System zu. Am schnellsten geht der Test mit dem Kommandozeilenbrowser Lynx:
lynx localhost
Nun sollte der Begrüßungsbildschirm des Apache-Servers erscheinen. Hier finden sich auch Links zur Online-Dokumentation des Servers - eine wertvolle Informationsquelle. Lief der Test erfolgreich, dann ist Apache bereits korrekt eingerichtet. Falls nicht, müssen Sie Apache noch nachinstallieren. Die dafür notwendige Software sowie Anleitungen gibt es unter der Web-Adresse www.apache.org. Suchen Sie unter Downloads/Binaries nach der passendenen Version für Ihren Rechner.
Orientieren
Wenn Apache grundsätzlich arbeitet, dürfen Sie sich an die Konfiguration wagen. Doch bevor es so weit ist, sollten Sie sich erst einmal genau orientieren, wo welche Dateien und Verzeichnisse liegen. Der erste Anlaufpunkt ist das Verzeichnis /etc auf Ihrem Linux-Server. Hier findet sich ein weiteres Unterverzeichnis namens /httpd/conf, in dem die Konfigurationsdateien des
Apache-Servers stecken.
Jetzt gilt es herauszufinden, wo sich das Verzeichnis für die Web-Dokumente Ihres Servers befindet. Dieses Verzeichnis ist in der Datei srm.conf festgehalten, das sich ebenfalls in /etc/httpd/conf befindet. Um das
Dokumentverzeichnis herauszufinden, geben Sie diese Zeile ein:
cat srm.conf | grep DocumentRoot
Nach einem [Return] sollte eine Angabe erscheinen wie
DocumentRoot /home/httpd/html
Natürlich steht es Ihnen frei, von Hand in der srm.conf zu stöbern. Verwenden Sie dazu am besten den Midnight Commander, den Sie von der Linux-Kommandozeile mit der Eingabe von "mc" starten. Führen Sie dann den Cursor über die Datei srm.conf und drücken Sie [F4]. Jetzt zeigt sich die komplette Konfigurationsdatei, bereit zum Bearbeiten.
Die erste Webseite
Nun wissen Sie, wo das Hauptverzeichnis Ihres Servers steckt und können hier eine erste HTML-Datei unterbringen. Nennen Sie diese Seite test.html und rufen Sie erneut Ihren Web-Browser mit der Adresse Ihres Linux-Servers und dem Namen der Datei auf, zum Beispiel http://192.168.0.31/test.html oder http://localhost/test.html.
Im Grunde ist damit Ihr Web-Server schon einsatzbereit - sie müssen nur die Dateien index.html, aliases.gif und poweredby.gif sowie das Verzeichnis manual löschen, umbenennen oder verschieben. Am einfachsten ist es, wenn Sie ein Unterverzeichnis mit dem Namen apache erzeugen und dort die genannten Dateien und Verzeichnisse hineinverschieben. Dann bleiben Handbuch sowie Originalstartseite erhalten und sind über die URL http://localhost/apache/ oder in diesem Beispiel über http://192.168.0.31/apache/ erreichbar. Wenn Sie nicht wollen, daß andere Anwender an die Handbuchdateien kommen, verschieben Sie die Dateien in Ihr Home-Verzeichnis oder an einen anderen sicheren Ort im System.
Sind die Ursprungsdaten weggeräumt, benennen Sie nur noch test.html in index.html um und haben eine neue Homepage. Nun können Sie wie gewohnt weitere HTML-Dateien und -Verzeichnisse hinzufügen und Ihren Server aufbauen.
Willkommen
Vor einem Problem steht, wer nicht den von Apache vorgesehenen Namen index.html für seine Eingangsseite aufweisen kann. Denn von Haus aus ignoriert der Server Dateinamen wie welcome.htm oder welcome.html. Statt einer Willkommens-Seite sehen Sie dann nur eine Liste der im html-Verzeichnis vorhandenen Dateien, wenn Sie nur die Server-Adresse ohne einen spezifischen HTML-Dateinamen eingeben.
Also gilt es, dem Server mitzuteilen, daß er bei einem Aufruf der blanken URL auch andere Dateien als index.html zeigen soll. Diese Aufgabe erledigt der Parameter DirectoryIndex, den Sie in der Datei srm.conf finden. Hier sind bereits die Dateien index.html, index.shtml und index.cgi notiert. Wenn der Server nun auch nach welcome.html als Eingangsseite fahnden soll, ergänzen Sie diese Zeile um welcome.html. Das Ergebnis sieht so aus:
DirectoryIndex index.html index.shtml index.cgi welcome.html
Wenn im Standardverzeichnis Ihres Web-Servers zwei dieser Dateien, also zum Beispiel index.html und welcome.html stehen, geht die Datei vor, deren Name zuerst in der Liste nach DirectoryIndex steht.
Webserver neu starten Wenn Sie diese Änderung vorgenommen haben, müssen Sie den Web-Server neu starten. Dazu suchen Sie zuerst mit
ps ax | grep httpd
die Prozeßnummer des Servers. Sie bekommen dann eine Liste zurück, die etwa so aussieht:
380 ? S 0:00 httpd 385 ? S 0:00 httpd 386 ? S 0:00 httpd 387 ? S 0:00
httpd [...] 1138 p0 S 0:00 grep httpd
Suchen Sie nun die Prozeßnummer des ersten Eintrages aus und geben Sie diese mit einem Kill-Befehl ein, zum Beispiel
kill 380
Nun beendet Linux den Apache-Server. Mit dieser Zeile starten Sie den Server wieder neu:
httpd
Dann können Sie die Neuerungen austesten.
Zugang begrenzen
Wenn Ihr Testserver in einem Netz hängt, sollte nicht jeder andere User mitbekommen, was Sie auf Ihrem Testsystem treiben. Deshalb empfiehlt es sich, den Zugang zu beschränken. Dazu stehen grundsätzlich zwei Methoden zur Verfügung: Einmal läßt sich der Zugang generell für Computer sperren oder Sie richten eine Benutzer-Authentifizierung ein.
Die weniger aufwendige Methode sperrt generell Rechner vom Zugriff auf dem Server aus und erlaubt nur einzelnen Geräten den Zugriff. Die Identifikation, welcher Rechner an den Server darf, erledigt Apache anhand der IP oder der Domain-Adresse des Computers. Zuständig für den Zugriff ist die Datei /etc/httpd/conf/access.conf. Hier finden Sie diese Einträge:
order allow,deny allow all
Im Klartext: Erlaube allen Rechnern den Zugriff auf den Webserver. Um alle Computer im Netzwerk außer Ihrem Zweitgerät vom Server abzuklemmen, ändern Sie die Zeilen so:
order deny,allow allow from 192.168.0.20 deny from all
Vorausgesetzt Ihr zweiter Computer hat die IP 192.168.0.20, darf nur noch er Webseiten vom Server abrufen. Alle anderen Rechner bleiben ausgeschlossen und bekommen eine entsprechende Meldung. Damit diese Anweisungen greifen, muß die order-Direktive umgeschrieben werden. Sie regelt die Priorität der Zugriffsprivilegien. Mit allow,deny hat deny eine höhere Priorität als allow. Das bedeutet, alle Computer, die mit deny ausgeschlossen werden, bleiben außen vor, selbst wenn Ihnen mit allow eigentlich ein Zugriff eingeräumt würde. Deswegen würde im obigen Beispiel allow,deny nicht funktionieren. Denn die IP 192.168.0.20 ist ein Teil von all - und würde damit ausgeschlossen werden. Sinnvoll ist die allow,deny-Anordnung, wenn Sie einen oder mehrere Computer explizit am Zugriff hindern wollen und dem Rest der Welt Ihren Server öffnen:
order allow,deny allow from all deny from 192.168.0.40 192.168.0.41
Diese Zeilen schließen zwei Computer mit den IP-Nummern 192.168.0.40 und 192.168.0.41 vom Zugriff aus. Der Rest des Netzwerkes darf an den Server.
Anstelle einzelner IP-Nummern akzeptiert Apache auch IP-Bereiche, zum Beispiel 192.168. für das hausinterne Netzwerk oder Domainnamen wie .foo.bar - alle Computer, die sich mit dieser Domain identifizieren, dürfen dann Seiten abrufen. Wenn Sie Ihren Server an das Internet anschließen, sollten Sie allerdings von dieser Maßnahme absehen - denn einen Domain-Namen kann man fälschen. Hier ist die Authentifizierung mit IP-Nummern sicherer.
Username und Kennwort
Etwas kniffliger wird es, wenn Sie ausgewählten Benutzern den Zugriff auf Ihren Server erlauben wollen. Dann müssen Sie in access.conf gleich eine Reihe von Änderungen vornehmen. Zuerst schalten Sie aber die order-Direktive sowie allow und deny in den Urzustand zurück: order allow,deny allow from all
Nun fügen Sie diese Zeilen in die access.conf ein - am besten direkt oberhalb der order-Anweisungen:
AuthType Basic AuthName "WWW Testsystem Intranet"
AuthUserFile /etc/httpd/conf/users require valid-user
AuthType Basic steht für die Art der Abfrage. Basic reicht hier aus. AuthName enthält den Namen des geschützten Bereiches. Der erscheint dann auch im Kennwortfenster des Browsers. Die Leerzeichen sind hier notwendig, da im Namen Leerzeichen stehen. AuthUserFile legt fest, daß die Abfrage ihre Usernamen aus der Datei /etc/httpd/conf/users bezieht. Require valid-user schließlich bestimmt, daß nur zugelassene User zugreifen dürfen. Mit require martin dagegen würden Sie nur den Usernamen martin zulassen und so den Zugriff noch weiter einschränken.
Nun brauchen Sie noch eine User- und Kennwortdatei. Die legen Sie von der Kommandozeile aus mit folgender Zeile an:
htpasswd -c /etc/httpd/conf/users test
Das Programm htpasswd legt eine neue Benutzerdatei namens users an und fügt ihr gleich den User test hinzu. Sie müssen nur noch das Kennwort eintippen und haben schon den ersten User. Wenn Sie weitere Anwender hinzufügen wollen, rufen Sie denselben Befehl ohne -c auf. Die Anweisung
htpasswd /etc/httpd/conf/users hubert
ergänzt die Kennwortdatei um den Usernamen hubert.
Zwei Server betreiben
Apache ist längst nicht ausgelastet, wenn Sie nur einen Server betreiben. Wenn Sie beispielsweise einen WWW-Server zum Testen und einen für das hauseigene Intranet benötigen, fügen Sie einen virtuellen Server hinzu. Dieser bekommt eine eigene IP und ein eigenes Root-Verzeichnis, in dem Sie die Dateien lagern. Im folgenden Beispiel fügen wir zum bereits eingerichteten Server mit der IP 192.168.0.31 einen zweiten Server hinzu, der unter 192.168.0.33 zu erreichen ist. Voraussetzung für diesen neuen Server ist, daß Sie Ihr Linux-System entsprechend mit IP-Nummern vorbereitet haben. Wenn Sie dem neuen Server einen Domain-Namen hinzufügen wollen, müssen Sie dies auf Ihrem DNS- oder WINS-Server erledigen. Der Einfachheit halber arbeiten wir hier nur mit den IP-Nummern.
Der erste Arbeitsschritt findet in der Datei httpd.conf statt. Hier fügen Sie ganz am Ende der Datei folgende Zeilen ein:
DocumentRoot setzt das Hauptverzeichnis des neuen virtuellen Servers auf /home/go/WWW. Achten Sie darauf, daß dieses Verzeichnis entsprechende Zugriffsrechte hat:
Jeder muß in das Verzeichnis wechseln dürfen und dort Dateien lesen können. Die Erlaubnis für das Wechseln in ein Verzeichnis setzen Sie mit
cd /home chmod a+x go cd go chmod a+x WWW
Bedenken Sie aber, daß Sie eventuelle Dateien im Verzeichnis /home/go gegen unbefugten Zugriff sichern und nicht versehentlich eine Schreiberlaubnis einrichten.
Nun können Sie Dateien in das Verzeichnis kopieren - die Reihenfolge für die automatisch zu ladenden Files ist wie vorhin festgelegt: index.html geht vor welcome.html. Wenn Sie für dieses spezielle Verzeichnis eine eigene Reihenfolge oder Beschränkung haben wollen, fügen Sie nach DocumentRoot /home/go/WWW diese Zeile ein:
DirectoryIndex start.html
Jetzt erwartet der Server eine Datei namens start.html beim Aufruf der Internet-Adresse. Dieses Beispiel zeigt, daß Sie für den virtuellen Server alle Einstellungen gesondert vornehmen können, unabhängig davon, welche Parameter Sie vorher für den Hauptserver gesetzt haben.
Sicherheitsmaßnahmen für den neuen virtuellen Server treffen Sie wie gehabt in access.conf. Hier geben Sie am Ende der Liste diese Zeilen ein, um beispielsweise den Zugriff auf den neuen Server nur einem bestimmten Rechner zu erlauben:
<Directory /home/go/WWW>
Options Indexes Includes order
deny,allow
allow from 192.168.0.20
deny from all
</Directory>
Neu ist hier die erste Zeile. Sie legt spezielle Optionen für das Verzeichnis fest: Indexes greift, wenn der Server ohne die Nennung eines Dateinamens angwählt wird und sich kein Default-Dokument wie index.html oder welcome.html findet. Mit Options Indexes legen sie für diesen Fall fest, daß anstelle einer Fehlermeldung der Inhalt des Web-Verzeichnisses gezeigt wird. Nützlich ist diese Option auch, wenn Sie explizit erlauben wollen, daß sich Anwender beispielsweise durch ein Dateiarchiv wühlen. Sicherer ist es allerdings, diese Option grundsätzlich wegzulassen - zumindest dann, wenn der Server öffentlich erreichbar ist. Der Parameter Includes erlaubt, serverseitige Includes in ein Dokument aufzunehmen. Dabei handelt es sich um die Anzeige von Systemvariablen oder den Start von Programmen auf dem Web-Server. Ein weiterer interessanter Parameter ist ExecCGI, um CGI-Programme in diesem Verzeichnis auszuführen. Mehr zum Thema Serverseitige Includes lesen Sie in einer der kommenden Ausgaben von PC-Online.
Konfigurationsdateien richtig editieren
Bevor Sie sich an die Konfigurationsarbeit setzen, sollten Sie alle Dateien sichern. Kopieren Sie am besten alle Dateien aus /etc/httpd/conf/ in ein anderes Verzeichnis. Wenn Sie Änderungen in den Konfigurations-Files vornehmen, ändern Sie immer nur einen Parameterblock auf einmal und probieren Sie dann die neuen Werte aus, bevor Sie fortfahren. Dokumentieren Sie alle Eingriffe mit einer Kommentarzeile. Diese erkennen Sie an einem vorangestellten #. Schreiben Sie in den Kommentar Datum, Urheber und Zweck der Änderung. Nur so können Sie auch noch nach einem halben Jahr die Modifikationen nachvollziehen. Noch sicherer wird es, wenn Sie jeweils den Urzustand der Konfiguration auskommentieren und darunter die neuen Parameter schreiben, zum Beispiel:
#Original-Konfiguration
#order allow,deny
#allow from all
#Zugriff beschränken (19.5.99, Martin Goldmann)
order deny,allow
allow from 192.168.0.40
deny from all
So läßt sich nach einem Mißgriff in der Konfiguration schnell der Urzustand wiederherstellen.
Mehr dazu:
Diese Anleitung ist nicht schlecht, sie ist eine gute Voraussetzung in
die Einführung für Apache Server. Aber bei ORIENTIEREN nach dem 2.
Absatz stehen Konfigurationen. WO soll man die hinschreiben? Wenn man
noch ein bisschen besser beschreiben könnte, wo man all die Sachen
einträgt wäre es besser. Vorallem gehen diese angegebenen Sachen nicht
laut meines Bruders ("Anfänger") :) . Gruss ---> Übrigens: die
Fehlermeldung wenn man kein namen eingibt hat ein schreibfehler ;)
[wurst | 07.04.2004]
Antworten




