Der Apache HTTP Web- Server Seminarvortrag von Philip Staffetius Betreuer: Prof. Dr. rer. nat. Hoffmann, Jobst
Inhaltsverzeichnis
Einleitung Eigenschaften: - am häufigsten benutzter Webserver - Open Source Projekt - gehört der ASF (Apache Software Foundation) an - Nachfolger des NSCA-Webservers (National Center for Supercomputing Applications), - derzeit Unterstützung der Versionen 1.3.x, 2.0.x und 2.2.x - Name angelehnt an dem nordamerikanischen Indianerstamm der Apachen (und den Ausdruck A PAtCHy Server )
Einleitung Quelle: www.netcraft.com
Geschichte - nach Abgang von Rob McCool Stillstand der Entwicklung an dem NSCA-Webserver, 1994 - selbstständige Erweiterungen und Bug-Fixes von einzelnen Entwicklern - Gründung der Apache Group (Mitglieder: Brian Behlendorf, Roy T. Fielding, Rob Hartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert S. Thau und Andrew Wilson). - Veröffentlichung der Version 0.6.2 im April 1995
Geschichte - Veröffentlichung der Version 1.0 im Dezember 1995 - Gründung der Apache Software Foundation (ASF) 1999 - Einstufung der Version 1.3 für Windows System als experimentell - Entwicklungsreihe 2.0.x wurde mit der Version 2.0.35 als stabil freigegeben, April 2002 - Hauptziel bleibt den Apache Server unabhängiger vom Betriebssystem zu gestalten
Architektur - starke Unterschiede bei der Windows- und Unix-Versionen des Apache 1.3 - neue Architektur bei dem Apache 2.0 - kaum Unterschiede zwischen dem Apache 2.0 und Apache 2.2
Apache 1.3 unter Unix-Systemen Startmöglichkeiten durch: - inetd - standalone
Start unter inetd - startet den Apache-Webserver als Arbeitsprozess unter dem inetd-dämon. - Start des Server-Programm für den jeweiligen TCP-/UDP- Port der TCP-/UDP-Anfragen Vorteil: - Entlastung durch mehrere Netzwerkdienste Nachteil: - keine Schonung der Ressourcen
Start mit standalone Verwendung des Pre-Forking Modells: - Vaterprozess (Apache-Binaries) liest die Konfigurationsdatei, öffnet die Logdateien und bindet sich am TCP-Port - öffnet zur Bearbeitung von HTTP-Anfragen Kindprozesse durch das Forking und beendet diese - Verwendung des ScoreBoards Eigenschaften des ScoreBoars: - Haltung im Shared Memory Bereich - Alternative als Datei im Filesystem
Start mit standalone Kontrollfunktion des Apache-Servers durch die Signale SIGTERM, SIGHUP und SIGUSR1: TERM-Signal: - Beenden Prozesse - Bearbeitung von Anfragen wird abgebrochen HUP-Signal: - Neustart der Kindprozesse SIGUSR1-Signal: - Neustart der Kindprozesse wie beim HUP- Signal -Kindprozesse beenden sich erst nach der Bearbeitung einer Anfrage
Apache 1.3 unter Windows Pre-Forking nicht möglich, also: - Verwendung eines Steuerprozess und ein Bearbeitungsprozess - Bearbeitung der Anfragen in Threads - Start durch einen angemeldet Benutzer (Konsole oder als Windows-Service) - mehrere Instanzen möglich Konfigurationsoptionen: - MaxRequestsPerChild - ThreadsPerChild
Apache 2.0 - Verwendung der Apache Portable Runtime (APR) (Bibliothek, die Trennung von der Betriebssystemebene ermöglicht und zudem grundlegenden Funktionen eines Betriebssystems anbietet) - Betriebssystemabhängig bleiben aber: - die Implementierung der APR - Multi Processing Modules (MPMs) - MPMs kümmern sich um die Verarbeitung der HTTP- Anfragen durch "Aufspaltung" der Prozesse und der Threads (Angabe der MPMs während der Konfiguration wichtig)
Multi Processing Modules unter Apache 2.0 netware MPM: - besitzt einen Prozess und einen Haupt-Thread - Haupt-Thread startet Worker-Threads, die wiederum die HTTP-Anfragen bearbeiten. Konfigurationsoptionen: - StartThreads - MinSpareThreads - MaxSpareThreads
Multi Processing Modules unter Apache 2.0 winnt MPM: entspricht dem Apache 1.3 unter Windows prefork MPM: entspricht Apache 1.3 unter Unix
Multi Processing Modules unter Apache 2.0 perchild MPM: - feste Anzahl von Prozessen - Prozesse erhöhen oder verringern die Anzahl von Threads, die HTTP-Anfragen bearbeiten - Sicherheitseinstellungen können pro Prozess variieren Konfigurationsoptionen - NumServer - ChildPerUserId - AssignUserId - StartThreads - MinSpareThreads - MaxSpareThreads - MaxThreadsPerChild
Multi Processing Modules unter Apache 2.0 worker MPM: - variable Anzahl von Prozessen - Prozesse besitzen eine feste Anzahl von Threads - weniger Ressourcen als beim prefork MPM nötig Konfigurationsoptionen: - ThreadsPerChild - MaxClients - MinSpareThreads - MaxSpareThreads
Konfigurationsdateien - httpd.conf - srm.conf * - access.conf * * ab Version 2.0 nicht mehr vorhanden, da nur Platzhalter - Voreingestelltes Verzeichnis: conf (unter dem sogenannten ServerRoot-Verzeichnis) - Standort abhängig von der jeweiligen Installation des Apache-Webservers Beispiele: - /usr/local/apache oder /usr/local/httpd unter Unix - c:\programme\apache Group\Apache unter Windows - Im Falle eines Verzeichnisses anstelle einer Datei: - Einlesen aller Dateien des Verzeichnisses - Verwendung als Konfigurationsdateien
Konfigurationsdateien Zur Konfiguration von modulspezifischen Optionen werden Befehle verwendet Gliederung in den Bereichen betreffend - des Verhaltens des gesamten Webservers betreffen - des Verhaltens der Haupt-Website konfiguriert * - der Konfiguration der einzelnen virtuellen Hosts * * besitzen die gleichen Kommandos
Kommando-Einschränkungen Sinn von Kommando-Einschränkungen: - Einflussbereich einer Anweisung festlegen - Beschränkung hinsichtlich der Anfragen bestimmter IP- Adressen oder Hostnamen Mögliche Einschränkungen: - <Directory > </Directory >, <DirectoryMatch> </DirectoryMatch> (Betrifft Wirksamkeit der enthaltenen Anweisungen) - <Files> </Files>, <FilesMatch> </FilesMatch> (Betrifft die Wirksamkeit bestimmter Dateien) - <Location> </Location>, <LocationMatch> </LocationMatch> (Betrifft die Antworten zu bestimmten URLs)
Konfigurationsdateien htaccess.conf - können wie die zentrale Konfigurationsdatei httpd.conf und dem Konfigurationsverzeichnis geändert werden - werden im Gegensatz zu httpd.conf dynamisch eingelesen (Änderungen werden sofort wirksam) - können von jedem Benutzer angelegt werden (und dadurch Administrator behindern)
Modulmechanismus - Elementarer Aspekt des Apache-Servers Neuerungen Apache 2.0: - Module können jederzeit aktiviert werden - selbstständige Aktivierung während der Laufzeit drei Kategorien: - Base Module - Extension Module - Experimental Module
Funktionsweise - URL in einem Dateinamen umformen - Authentisierungsüberprüfung - Überprüfung der Zugriffsberechtigung - Überprüfung der MIME-Typen des jeweiligen Dateinamen - Erstellung und Sendung der Antwort an den Webclient - Loggen des Requests
Funktionsweise - Erstellung der Antwort an den Client durch einen Handler Handler der Standard-Einstellung: - default-handler - send-as-is - cgi.script - imap-file - server-info - server-status -type-map -server-parsed
Funktionsweise - Wahl des Handlers abhängig von einigen Faktoren Mögliche Verwendungen eines Handlers: - Bindung an der Dateiendung - Setzung des Handlers an eine bestimmte Umgebung - Definierung von CGI-Skripten - Alternative seit der Version 2.0: Filter
Unterstützungsprogramme Mögliche Unterstützungsprogramme: - apxs - apachectl - ab - htdigest - htpasswd - dbmmanage - logresolve - rotatelogs - log_server_status - split-logs - suexec - Einsetzbar neben den Modulen und dem eigentlichem Webserver httpd
Schnittstellen und Verbindungen Wichtig: - ein bestehendes Netz - Zugriff auf einer korrekten Uhrzeitangabe - eventuell auch eine DNS-Anbindung
Erweiterungsmöglichkeiten - Apache besitzt mehrere Möglichkeiten mit externen Einheiten zu kommunizieren Beispiele: - auf die CGI-Schnittstelle zugreifen - den MIME-Handler installieren - auf die Programmierschnittstelle (API) zugreifen - die ISAPI Schnittstelle (Internet Server API) verwenden (unter Windows) - Apache-Server als Basis für eigene Entwicklungen und Erweiterungen nutzen