Seitenwechsel - vom Internet Information Server zu Apache migrieren

Von der Microsoft-Welt in Open-Source-Gefilde – fast eine Reise in einen anderen Kontinent. InfoWeek zeigt, wie das Unterfangen gelingt.

Artikel erschienen in Swiss IT Magazine 2003/10

     

Ein Internet-Surfer, der drei Adressen besucht, kommt dabei zweimal mit dem Webserver Apache in Kontakt. Dies jedenfalls sagen die Statistiken von Netcraft, welche dem Open-Source-Server einen Marktanteil von 66 Prozent zugestehen. Diese Beliebtheit kommt nicht von ungefähr: Unter Unix und Artverwandten, zu denen auch Linux zählt, ist Apache Standard. Und diese Plattformen sind traditionellerweise weitverbreitet, wenn es um Internet-Server geht. Seine Tauglichkeit hat Apache auf kleinen wie auch grossen Sites millionenfach bewiesen - es sprechen also gute Gründe dafür, diese Software auch auf dem eigenen Internet- oder Intranet-Server einzusetzen.




Was aber nun, wenn der bisherige Auftritt auf Microsoft-Technologien wie ASP und Internet Information Server (IIS) setzt oder FrontPage-Erweiterungen das Leben bequemer machen?


Die erste Begegnung

Der mit Abstand grösste Teil der Apache-Sites wird unter Linux betrieben. Wir werden uns deshalb im folgenden auf diese Paarung konzentrieren. Bei den verschiedenen Linux-Distributionen gehört Apache zur Grundausstattung und findet mit der entsprechenden Installationssoftware den Weg auf die Festplatte. Bei Konfiguration und Betrieb ergeben sich allerdings Unterschiede zwischen den Distributionen. Wir erläutern hier die Einrichtung anhand der drei gängigen Vertreter Red Hat 9, Suse 8.0 und Debian "Woody". Ersterer bringt Apache in der aktuellen Version 2.0 mit, während die anderen beiden auf die immer noch am weitesten verbreitete Ausgabe 1.3 setzen.



Für die meisten der hier beschriebenen Vorgänge werden Root-Rechte auf dem Server benötigt sowie der Zugriff auf eine Shell, also ein textbasiertes Terminal zur Eingabe von Befehlen. Das bedeutet, Abschied zu nehmen von den grafischen Konfigurationswerkzeugen des Internet Information Server (IIS) - ob dies ein Vor- oder Nachteil darstellt, darüber scheiden sich die Geister.




Apache ist grundsätzlich modular aufgebaut. Das heisst, dass die eigentliche Applikation nur die Grundaufgaben beherrscht, während weitergehende Funktionalitäten über dynamisch geladene Module realisiert werden. Dazu zählen etwa die Autorisierung für den Zugriff auf bestimmte Verzeichnisse oder die Scriptsprache PHP. Alle drei Distributionen bringen die üblicherweise benötigten Module gleich mit. Bei Red Hat und Suse werden alle installierten Module beim Start von Apache geladen. Debian gibt sich zurückhaltender, hier müssen die gewünschten Erweiterungen erst in der Konfigurationsdatei auskommentiert werden.



Ob der Webserver auf einem Linux-System bereits installiert ist, lässt sich auf verschiedenen Wegen feststellen. Bei Red Hat und Suse besteht Apache aus mehreren Installationspaketen im RPM-Format. Die folgenden Befehle geben Auskunft darüber, welche Pakete installiert sind:



Unter Suse:

"rpm -qa | grep apache"

Unter Red Hat:

"rpm -qa | grep httpd"



Debian verwendet ein eigenes Paketsystem. Mit dem Befehl "dpkg -l apache*" werden alle Pakete aufgelistet, die zum Webserver gehören, mitsamt der Angabe, ob sie installiert sind.



Falls die benötigten Pakete noch nicht vorhanden sind, muss das jeweilige Installationsprogramm bemüht werden. Aufgrund der grossen Zahl verfügbarer Software empfiehlt es sich bei Suse und Debian, in Yast oder Dselect direkt nach "apache" zu suchen.



Alle Distributionen bieten eine rudimentäre, aber funktionstüchtige Grundkonfiguration des Webservers. Deshalb ist er nach erfolgter Installation startbereit, ein Vorgang, der mit "apachectl start" ausgeführt wird. Der Erfolg dieses Befehls lässt sich überprüfen, indem mit einem Webbrowser die Adresse des Rechners aufgerufen wird. Je nach Netzwerk- und Systemkonfiguration muss dies über die IP-Adresse erfolgen, nämlich dann, wenn der Rechner über keinen Namenseintrag auf einem Domain Name Server verfügt. Bei einer Installation auf einem lokalen Rechner mit grafischer Benutzeroberfläche erfolgt der Aufruf idealerweise mit http://localhost oder alternativ über die IP-Adresse des Rechners.



Im Erfolgsfall zeigt der Browser eine Testseite an. Falls statt dessen eine Fehlermeldung erscheint, muss die Konfiguration angepasst werden, etwa, weil der Zugriff von einem fremden Rechner aus unterbunden wird.




1001 Parameter

Sämtliche Grundeinstellungen für Apache erfolgen über die zentrale Konfigurationsdatei httpd.conf im Textformat. Diese ist bei Suse unter /etc/httpd/ zu finden und bei Debian unter /etc/apache/. Bei Red Hat und Apache 2.0 liegt die Datei noch eine Ebene tiefer, nämlich unter /etc/httpd/conf/.



Öffnet man diese Datei - als Root - in einem Texteditor der Wahl, so gilt es zunächst, über die Länge nicht zu erschrecken. Alle Distributionen versehen die Apache-Konfiguration nämlich mit reichhaltigen Kommentaren und Beispielen, was den Einstieg zwar wesentlich erleichtert, aber die Konfigurationsdatei auch aufbläht und der Übersicht nicht unbedingt dienlich ist. Zeilen, die mit einer Raute ("#") beginnen, betrachtet Apache als Kommentar.




Die Zahl der Einstellungsmöglichkeiten ist schier unüberschaubar und mag auf den ersten Blick verwirrlich erscheinen. Grundsätzlich unterscheidet Apache drei Ebenen in der Konfigurationsdatei: Im ersten Abschnitt werden global gültige Parameter festgelegt, wie beispielsweise die zu ladenden Module oder der Port, über den sich der Server mit einem Browser ansprechen lässt. Der zweite Teil beschäftigt sich mit Einstellungen zum aktuellen Webserver, wie etwa dem Dokumentenverzeichnis für Webseiten. Der dritte und letzte Abschnitt behandelt virtuelle Server und wird bei der Verwendung mehrerer Domains auf dem gleichen Rechner benötigt.



Einen Sonderzug bei der Konfiguration fährt Suse: Der Linux-Distributor hat ein eigenes Konfigurationssystem aufgebaut. Einige grundlegende Einstellungen können hier über die entsprechende Datei namens apache in der zentralen Systemkonfiguration im Verzeichnis /etc/sysconfig vorgenommen werden. Doch immerhin ist das Konfigurationswerkzeug Suseconfig intelligent genug, dass es manuelle Änderungen an httpd.conf erkennt und nicht überschreibt. Die Suse-eigene Variante erleichtert Umsteigern den Einstieg. Fortgeschrittenere Linux-Administratoren werden aber zur manuellen Anpassung der Apache-Konfigurationsdatei greifen.



Obwohl die Standardkonfiguration bei allen Distributionen einen lauffähigen Webserver liefert, bieten sich manuelle Anpassungen der wichtigsten Parameter an. Erste Anlaufstelle ist die Einstellung für das Dokumentenverzeichnis, aus dem Apache die Webseiten liefert. Standardmässig ist hier /var/www/html eingestellt. Dies gilt es sinnvollerweise auf ein Verzeichnis abzuändern, auf das mit einem FTP-Client (oder über ein anderes Netzwerk-Protokoll wie SMB) zugegriffen werden kann. Eine Variante besteht beispielsweise darin, einen eigenen Benutzer für die Betreuung der Webdokumente anzulegen und die Seiten aus dessen Heimverzeichnis zu servieren. Wenn dieser Benutzer "webdesigner" heisst, müsste der Parameter "DocumentRoot" für das Stammverzeichnis folgenden Wert erhalten:



DocumentRoot "/home/webdesigner"



Um Änderungen zu aktivieren, muss der Server jeweils neu gestartet werden. Dies geschieht mit dem Befehl "apachectl restart". Greift man nun mit dem Webbrowser auf den Server zu, erscheint entweder ein Verzeichnis-Listing oder aber die im Verzeichnis vorhandene Startseite. Welches Dokument Apache dabei lädt, wird über den Parameter "DirectoryIndex" angegeben. Eine Mehrfachauswahl ist möglich, üblich sind index.html respektive index.htm. Bei dynamischen Webauftritten können diese Einträge zusätzlich beispielsweise um index.php oder indexcfm ergänzt werden.



Eine ausführliche Beschreibung sämtlicher Parameter liefert die Apache-Website. Sie enthält die komplette Dokumentation sowohl zu Version 1.3 als auch zur aktuellen Ausgabe 2.0.




Konfiguration mit der Maus

Um die vielfältigen Einstellungen von Apache zu verstehen, führt kein Weg an der manuellen Einrichtung mittels Texteditor vorbei. Allerdings gibt es grafische Konfigurationshilfen, welche über die ersten Hürden hinweghelfen können. Red Hat 9 besitzt hierzu ein allerdings sehr rudimentäres Werkzeug namens apacheconf. Falls das System mit einer grafischen Oberfläche eingerichtet wurde, findet sich ein entsprechender Eintrag unter den Systemeinstellungen.
Weiter geht Webmin, ein webbasiertes Konfigurationswerkzeug für Linux und eine grosse Anzahl von Serverdiensten, darunter auch Apache. Dieses nützliche Werkzeug für Konsolen-Ungeübte findet sich unter www.webmin.com.





Umzug der Inhalte

Ist Apache konfiguriert und das Stammverzeichnis an einem sinnvollen Ort untergebracht, kommt der Moment der Datenübernahme. Solange es sich hierbei um statische HTML-Dokumente und Grafiken handelt, besteht dieser Schritt einzig darin, die Dateien in das neue Root-Verzeichnis zu zügeln. Das konkrete Vorgehen hängt von der Konfiguration des Servers ab, der übliche Weg dürfte aber darin bestehen, die Dateien mit einem FTP-Client zu verschieben oder zu kopieren.



Solange die Pfade in den HTML-Dokumenten relativ gesetzt sind müssen keinerlei Anpassungen vorgenommen werden. Apache wie auch IIS verwenden dieselbe Notation, unabhängig von der eingesetzten Plattform. Das heisst, dass Verzeichnisse mit Schrägstrich ("/") getrennt werden.




Mehr Aufwand fällt bei Dokumenten an, welche Scripts beinhalten, also bei dynamisch erzeugten Webseiten. Natürlich ist die Aufgabe umso einfacher, je besser die eingesetzte Technologie unterstützt wird (siehe Kasten "Dynamische Webauftritte mit Apache").



Wird innerhalb eines Scripts auf eine serverseitig gespeicherte Datei zugegriffen, müssen gegebenenfalls die Pfade angepasst werden. Dies hängt von der verwendeten Plattform ab. So benutzt beispielsweise PHP dieselbe Notation wie das zugrundeliegende Betriebssystem. Das heisst, dass unter Windows Verzeichnisse mit einem Backslash ("\") getrennt werden, unter Linux und Unix dagegen mit einem normalen Schrägstrich. Zudem sind in diesem Fall die Pfadangaben normalerweise absolut. Wenn die Webseiten nun in einem anderen Verzeichnis gespeichert sind, müssen auch die Pfade innerhalb der Scripts angepasst werden.




Hilfe, wenn's klemmt

Aufgrund der komplexen Konfiguration eines Apache-Servers ist bei diesem Unterfangen mit Fehlern zu rechnen. Häufigste Ursache, wenn der Server nicht startet, sind falsche Werte für einen Parameter. Aufschluss kann hier die Logdatei liefern, in welcher der Webserver seine Meldungen unterbringt.



Üblicherweise verwendet Apache zwei Logdateien: In der einen werden Fehlermeldungen des Servers selbst abgelegt, in der anderen die einzelnen Zugriffe registriert. Name und Speicherort werden über die zwei Parameter "AccessLog" und "ErrorLog" in httpd.conf festgelegt.




Bei der Fehlersuche ist es hilfreich, das Error-Log in einer zweiten Shell anzuzeigen. Vorausgesetzt, dieses ist mit dem Namen errorlog im Verzeichnis /var/log/httpd gespeichert, geschieht dies unter Linux mit dem Befehl "tail -f /var/log/httpd/errorlog". Zudem empfiehlt es sich, Änderungen an der Konfigurationsdatei httpd.conf auf allfällige Fehleinträge und Tippfehler zu kontrollieren. Der Befehl "apachectl -t" fungiert hierbei gewissermassen als Rechtschreibprüfung.




Aufwand, der sich lohnt

Ein Umstieg vom IIS auf Apache ist nicht in fünf Minuten erledigt. Zu vielfältig sind die Konfigurationsmöglichkeiten, zu komplex kann sich der dynamische Webauftritt gestalten. Aus den eingangs erwähnten Überlegungen lohnt sich ein solcher Schritt in vielen Fällen trotzdem. Zumal er eine grössere Flexibilität mit sich bringt, da Apache nicht an eine bestimmte Plattform gebunden ist.




Diese Vorteile wollen aber erkauft werden, und zwar in Form von zeitlichem Aufwand. Es lohnt sich deshalb, sich vor der Tat mit den grundlegenden Eigenschaften des Open-Source-Webservers vertraut zu machen. Glücklicherweise ist man dabei nicht alleine. Die weite Verbreitung von Apache hat zu einer grossen Zahl an Fachliteratur und noch mehr Anleitungen und Informationen im Internet geführt.


Apache unter Windows

Der Open-Source-Webserver ist auch für die Microsoft-Betriebssysteme verfügbar. Empfehlenswert ist, hierfür eine NT-basierte Version von Windows einzusetzen, also NT, 2000 oder XP. Auf diesen Plattformen agiert Apache als Dienst, der automatisch beim Systemstart ausgeführt werden kann. Da die Versionen 1.x von Apache als weniger stabil gelten als die aktuellen Ausgaben 2.0, empfiehlt sich der Einsatz der neueren Version. Von der Konfiguration her unterscheidet sich der Windows-Vertreter wenig von der Unix/Linux-Variante. Unterhalb des Installationsverzeichnis findet sich das Konfigurationsverzeichnis "Conf", das die übliche Einstellungsdatei httpd.conf enthält.


Dynamische Webauftritte mit Apache

Zum Repertoire des freien Webservers gehört die Unterstützung einer grossen Anzahl an Script- und Programmiersprachen für dynamische Webseiten. Traditionellerweise zählen dazu auch die eher für CGIs verwendeten Sprachen Perl und Python. Am obersten Ende der Beliebtheitsskala steht aber sicher die freie Scriptsprache PHP, die als Alternative zu Macromedias ColdFusion oder den Active Server Pages (ASP) von Microsoft gilt. Die Integration von PHP geschieht normalerweise über das entsprechende Apache-Modul "mod_php", das zum Standardumfang der Linux-Distributionen gehört.



Für aufwendigere Projekte, welche zudem Schnittstellen zu Business-Applikationen erfordern, empfiehlt sich der Einsatz eines Java-Applikationsservers wie etwa Tomcat. Dieser liegt als Open Source vor und wird, wie der Webserver selbst, unter der Ägide der Apache Group entwickelt. Bei Tomcat handelt es sich um die Implementation von Suns serverseitigen Java-Technologien JavaServlets und Java Server Pages.




Einen relativ komfortablen, wenn auch mit Kosten verbundenen Umstieg bietet Macromedias ColdFusion, steht die Serversoftware doch sowohl unter Windows als auch unter Linux für Apache zur Verfügung. Bestehende dynamische Webauftritte können so nicht nur zwischen verschiedenen Webservern, sondern auch über Plattformgrenzen hinweg portiert werden.




Apache spricht Microsoft

Unter dem Internet Information Server dürfte ASP die Scriptsprache der Wahl sein. Projekte, welche auf diesem Weg realisiert wurden, lassen sich auf zwei Arten adaptieren: Der Entwickler Mike Kohn hat ein Script entwickelt, das ASP-Code nach PHP konvertiert (http://asp2php.naken.cc). Dieses ist allerdings unvollständig und eignet sich deshalb nur für kleinere Projekte. Um eine manuelle Anpassung des Codes oder eine teilweise Neuentwicklung dürfte man auf diesem Weg nicht herumkommen.



Etwas komfortabler gibt sich Apache::ASP. Hierbei handelt es sich um eine in Perl realisierte ASP-Umgebung für Apache. Die freie Software lässt sich sowohl unter Windows als auch unter Linux/Unix einsetzen. Voraussetzungen sind Perl sowie das entsprechende Apache-Modul "mod_perl". Aber auch hier sind ausgiebige Tests nötig, um die Funktionstüchtigkeit sicherzustellen.






Schwieriger gestaltet sich die Situation, wenn eine Integration zwischen der Webdesign-Software FrontPage und dem Webserver gewünscht wird. Über die sogenannten Frontpage Extensions lässt sich zwar Apache auf die Unterstützung der Microsoft-eigenen Zusätze trimmen, die beispielsweise die Teamarbeit erleichtern sollen. Die Erweiterungen selbst stammen von Microsoft und stehen auf deren Website zum Download bereit. Doch die Unterstützung wirkt halbherzig: Zum einen bedingen sie, dass der Apache-Sourcecode gepacht wird, zum anderen funktionieren die Frontpage Extensions nur gerade mit der Version 1.3.19. Zudem gelten die Zusätze als potentielles Sicherheitsrisiko, da sie mit Root-Rechten ausgeführt werden. Demzufolge kann dieser Weg nur als Notlösung gelten.




Datenbank-Anbindungen

Dynamische Webauftritte speisen sich oftmals mit Inhalten aus einer Datenbank. Ein Wechsel vom Internet Information Server zu Apache wirkt sich hier nur indirekt aus, ist doch für die Anbindung nicht der Webserver, sondern die gewählte Script- oder Programmiersprache zuständig. Die gängigen Technologien - dazu zählt auch PHP - verstehen sich mit der Microsoft-Datenbank Access wie auch mit dem MS SQL Server.
Anders gestaltet sich die Lage, wenn gleichzeitig ein Wechsel der Serverplattform auf Unix oder Linux vollzogen wird. Sofern kein dedizierter Datenbankserver zum Einsatz gelangt, bedeutet dies ein Umstieg auf ein anderes Datenbankprodukt. Dieser Schritt ist mit zusätzlichem Aufwand verbunden, unabhängig davon, für welche Lösung man sich entscheidet. Der Aufwand für die Portierung dynamischer Webauftritte kann auf eine einfache Formel gebracht werden: Je weniger Microsoft-Technologien im Spiel sind, desto geringer gestaltet sich die Umstellung.


Buchtips

Apache - Das umfassende Referenzwerk

Die deutsche Übersetzung von "Apache: The Definitive Guide" aus dem O'Reilly-Verlag hilft Systemadministratoren bei der Installation und Konfiguration des Webservers. Behandelt werden sowohl die Linux- als auch die Windows-Version, allerdings nur bis zur Ausgabe 1.3. Die englische Originalausgabe ist diesbezüglich aktueller und umfasst in der neusten Auflage auch Apache 2.0.


ISBN 3-89721-127-0, Fr. 64.90



Professional Apache 2.0

An erfahrenere Apache-Administratoren, die zudem des Englischen mächtig sind, richtet sich dieses Buch aus dem Wrox-Verlag. Es geht auf fast alle Aspekte des Webservers ein und behandelt auch Themen wie Lastverteilung oder die Einrichtung des Java-Applikationsservers Tomcat.

ISBN 1-86100-722-1, Fr. 94.-



Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Vor wem mussten die sieben Geisslein aufpassen?
GOLD SPONSOREN
SPONSOREN & PARTNER