<?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: 1.18 -->
+<!-- English revision: 1.24 -->
<!--
Copyright 2002-2004 The Apache Software Foundation
<code>libtool</code> und <code>autoconf</code>, um eine Umgebung zu
schaffen, die der vieler anderer Open Source Projekte ähnlich
sieht.</p>
+
+ <p>Wenn Sie von einer Unterversion auf die nächste aktualisieren (z.B. von
+ 2.0.50 auf 2.0.51), springen Sie bitte zum Abschnitt <a
+ href="#upgrading">Upgrade</a>.</p>
</summary>
<seealso><a href="invoking.html">Apache starten</a></seealso>
<section id="overview"><title>Überblick für die Ungeduldigen</title>
<table>
+ <columnspec><column width=".13"/><column width=".80"/></columnspec>
<tr>
<td><a href="#download">Download</a></td>
- <td><code>$ lynx
- http://www.apache.org/dist/httpd/httpd-2_1_<em>NN</em>.tar.gz</code>
+ <td><code>$ lynx http://httpd.apache.org/download.cgi</code>
</td>
</tr>
<dd>Suchverzeichnisse für Header-Dateien
("<code>-I<em>Verzeichnis</em></code>").</dd>
- <dt><code>TARGET=...</code> [Default: <code>apache</code>]</dt>
+ <dt><code>TARGET=...</code> [Default: <code>httpd</code>]</dt>
<dd>Name der lauffähigen Datei, die erstellt wird.</dd>
<example>$ <em>PREFIX</em>/bin/apachectl stop</example>
</section>
+<section id="upgrading"><title>Upgrade</title>
+
+ <p>Der erste Schritt beim Aktualisieren besteht darin, die
+ Versionsankündigung sowie die <code>CHANGES</code>-Datei in der
+ Quelltextdistribution zu lesen, um Änderungen zu finden, die Ihr
+ System möglicherweise betreffen. Wenn Sie einen größeren
+ Versionssprung durchführen (z.B. vom 1.3 auf 2.0 oder von 2.0 auf
+ 2.2), wird es wahrscheinlich auch größere Unterschiede in der
+ Kompilier- und Laufzeitkonfiguration geben, die manuelle Nacharbeiten
+ erfordern. Außerdem müssen alle Module aktualisiert
+ werden, um den Änderungen der Modul-API gerecht zu werden.</p>
+
+ <p>Die Aktualisierung einer Unterversion auf eine andere (z.B. von 2.0.55
+ auf 2.0.57) ist einfacher. <code>make install</code> überschreibt
+ keine der bereits existierenden Dokumente, Log- und Konfigurationsdateien.
+ Ausserdem bemühen sich die Entwickler, inkompatible Änderungen
+ der <code>configure</code>-Optionen, der Laufzeitkonfiguration sowie der
+ Modul-API zu vermeiden. In den meisten Fällen sollten Sie in der
+ Lage sein, den gleichen <code>configure</code>-Befehl, die gleiche
+ Konfiguration und die gleichen Module wieder zu verwenden. (Das gilt erst
+ seit Version 2.0.41 -- frühere Versionen enthielten noch inkompatible
+ Änderungen).</p>
+
+ <p>Wenn Sie den Quellcode von Ihrer letzten Installation aufgehoben haben,
+ ist ein Upgrade sogar noch einfacher. Die Datei <code>config.nice</code> im
+ Wurzelverzeichnis des alten Quelltextbaums enthält den genauen
+ <code>configure</code>-Befehl, der verwendet wurde, um den Quellcode
+ zu konfigurieren. Um jetzt von einer Version auf die nächste zu
+ aktualisieren, kopieren Sie einfach die <code>config.nice</code> in das
+ Verzeichnis der neuen Version, passen sie bei Bedarf an, und
+ führen Sie sie aus:</p>
+
+ <example>
+ $ ./config.nice<br />
+ $ make<br />
+ $ make install<br />
+ $ <var>PREFIX</var>/bin/apachectl stop<br />
+ $ <var>PREFIX</var>/bin/apachectl start<br />
+ </example>
+
+ <note type="warning">Sie sollten jede neue Version immer in Ihrer Umgebung
+ testen, bevor Sie sie produktiv schalten. Beispielsweise können Sie
+ die neue Version neben der alten installieren, indem Sie ein anderes
+ <code>--prefix</code> und einen anderen Port wählen (durch Anpassen der
+ <directive module="mpm_common">Listen</directive>-Direktive). So
+ können Sie auf eventuelle Inkompatibilitäten testen, bevor Sie
+ endgültig die neue Version verwenden.</note>
+</section>
+
</manualpage>
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.de.xsl"?>
-<!-- English revision: 1.11 -->
+<!-- English revision: 1.17 -->
<!--
Copyright 2003-2004 The Apache Software Foundation
und Ports</a></seealso>
<section id="how-it-works"><title>Arbeitsweise</title>
- <p>Jeder Prozess besitzt eine feste Anzahl von Threads. Um die Last
- zu bewältigen, passt sich der Server an, indem er die
- Anzahl der Prozesse erhöht oder verringert.</p>
-
- <p>Ein einzelner Steuerprozess ist für den Start der
- Kindprozesse verantwortlich. Jeder Kindprozess erstellt eine
- feste Anzahl von Threads, wie durch die <directive
+ <p>Ein einzelner Steuerprozess (der Elternprozess) ist für den
+ Start der Kindprozesse verantwortlich. Jeder Kindprozess erstellt eine
+ feste Anzahl von Server-Threads, wie durch die <directive
module="mpm_common">ThreadsPerChild</directive>-Direktive
- angegeben. Der einzelne Thread lauscht dann auf Verbindungen und
- bedient sie, sobald sie eintreffen.</p>
+ angegeben, sowie einen "Listener-Thread", der auf Verbindungen wartet und
+ diese an einen Server-Thread zur Bearbeitung weiterreicht, sobald sie
+ eintreffen.</p>
<p>Der Apache versucht immer, einen Vorrat von <dfn>freien</dfn> oder
unbeschäftigten Threads zu verwalten, die zur Bedienung
maximale Anzahl Clients, die gleichzeitig bedient werden kann (d.h.
die maximale Gesamtzahl der Threads in allen Prozessen), wird mit der
Direktive <directive module="mpm_common">MaxClients</directive>
- festgelegt, während die maximale Anzahl Prozesse, die gestartet
- werden kann, von der Direktive <directive
- module="mpm_common">ServerLimit</directive> bestimmt wird. <directive
- module="mpm_common">ServerLimit</directive> multipliziert mit <directive
- module="mpm_common">ThreadsPerChild</directive> muss größer
- oder gleich <directive module="mpm_common">MaxClients</directive>
- sein.</p>
+ festgelegt. Die maximale Anzahl der aktiven Kindprozesse ergibt sich aus
+ <directive module="mpm_common">MaxClients</directive> dividiert durch
+ <directive module="mpm_common">ThreadsPerChild</directive>.</p>
+
+ <p>Zwei Direktiven legen harte Limits für die Anzahl der aktiven
+ Kindprozesse fest und können nur geändert werden, indem der Server
+ komplett gestoppt und dann wieder neu gestartet wird. <directive
+ module="mpm_common">ServerLimit</directive> stellt die obere Grenze für
+ die Anzahl der aktiven Kindprozesse dar und muss größer oder
+ gleich dem Quotienten aus <directive
+ module="mpm_common">MaxClients</directive> und <directive
+ module="mpm_common">ThreadsPerChild</directive> sein. <directive
+ module="mpm_common">ThreadLimit</directive> ist die obere Grenze für
+ die Anzahl der Server-Threads und muss größer oder gleich
+ <directive module="mpm_common">ThreadsPerChild</directive> sein. Sofern für
+ diese Direktiven keine Voreinstellungen verwendet werden, sollten sie vor
+ allen anderen <module>worker</module>-Direktiven platziert werden.</p>
+
+ <p>Neben den normalen aktiven Kindprozessen gibt es möglicherweise noch
+ zusätzliche Kindprozesse, welche gerade beendet werden, wo allerdings
+ zumindest noch ein Server-Thread eine existierende Verbindung bearbeitet.
+ Obwohl die tatsächlich zu erwartende Anzahl deutlich kleiner ist,
+ können bis zu <directive module="mpm_common">MaxClients</directive>
+ solcher Prozesse auftreten. Dieses Verhalten können Sie vermeiden,
+ indem Sie die Terminierung einzelner Kindprozesse wie folgt abschalten:</p>
+
+ <ul>
+ <li>setzen Sie den Wert von <directive module="mpm_common"
+ >MaxRequestsPerChild</directive> auf Null</li>
+
+ <li>setzen Sie den Wert von <directive module="mpm_common"
+ >MaxSpareThreads</directive> auf den gleichen Wert wie <directive
+ module="mpm_common">MaxClients</directive></li>
+ </ul>
<p>Eine typische Konfiguration der Prozess-Thread-Steuerung für
das MPM <module>worker</module> könnte wie folgt aussehen:</p>
<example>
+ ServerLimit 16<br />
StartServers 2<br />
MaxClients 150<br />
MinSpareThreads 25<br />
MaxSpareThreads 75<br />
- ThreadsPerChild 25<br />
- ServerLimit 16
+ ThreadsPerChild 25
</example>
<p>Während der Elternprozess unter Unix normalerweise als
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>ThreadsPerChild</name>
</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>ThreadStackSize</name>
+</directivesynopsis>
<directivesynopsis location="mpm_common"><name>User</name>
</directivesynopsis>