<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.de.xsl"?>
<!-- English Revision: 170636:344485 (outdated) -->

<!--
 Copyright 2002-2005 The Apache Software Foundation or its licensors,
                     as applicable.

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<manualpage metafile="upgrading.xml.meta">

<title>Upgrade von 2.0 auf 2.1</title>

<summary>
  <p>Dieses Dokument dient der Unterst&#252;tzung beim Upgrade. Es
    enth&#228;lt die entscheidenden Informationen f&#252;r bisherige
    Apache-Nutzer. Diese sind als kurze Anmerkungen
    gedacht. Weitere Informationen finden Sie entweder unter
    <a href="new_features_2_2.html">Neue Funktionen</a> oder in
    den <code>src/CHANGES</code>-Dateien.</p>

  <p>Dieses Dokument beschreibt lediglich die &Auml;nderungen von Version
    2.2 gegen&uuml;ber Version 2.0. Wenn Sie ein Upgrade von Version 1.3
    durchf&uuml;hren, sollten Sie auch <a
    href="http://httpd.apache.org/docs/2.0/upgrading.html">Upgrade von 1.3
    auf 2.0</a> zu Rate ziehen.</p>
</summary>
<seealso><a href="new_features_2_0.html">&Uuml;bersicht der neuen Funktionen
  in Apache 2.0</a></seealso>

  <section id="compile-time">
    <title>&#196;nderungen der Konfiguration bei der Kompilierung</title>

  </section>

  <section id="run-time">
    <title>&#196;nderungen der Laufzeit-Konfiguration</title>

    <ul>
      <li>Die mit dem Apache HTTP Server ausgelieferte Konfigurationsdatei
        <code>httpd.conf</code> wurde stark vereinfacht, indem alle au&szlig;er
        den unbedingt notwendigen Konfigurationseinstellungen entfernt wurden.
        Im <code>conf/extra/</code>-Verzeichnis Ihrer Installation finden Sie
        eine Reihe von Konfigurationsbeispielen f&uuml;r erweiterte Funktionen.
      </li>

      <li>Die <program>apachectl</program>-Option <code>startssl</code> gibt es
        nicht mehr. Um SSL-Unterst&uuml;tzung zu aktivieren m&uuml;ssen Sie die
        <code>httpd.conf</code> editieren und die entsprechenden
        <module>mod_ssl</module>-Anweisungen einf&uuml;gen und
        anschlie&szlig;end den Server mit <code>apachectl start</code> starten.
        Eine Beispielkonfiguration zum Aktivieren von <module>mod_ssl</module>
        ist in <code>conf/extra/httpd-ssl.conf</code> enthalten.
      </li>

      <li>Die Voreinstellung von <directive
        module="core">UseCanonicalName</directive> ist jetzt <code>Off</code>.
        Wenn diese Anweisung nicht in Ihrer Konfigurationsdatei enthalten ist,
        k&ouml;nnen Sie <code>UseCanonicalName On</code> einf&uuml;gen, um das
        bisherige Verhalten beizubehalten.
      </li>

      <li>Das Modul <module>mod_userdir</module> reagiert nicht l&auml;nger auf
        Anfragen, solange nicht in der Konfigurationsdatei eine <directive
        module="mod_userdir">UserDir</directive>-Anweisung enthalten ist, die
        einen Verzeichnisnamen angibt. F&uuml;gen Sie Ihrer Konfigurationsdatei
        die Anweisung <code>UserDir public_html</code> hinzu, um das
        bisherige Verhalten wiederherzustellen.
      </li>
    </ul>
  </section>

  <section id="misc">
    <title>Sonstige &#196;nderungen</title>

  </section>

  <section id="third-party">
    <title>Module von Drittanbietern</title>

  </section>
</manualpage>
