Tipps&Tricks für Apache
Webserver-Tuning

DeveloperIT-ProjekteSoftware

Marktführer

Tipps&Tricks für Apache

Der Webserver Apache kommt laut Netcraft im August auf einen Marktanteil von knapp 68 Prozent, gefolgt vom mittlerweile weit abgeschlagenen Internet Information Server (IIS) von Microsoft mit einem Marktanteil von gut 20 Prozent. Dabei führt der HTTP-Daemon des Apache-Projekts nicht ohne Grund die Liste der beliebtesten Webserver an: Der Server lässt sich leicht konfigurieren, bietet eine Menge Funktionen und ist noch dazu als Open-Source-Software frei verfügbar. Ob beispielsweise als Entwicklungssystem in der Firma oder auf einem dedizierten Server bei einem Webhoster ? der Apache-Server ist nahezu überall vertreten, wenn ein leistungsfähiger sowie einfach und flexibel konfigurierbarer Webserver zum Einsatz kommen soll.

Internet Professionell hat für Sie im Folgenden die besten Tipps und Tricks rund um den Apache-Webserver zusammengestellt. Damit holen Sie noch mehr aus Ihrem Webserver heraus.

Einfache Installation

Tipps&Tricks für Apache

Bei zahlreichen Linux-Distributionen lassen sich der Apache-Webserver sowie viele der benötigten Module bequem über das integrierte Installations- und Konfigurations-Tool auf dem System einrichten. Ein Beispiel ist das Tool Yast 2 unter Suse Linux, mit welchem die Einrichtung des Webservers mit wenigen Mausklicks erledigt ist. Wer Apache auf einem System einrichten möchte, auf dem kein entsprechendes Tool zur automatischen Installation zur Verfügung steht, und zudem keine intimen Linux-Kenntnisse hat, muss sich unter Umständen erst in zahlreiche FAQs und Dokumentationen einarbeiten, um erfolgreich ans Ziel zu kommen.

Eine praktische Lösung ist die Apache-Toolbox ( www.apachetoolbox.com) von Bryan Andrew. Das Installationsskript übernimmt das Herunterladen, Konfigurieren, Kompilieren und die Installation von Apache und zahlreichen Modulen. Dabei handelt es sich quasi um ein Schweizer Taschenmesser für die Einrichtung des HTTP-Daemons. Die konfigurierbare und menügesteuerte Schnittstelle unterstützt neben dem eigentlichen Apache-Server auch Secure Sockets Layer (SSL) für die sichere Webseiten-Interaktion, unter anderem PHP, mod_perl, mod_python, mod_fastcgi sowie MySQL ? insgesamt 63 Module von Drittherstellern und 36 in Apache integrierte Module.

Volle Dateinamen

Tipps&Tricks für Apache

Grundsätzlich sollte man bei einem öffentlichen Webspace das Verzeichnis-Listing abschalten. Das ist bei vielen Webhostern auch der Fall, und das Directory-Listing kann nur optional vom Kunden aktiviert werden. Bei einem mit einer .htaccess-Datei geschützten Verzeichnis bringt jedoch ein Directory- Listing durchaus Vorteile, zum Beispiel, wenn man private Dateien für den schnellen Download zur Verfügung stellen möchte. Das Directory-Listing hat jedoch standardmäßig den Haken, dass lange Dateinamen einfach abgeschnitten werden. Hat man nun zahlreiche Dateien, die gleich anfangen, gestaltet sich das Auffinden der gesuchten Datei mitunter etwas schwierig. Und wer will schon über jeden Link mit der Maus fahren und in der Statuszeile den vollständigen Dateinamen ablesen?

Der flexibel konfigurierbare Apache-Server bietet auch für dieses Problem eine schnelle und unkomplizierte Lösung. Hierzu brauchen Sie in der zentralen Konfigurationsdatei httpd.conf nur in der Zeile IndexOptions die Option NameWidth hinzuzufügen:

IndexOptions FancyIndex NameWidth=*

Standardmäßig ist Apache nur auf FancyIndex eingestellt, was lediglich die kurzen Dateinamen ausgibt. Nach einem Neustart des Servers stehen die vollständigen Dateinamen zur Verfügung.

FTP-Server ohne FTP-Server

Tipps&Tricks für Apache

Nein, der Redakteur dieser Tipp-Sammlung war beim Formulieren der Zwischenüberschrift völlig nüchtern. Der Apache-Webserver lässt sich dahingehend konfigurieren, dass er sich für den Besucher ähnlich wie ein FTP-Server verhält. So können Sie beispielsweise einen Teil Ihrer Webseite als reinen Download-Bereich einrichten. Weiterer Vorteil: Seitens Ihrer Besucher ist kein eigener FTP-Client notwendig.

Der Server beinhaltet das Modul anon_ auth_module, das per Voreinstellung stets geladen wird. Das Modul ermöglicht einen authentifizierten anonymen Zugriff auf Teile einer Webseite. Besonders praktisch ist dies, wenn Sie Dokumente haben, die nicht von Suchmaschinen indiziert werden sollen, oder wenn Zugriffsebenen nötig sind.

Zum Aktivieren des Moduls entfernen Sie in der Datei httpd.conf die Raute vor den folgenden Zeilen:

#LoadModule anon_auth_module
libexec/httpd/mod_auth_anon.so
#AddModule mod_auth_anon.c

Je nach Apache-Installation können die obigen Zeilen auch etwas anders aussehen. Nach einem Neustart des Servers können Sie die Zugriffsrechte festlegen. Dies geschieht entweder über Direktiven in httpd.conf oder über eine .htaccess -Datei im entsprechenden Verzeichnis, wobei wir hier näher auf letztere Möglichkeit eingehen werden. Legen Sie also nun im zu schützenden Verzeichnis eine Datei .htaccess mit folgendem Inhalt an.

AuthName "anonymous/e-mail"
AuthType Basic Require valid-user
Anonymous fritz
Anonymous_Authoritative on

Die ersten drei Zeilen mit Direktiven dürften dem einen oder anderen Leser vielleicht schon vom Modul mod_auth bekannt sein, welches für den regulären Verzeichnisschutz mit .htaccess-Dateien verwendet wird. Die Direktive Anonymous steuert, welche Benutzernamen als anonyme Benutzer betrachtet werden, in obigem Fall ist das der User fritz . Anonymous_Authoritative legt fest, ob nicht autorisierte Benutzernamen und Passwörter mit anderen Authentifizierungsmechanismen weiterverarbeitet werden sollen. Bei on herrscht Anonymität; entweder loggt sich der Benutzer fritz ein, oder der Zugriff wird verweigert.

Wenn Sie stattdessen off verwenden, kommt die Funktionalität von mod_auth zum Einsatz, also die Authentifizierung mit Passwörtern und Gruppen. Erfolgt im folgenden Beispiel der Login nicht als Benutzer dieter, wird der Username an AuthUserFile weitergegeben und dort mit den Accounts verglichen. Existiert dort der Benutzer nicht, wird der entsprechende Zugriff verweigert.

AuthName "anonymous/e-mail"
AuthUserFile /test/.htpasswd
AuthType Basic
Require valid-user
Anonymous dieter
Anonymous_Authoritative off

Unterschiedliche Rechte

Tipps&Tricks für Apache

Die unten stehende Konfiguration erlaubt zum Beispiel allen Benutzern das Einsehen der Verzeichnisliste. Alle in der Datei AuthUserFile festgelegten Benutzer können auf alle JPG-Dateien zugreifen, ebenso alle anonymen Benutzer, welche sich mit guest und besucher anmelden, sofern sie eine gültige E-Mail-Adresse angeben. Bei der Mail-Adresse wird jedoch lediglich überprüft, ob ein @-Zeichen sowie ein Punkt vorkommen. MP3-Dateien darf nur der Benutzer illegal einsehen:

AuthName "anonymous/e-mail"
AuthType basic
AuthUserFile /test/.htpasswd
Anonymous guest besucher
Anonymous_Authoritative off
Anonymous_VerifyEmail on
Require valid-user
Require user illegal

Selbstverständlich lassen sich beliebig zahlreiche weitere Regeln anwenden, etwa eine Zugriffssteuerung nach IP-Adressen. Jedoch lässt sich mit diesem Pseudo-FTP-Server nur das Herunter-, aber nicht das Hochladen von Dateien verwirklichen. Dies lässt sich aber mit entsprechenden PHP- oder Perl-Skripts ebenso geschickt lösen. Wenn Sie stattdessen lieber einen dedizierten FTP-Server einrichten möchten, finden Sie in der Ausgabe 9/2004 der Internet Professionell einen ausführlichen Workshop zu diesem Thema.

Genug Speicher?

Tipps&Tricks für Apache

Wer seinen eigenen Webserver betreibt möchte sichergehen, dass diesem in absehbarer Zeit nicht einfach »die Luft ausgeht«, weil von der Hardware her nicht mehr genug Performance zur Verfügung steht. Der größte Flaschenhals ist hierbei oft der Hauptspeicher. Doch wie lässt sich herausfinden, wie viel Speicher der eigene Server benötigt? Leider gibt es hierfür kein Patentrezept ? zu unterschiedlich sind je nach Webseite die Größen einzelner Apache-Prozesse. Weitere Faktoren sind die Anzahl der installierten Module und womit sich ein Prozess beschäftigt.

Um nun den benötigten Speicher zu ermitteln, ist es unerlässlich, dass Sie Ihrem Webserver bei der Arbeit über die Schulter schauen. Ein Beispiel: Angenommen ein Prozess auf Ihrem Webserver nimmt im Durchschnitt 4 MByte Arbeitsspeicher in Beschlag, in Spitzenzeiten sind bis zu 125 Prozesse gleichzeitig aktiv. Dies würde bedeuten, dass Sie hierfür 500 MByte Arbeitsspeicher allein für den laufenden Apache-Server brauchen. Hinzu kommen natürlich noch das Betriebssystem selbst sowie weitere auf dem Rechner laufenden Programme.

Bei einem dedizierten Mietserver sind Sie jedoch in der Regel nicht in der Lage, spontan beim Provider anzurufen und diesem zu sagen, er soll den Speicher mal eben schnell entsprechend aufrüsten. Um zu verhindern, dass Ihr Server in die Knie geht, limitieren Sie einfach die Anzahl gleichzeitig laufender Prozesse mit der Anweisung MaxClients. Welche Zahl die für Ihren Server passende ist, lässt sich anhand des obigen Rechenbeispiels recht schnell ermitteln. Mittelfristig sollten Sie dennoch bei chronisch mangelndem Hauptspeicher in Ihrem System auf einen performanteren Server umsteigen.

Belastungstest und EKG

Tipps&Tricks für Apache

Fühlen Sie Ihrem Apache-Server doch einmal auf den Zahn und fahren Sie einen Benchmark. Im Verzeichnis bin Ihrer Apache-Installation finden Sie das Benchmark-Tool ab. Mit dem Kommando-Tool führen Sie eine schnelle Performance-Messung Ihres eigenen Webservers durch.

Mit folgendem Kommando weisen die das Performance-Tool an, 1000 Mal die Datei index.html aufzurufen, dabei sollen je zehn Requests parallel aktiv sein.

ab ?n 1000 ?c 10 http://www.example.com/index.html

Der Parameter -h listet Ihnen alle weiteren Argumente auf.

SSL: Zertifikate für Webbrowser

Tipps&Tricks für Apache

Ob Online-Shop oder Internet-Banking ? zahlreiche Webseiten verwenden die SSL-Verschlüsselung. Um den Clients ein Zertifikat zur Verfügung zu stellen, sind nur wenige Schritte nötig.

Es gibt für Zertifikate von Zertifizierungsstellen zwei Formate: pem sowie der. Frühere Netscape-Versionen erwarteten das pem-Format, neuere beide. Beim Internet Explorer verhält es sich umgekehrt. Andere Webbrowser akzeptieren beide Formate.

Mit einem openssl -Kommando können Sie bequem aus einem pem-Zertifikat ein der
-Zertifikat erstellen:

openssl x509 -in cacert.pem \ -outform DER -out cacert.der

Nun fügen Sie noch folgende Zeile in der Datei conf/mime.types der Apache-Installation hinzu:

application/x-x509-ca-cert der pem crt

Nach einem Neustart des Webservers können Sie die Zertifikate auf dem Webserver ablegen. Diese lassen sich dann durch einen Link auf Knopfdruck auf einem Client installieren.

Profi-Tipp: Dynamik auslagern

Tipps&Tricks für Apache

Bei besonders beliebten Webseiten mit zahlreichen dynamischen Elementen lohnt sich das Auslagern komplexer Anfragen an eine zweite Apache-Installation oder einen anderen Rechner.

Mit der zunehmenden Interaktivität von Webseiten steigen zwar auf der einen Seite die Möglichkeiten des Webmasters, auf der anderen Seite zerren die komplexen Seitenabrufe an der Performance eines Webservers. Ein Webmaster eines weltweit agierenden Großunternehmens mit Millionen Seitenabrufen behilft sich in diesem Fall mit mehreren und unter Umständen weltweit verteilten Server-Systemen. Für ein kleines mittelständisches Unternehmen eignet sich diese Lösung eher selten, nicht zuletzt auf finanziellen Gründen. Aber selbst wer lediglich einen dedizierten Webserver sein Eigen nennt, kann die Last bequem innerhalb des Systems aufteilen.

Als Beispiel-Szenario betreiben wir zwei Apache-Webserver auf einem Rechner: Ein Server auf Port 8088 beinhaltet allen Schnickschnack des dynamischen Content-Management-Systems, der andere Server auf Port 80 nur die statischen Inhalte. Sämtliche Anfragen gehen beim leichtgewichtigen Server ein, welcher dann die komplexen dynamischen Aufgaben an die zweite Apache-Installation weitergibt, als wenn dieser selbst ein Client wäre. Die Antworten gibt dann der erste Server an den wirklichen Client des Besuchers weiter. Solange die Site-Definitionen bei beiden Apache-Installationen auf dieselbe Document-Root zeigen, funktioniert diese Methode ohne Probleme. Was sich auf den ersten Blick vielleicht recht kompliziert anhört, lässt sich mit relativ wenigen Handgriffen realisieren.

Mit Hilfe der Rewrite-Regel werden alle Anfragen außer auf Grafiken und auf die Archive an den speziellen Anwendungsserver weitergeleitet. Hierzu fügen Sie am Ende des VirtualHost-Eintrags Ihrer Seite auf dem Server auf Port 80 folgende Zeilen hinzu:

RewriteEngine on
RewriteCond %{Request_URI} !.*\.(jpg|gif|pdf|png|zip|tgz|gz)$
RewriteRule ^/(.*) http://%{HTTP_HOST}:8088/&1 [P]

Wenn Sie auf Ihren Seiten Cookies einsetzen, sollten Sie darauf achten, dass die HTTP-Header bei der Weitergabe entsprechend übersetzt werden:

ProxyPassReverse / http://%{HTTP_HOST}:8088/

Eine weitere praktische Möglichkeit ist, mehrere physikalische Server zur Lastverteilung zu verwenden. Dies ist jedoch nur sinnvoll, wenn diese in einem internen Netz zusammenhängen.

Bei beispielsweise zwei dedizierten Webservern bei einem Webhoster würde eine Weitergabe von dynamischen Anfragen zwischen den zwei dedizierten Rechnern über das Internet die Performance wohl eher bremsen als steigern.

Lesen Sie auch :