Problem:
Gerade Server-Admin-Neulinge wollen immer das Neueste und Aktuellste. Das dies nicht immer das Beste ist, ist häufig schwierig und verständlich zu erklären.
Daher hier mal ein Ansatz zum Thema Apache:
Entstehungsgeschichte:
Zuerst war der Unix-Webserver httpd der NCSA (National Center for Super Computing Applications). Er galt nach gewisser Zeit als der Beste und Schnellste.
Als bei er NCSA die Entwicklung stockte bzw. eingestellt wurde, haben sich immer mehr Entwickler zusammengefunden und Patches dafür geschrieben. So kam es auch nach der Abspaltung von der NCSA zu dem Namen a pa(t)chy (= Flickwerk). Laut offizieller Darstellung der heutigen Apache Group ist der Name den amerikanischen Ureinwohnern gewidmet.
Im Dezember 1995 wurde die erste vollständig neue geschriebene Version 1 veröffentlicht. Die aktuelle Version lautet zwar 1.3.37 aber meistens wird mit der 1er Version eine beliebige Version der 1.3-Reihe bezeichnet. Meistens hängt es davon ab, ob der jeweilige Distributor ein passendes Paket bereit stellt und/oder der Administrator regelmässige Updates einspielt.
Der Apache-Webserver wurde schnell einer der verbreitetsten Webservern. Der Grund liegt vorallem an der Modularität. So konnte man viele Optimierungen an die entsprechende Hardware vornehmen. Damit war der Apache überwiegend der einzige Webserver der die volle Funktionalität darstellt. Und er stellte damit z.T. über 90% aller installierten Webserver.
Die im Jahre 1999 gestartete Neuentwickelung der Version 2 (auch als Apache2 benannt) hatte einige Verbesserungen und baute auf noch mehr Modularität. Zwei wesentliche Änderungen sind vorallem für den Erfolg dieser Version zuständig:
a) Verschiedene Speichermodelle (MPM's) wurden erarbeitet und Implementiert.
b) Vorher als standard im Apache-Kern implementiert Funktionen wurden als Modul ausgegliedert.
Vergleich:
Wir fangen mit den Speichermodellen (MPM = Multiprocessing-Module) an:
Die beiden beliebtesten/bekanntesten sind:
MPM-Prefork
Dieses Speichermodell ist der 1er-Version des Apache abgeschaut. Es handelt sich wahrscheinlich um das verbreitetste. Allein wegen dem Nachteil des PHP-Moduls. (siehe Worker-MPM)MPM-Worker
Das Worker-MPM benutzt ein Multithreaded Speichermodell. Größter Nachteil: die eingebundenen Module müssen eine entsprechende Multithread-Fähigkeit haben. Typisches Beispiel: PHP.mod_phpist es nicht.
Modularität
Hier hat die 2er-Version natürlich seine Nase vorn. Man kann den Apache bis auf ein Minimum reduzieren um den Speicherverbrauch zu minimieren. Auf der anderen Seite sind gewisse Abhängigkeiten gegeben und es ist recht schwierig wirklich durchzusteigen, welche Module gebraucht werden und welche nicht.
Die wesentlichen ausgegliederten Module sind z.B. die Filter-Module. In Version 1 kann man keine Input- oder Output-Filter setzten. Mit Apache2 ist dies relativ simpel und sogar auch mit Scripten möglich.
Geschwindigkeit
Angeblich ist der 2er deutlich schneller als sein alter Kollege. Der Hacken liegt aber im Detail. Ein mit unnötigen Modulen aufgeblasener Apache2 hat viele Module die pro Request zu durchlaufen, die somit die Performance bremsen.
Fazit:
Wann soll man also zu welcher Version greifen und sollte man einen Update auf Apache2 erzwingen obwohl der Distributor kein passendes Paket anbietet?
Diese Frage ist schwer zu beantworten denn es geht immer darum was man machen will. Kleinere Projekte auf kleinen Servern kommen mit beiden Versionen gut aus. Sobald man Projekte mit vielen Zugriffen hat, sollte man auf einen optimierten Apache2 zurück greifen.
Die std. Einstellungen der Apache-Module ist bei den meisten Distributionen absolut überladen. Eine Entschlackung tut meistens not sobald der Speicher knapp wird. Auch das tuning des Apache sollte eine gewisse Beachtung finden.
Weiterführende Links:
- The Apache HTTP Server Projekt
- Artikel bei Wikipedia
