# Upgrade von 1.3 auf 2.0

Dieses Dokument dient der Unterstützung beim Upgrade. Es enthält die entscheidenden Informationen für bisherige Apache-Nutzer. Diese sind als kurze Anmerkungen gedacht. Weitere Informationen finden Sie entweder unter Neue Funktionen oder in den `src/CHANGES`-Dateien.

Übersicht der neuen Funktionen in Apache 2.0

# Änderungen der Konfiguration bei der Kompilierung

- Der Apache benutzt jetzt ein `autoconf`- und `libtool`-System zur Konfiguration des Erstellungsverfahrens. Die Verwendung dieses Systems ist ähnlich, aber nicht identisch mit dem APACI-System des Apache 1.3.
- Zusätzlich zu der üblichen Auswahl von Modulen, die kompiliert werden sollen, wurde der Hauptteil der Request-Verarbeitung im Apache 2.0 in die Multi-Processing-Module (MPMs) verschoben.

# Änderungen der Laufzeit-Konfiguration

- Viele Anweisungen aus dem Serverkern des Apache 1.3 sind jetzt in den MPMs enthalten. Wenn Sie ein Serververhalten wünschen, das demjenigen des Apache 1.3 möglichst ähnlich ist, sollten Sie das prefork-MPM auswählen. Andere MPMs verwenden abweichende Anweisungen für die Prozess-Erstellung und Request-Verarbeitung.
- Das Proxy-Modul wurde umgearbeitet, um es auf den Stand von HTTP/1.1 zu bringen. Eine der bedeutendsten Änderungen ist die Platzierung der Proxy-Zugriffskontrolle innerhalb eines Proxy-Blocks, statt innerhalb eines `<Directory proxy:>`-Blocks.
- Die Behandlung von `PATH_INFO` (hinter dem tatsächlichen Dateinamen angefügte Pfadangaben) wurde für einige Module geändert. Module, die bisher als Handler implementiert waren, jetzt aber als Filter implementiert sind, akzeptieren möglicherweise keine Requests mit `PATH_INFO` mehr. Filter wie INCLUDES oder PHP sind gleich oben im Core-Handler implementiert und weisen deshalb Requests mit `PATH_INFO` ab. Sie können die AcceptPathInfo-Direktive verwenden, um den Core-Handler zu zwingen, Requests mit `PATH_INFO` zu akzeptieren, und dadurch die Fähigkeit wiederherstellen, `PATH_INFO` in Server Side Includes zu benutzen.
- Die CacheNegotiatedDocs-Direktive hat jetzt das Argument an (`on`) oder aus (`off`). Die vorhandenen Anweisungen CacheNegotiatedDocs sollten durch `CacheNegotiatedDocs on` ersetzt werden.
- Die ErrorDocument-Direktive verwendet kein Anführungszeichen mehr am Anfang des Arguments, um eine Textnachricht anzuzeigen. Stattdessen sollten Sie die Nachricht in doppelte Anführungszeichen einschließen. Zum Beispiel sollten existierende Angaben wie

  ErrorDocument 403 "Eine Nachricht
  durch

  ErrorDocument 403 "Eine Nachricht"

  ersetzt werden. Solange das zweite Argument kein gültiger URL oder Pfadname ist, wird es als Textnachricht behandelt.
- Die Direktiven `AccessConfig` und `ResourceConfig` sind entfallen. Diese Direktiven können durch die Include-Direktive ersetzt werden, die eine äquivalente Funktionalität besitzt. Wenn Sie die Defaultwerte dieser Direktiven verwendet haben, ohne sie in die Konfigurationsdateien einzufügen, müssen Sie möglicherweise `Include conf/access.conf` und `Include conf/srm.conf` zu Ihrer `httpd.conf` hinzufügen. Um sicherzustellen, daß der Apache die Konfigurationsdateien in der gleichen Reihenfolge liest, wie sie von den älteren Direktiven impliziert wurde, sollten die Include-Direktiven ans Ende der `httpd.conf` gestellt werden, wobei die Direktive für `srm.conf` derjenigen für `access.conf` vorangeht.
- Die Direktiven `BindAddress` und `Port` sind entfallen. Eine äquivalente Funktionalität wird von der flexibleren Direktive Listen bereitgestellt.
- Im Apache 1.3 wurde die `Port`-Direktive außerdem dazu verwendet, die Portnummer für selbstreferenzierende URLs festzulegen. Die neue ServerName-Syntax stellt das Apache-2.0-Äquivalent dar: sie wurde dahingehend verändert, sowohl den Hostnamen als auch die Portnummer für selbstreferenzierende URLs in einer Direktive angeben zu können.
- Die `ServerType`-Direktive entfällt. Die Methode zum Bedienen der Requests wird nun durch die Auswahl des MPM ermittelt. Derzeit ist kein MPM dafür bestimmt, von inetd gestartet zu werden.
- Die Module `mod_log_agent` und `mod_log_referer`, welche die Direktiven `AgentLog`, `RefererLog` und `RefererIgnore` bereitgestellt hatten, wurden entfernt. Durch Verwendung der Direktive CustomLog aus mod_log_config sind die Agent- und Refererlogs auch weiterhin verfügbar.
- Die Direktiven `AddModule` und `ClearModuleList` sind entfallen. Diese Direktiven wurden benutzt, um sicherzustellen, daß die Module in der richtigen Reihenfolge aktiviert werden können. Die neue Apache 2.0 API erlaubt es Modulen, ihre Reihenfolge explizit anzugeben, und macht diese Direktiven damit überflüssig.
- Die Direktive `FancyIndexing` wurde entfernt. Die gleiche Funktionalität ist nun mit der Option `FancyIndexing` der Direktive IndexOptions verfügbar.
- Die von mod_negotiation bereitgestellte Content-Negotiation-Technik MultiViews führt nun eine strengere Dateierkennung durch. Es wird ausschließlich unter den aushandelbaren Dateien gewählt. Das bisherige Verhalten kann jedoch mit der Direktive MultiviewsMatch wiederhergestellt werden.

# Sonstige Änderungen

- Das Modul mod_auth_digest, das im Apache 1.3 experimentellen Status hatte, ist nun ein Standardmodul.
- Das Modul `mod_mmap_static`, das im Apache 1.3 experimentellen Status hatte, wurde durch das Modul mod_file_cache ersetzt.
- Die Distribution wurde komplett reorganisiert und enthält kein unabhängiges `src`-Verzeichnis mehr. Stattdessen wurden die Quellcodes logisch unterhalb des Hauptverzeichnisses der Distribution angeordnet. Installationen des kompilierten Servers sollten in ein separates Verzeichnis erfolgen.

# Module von Drittanbietern

An der API des Apache 2.0 wurden umfassende Änderungen vorgenommen. Bestehende Module, die für die Apache 1.3 API entwickelt wurden, werden nicht ohne Modifikationen mit der Version 2.0 des Apache zusammenarbeiten. Details sind in der Dokumentation für Entwickler beschrieben.