Apache/HTTP/Windows/Anpassen: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(38 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''Apache für Windows anpassen''' | |||
=== Konfiguration === | === Konfiguration === | ||
Apache wird über die Dateien im Unterverzeichnis <tt>conf</tt> konfiguriert | ; Apache wird über die Dateien im Unterverzeichnis <tt>conf</tt> konfiguriert | ||
* Es handelt sich dabei um dieselben Dateien, die auch zur Konfiguration der Unix-Version verwendet werden, aber für den Apache unter Windows gibt es ein paar andere Direktiven | * Es handelt sich dabei um dieselben Dateien, die auch zur Konfiguration der Unix-Version verwendet werden, aber für den Apache unter Windows gibt es ein paar andere Direktiven | ||
* Im [https://httpd.apache.org/docs/current/mod/directives.html Direktiven-Index]finden Sie alle verfügbaren Direktiven | * Im [https://httpd.apache.org/docs/current/mod/directives.html Direktiven-Index]finden Sie alle verfügbaren Direktiven | ||
=== Standardkonfiguration === | === Standardkonfiguration === | ||
Die Standardkonfiguration der Quelldistribution erwartet, dass der Server in \Apache24 installiert wird | ; Die Standardkonfiguration der Quelldistribution erwartet, dass der Server in \Apache24 installiert wird | ||
* Dies kann bei der Kompilierung angepasst werden, aber es ist wichtig, dass das <tt>ServerRoot</tt> in httpd.conf mit dem tatsächlichen Installationsstamm übereinstimmt | * Dies kann bei der Kompilierung angepasst werden, aber es ist wichtig, dass das <tt>ServerRoot</tt> in httpd.conf mit dem tatsächlichen Installationsstamm übereinstimmt | ||
* Binärdistributionen können entweder das Standard-Installationsverzeichnis oder das Gesamtlayout der ursprünglichen Konfiguration anpassen | * Binärdistributionen können entweder das Standard-Installationsverzeichnis oder das Gesamtlayout der ursprünglichen Konfiguration anpassen | ||
== Hauptunterschiede == | |||
Hauptunterschiede beim Apache für Windows | |||
=== | === [[MPM]] === | ||
* Da der Apache für Windows multithreaded ist, verwendet er nicht wie der Apache unter Unix für jede Anfrage einen eigenen Prozess, sondern es laufen in der Regel nur zwei Apache-Prozesse: ein Elternprozess und ein Kindprozess, der die Anfragen bearbeitet | |||
* Da der Apache für Windows multithreaded ist, verwendet er nicht wie der Apache unter Unix für jede Anfrage einen eigenen Prozess, sondern es laufen in der Regel nur zwei Apache-Prozesse: ein Elternprozess und ein Kindprozess, der die Anfragen bearbeitet | * Innerhalb des untergeordneten Prozesses wird jede Anfrage von einem eigenen Thread bearbeitet | ||
* Innerhalb des untergeordneten Prozesses wird jede Anfrage von einem eigenen Thread bearbeitet | |||
=== Prozessmanagement === | === Prozessmanagement === | ||
Direktiven für das Prozessmanagement | |||
{|class=wikitable options" | |||
|- | |||
* | | [https://httpd.apache.org/docs/current/mod/mpm_common.html#maxconnectionsperchild MaxConnectionsPerChild] || '''Verbindungen eins Kindprozess''' | ||
* Anders als unter Unix ist jedoch nicht sofort ein Ersatzprozess verfügbar | * Steuert, wie viele Verbindungen ein einzelner Kindprozess bedient, bevor er beendet wird | ||
* Anders als unter Unix ist jedoch nicht sofort ein Ersatzprozess verfügbar | |||
Verwenden Sie die Standardeinstellung <tt>MaxConnectionsPerChild 0</tt> | |||
* es sei denn, Sie werden angewiesen, das Verhalten zu ändern, um ein Speicherleck in Modulen von Drittanbietern oder prozessinternen Anwendungen zu beheben | |||
|- | |||
| [https://httpd.apache.org/docs/current/mod/mpm_common.html#threadsperchild ThreadsPerChild] || '''Threads pro Child''' | |||
* Dies ist die maximale Anzahl von Verbindungen, die der Server auf einmal verarbeiten kann | |||
* Stellen Sie also sicher, dass Sie diese Zahl hoch genug für Ihre Website einstellen, wenn Sie viele Zugriffe erhalten | |||
Standardwert | |||
* <tt>ThreadsPerChild 150</tt> | |||
* Anpassen, um die größte zu erwartende Anzahl von gleichzeitigen Verbindungen zu berücksichtigen! | |||
|} | |||
; Warnung | ; Warnung | ||
: Die Serverkonfigurationsdatei wird neu eingelesen, wenn ein neuer Kindprozess gestartet wird | : Die Serverkonfigurationsdatei wird neu eingelesen, wenn ein neuer Kindprozess gestartet wird | ||
:* Wenn Sie <tt>httpd.conf</tt> geändert haben, startet der neue Kindprozess möglicherweise nicht oder Sie erhalten unerwartete Ergebnisse | |||
=== Dateinamen === | === Dateinamen === | ||
Direktiven, die Dateinamen als Argumente akzeptieren, müssen Windows-Dateinamen anstelle von Unix-Dateinamen verwenden | |||
* Da der Apache jedoch Backslashes als "Escape-Zeichen"-Sequenz interpretieren kann, sollten Sie in Pfadnamen stets Schrägstriche und keine Backslashes verwenden | * Da der Apache jedoch Backslashes als "Escape-Zeichen"-Sequenz interpretieren kann, sollten Sie in Pfadnamen stets Schrägstriche und keine Backslashes verwenden | ||
=== Groß- und Kleinschreibung === | === Groß- und Kleinschreibung === | ||
Während bei Dateinamen unter Windows in der Regel nicht zwischen Groß- und Kleinschreibung unterschieden wird, wird bei URLs intern immer noch zwischen Groß- und Kleinschreibung unterschieden, bevor sie auf das Dateisystem abgebildet werden | |||
* Die Direktiven [https://httpd.apache.org/docs/current/mod/core.html#location <Location>,] [https://httpd.apache.org/docs/current/mod/mod_alias.html#alias Alias] und [https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypass ProxyPass] verwenden beispielsweise alle Argumente unter Berücksichtigung der Groß- und Kleinschreibung | * Die Direktiven [https://httpd.apache.org/docs/current/mod/core.html#location <Location>,] [https://httpd.apache.org/docs/current/mod/mod_alias.html#alias Alias] und [https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypass ProxyPass] verwenden beispielsweise alle Argumente unter Berücksichtigung der Groß- und Kleinschreibung | ||
* Daher ist es besonders wichtig, die [https://httpd.apache.org/docs/current/mod/core.html#directory <Directory>-Direktive] zu verwenden, wenn der Zugriff auf Inhalte im Dateisystem eingeschränkt werden soll, da diese Direktive für alle Inhalte in einem Verzeichnis gilt, unabhängig davon, wie auf sie zugegriffen wird | * Daher ist es besonders wichtig, die [https://httpd.apache.org/docs/current/mod/core.html#directory <Directory>-Direktive] zu verwenden, wenn der Zugriff auf Inhalte im Dateisystem eingeschränkt werden soll, da diese Direktive für alle Inhalte in einem Verzeichnis gilt, unabhängig davon, wie auf sie zugegriffen wird | ||
Wenn Sie sicherstellen wollen, dass in URLs nur Kleinbuchstaben verwendet werden, können Sie etwas wie folgt verwenden | Wenn Sie sicherstellen wollen, dass in URLs nur Kleinbuchstaben verwendet werden, können Sie etwas wie folgt verwenden | ||
<syntaxhighlight lang="apache" line> | |||
RewriteEngine On | |||
RewriteMap lowercase int:tolower | |||
RewriteCond "%{REQUEST_URI}" "[A-Z]" | |||
RewriteRule "(.*)" "${lowercase:$1}" [R,L] | |||
</syntaxhighlight> | |||
=== Lese-/Schreibrechte === | === Lese-/Schreibrechte === | ||
Im laufenden Betrieb benötigt der Apache nur Schreibzugriff auf das Verzeichnis logs und einen eventuell konfigurierten Cache-Verzeichnisbaum | |||
* Aufgrund der Groß-/Kleinschreibung und der kurzen Namen im 8.3-Format muss der Apache alle angegebenen Pfadnamen überprüfen | * Aufgrund der Groß-/Kleinschreibung und der kurzen Namen im 8.3-Format muss der Apache alle angegebenen Pfadnamen überprüfen | ||
* Das bedeutet, dass jedes Verzeichnis, das der Apache auswertet, vom Stammverzeichnis bis zum Verzeichnisblatt, Lese-, Listen- und Traverse-Verzeichnisrechte haben muss | * Das bedeutet, dass jedes Verzeichnis, das der Apache auswertet, vom Stammverzeichnis bis zum Verzeichnisblatt, Lese-, Listen- und Traverse-Verzeichnisrechte haben muss | ||
* Wenn Apache2.4 unter C:\Programme installiert ist, müssen das Stammverzeichnis, die Programme und Apache2.4 für den Apache sichtbar sein | * Wenn Apache2.4 unter C:\Programme installiert ist, müssen das Stammverzeichnis, die Programme und Apache2.4 für den Apache sichtbar sein | ||
* Wenn der Apache normal kompiliert wird, installiert er eine Reihe von optionalen Modulen im Verzeichnis \Apache <tt>.4\modules</tt> | === Module laden === | ||
* Um diese oder andere Module zu aktivieren, muss die [https://httpd.apache.org/docs/current/mod/mod_so.html#loadmodule LoadModule-Anweisung]verwendet werden | Apache für Windows ermöglicht, Module zur Laufzeit zu laden, ohne den Server neu zu kompilieren | ||
* Wenn der Apache normal kompiliert wird, installiert er eine Reihe von optionalen Modulen im Verzeichnis \Apache <tt>.4\modules</tt> | |||
* Um diese oder andere Module zu aktivieren, muss die [https://httpd.apache.org/docs/current/mod/mod_so.html#loadmodule LoadModule-Anweisung]verwendet werden | |||
=== Status-Modul === | === Status-Modul === | ||
Um zum Beispiel das Status-Modul zu aktivieren, verwenden Sie die folgende Anweisung (zusätzlich zu den status-aktivierenden Direktiven in <tt>access.conf</tt>) | Um zum Beispiel das Status-Modul zu aktivieren, verwenden Sie die folgende Anweisung (zusätzlich zu den status-aktivierenden Direktiven in <tt>access.conf</tt>) | ||
Informationen zur [https://httpd.apache.org/docs/current/mod/mod_so.html#creating Erstellung von ladbaren Modulen] sind ebenfalls verfügbar | <syntaxhighlight lang="apache" line> | ||
LoadModule mod_status "modules/mod_status.so" | |||
</syntaxhighlight> | |||
Informationen zur [https://httpd.apache.org/docs/current/mod/mod_so.html#creating Erstellung von ladbaren Modulen] sind ebenfalls verfügbar | |||
=== ISAPI-Erweiterungen === | === ISAPI-Erweiterungen === | ||
* | * Apache kann auch ISAPI-Erweiterungen (Internet Server Application Programming Interface) laden, wie sie von Microsoft IIS und anderen Windows-Servern verwendet werden. [https://httpd.apache.org/docs/current/mod/mod_isapi.html Weitere Informationen sind verfügbar] | ||
* Beachten Sie, dass der Apache '''keine'''ISAPI-Filter laden '''kann''', und dass ISAPI-Handler mit einigen Microsoft-Funktionserweiterungen nicht funktionieren | * Beachten Sie, dass der Apache '''keine'''ISAPI-Filter laden '''kann''', und dass ISAPI-Handler mit einigen Microsoft-Funktionserweiterungen nicht funktionieren | ||
=== CGI-Skripte === | === CGI-Skripte === | ||
* Bei der Ausführung von CGI-Skripten ist die Methode, die der Apache verwendet, um den Interpreter für das Skript zu finden, mit der Direktive [https://httpd.apache.org/docs/current/mod/core.html#scriptinterpretersource ScriptInterpreterSource]konfigurierbar | * Bei der Ausführung von CGI-Skripten ist die Methode, die der Apache verwendet, um den Interpreter für das Skript zu finden, mit der Direktive [https://httpd.apache.org/docs/current/mod/core.html#scriptinterpretersource ScriptInterpreterSource]konfigurierbar | ||
* Da es unter Windows oft schwierig ist, Dateien mit Namen wie <tt>.htaccess</tt> zu verwalten, kann es nützlich sein, den Namen dieser Konfigurationsdatei pro Verzeichnis mit der Direktive [https://httpd.apache.org/docs/current/mod/core.html#accessfilename AccessFilename]zu ändern | * Da es unter Windows oft schwierig ist, Dateien mit Namen wie <tt>.htaccess</tt> zu verwalten, kann es nützlich sein, den Namen dieser Konfigurationsdatei pro Verzeichnis mit der Direktive [https://httpd.apache.org/docs/current/mod/core.html#accessfilename AccessFilename]zu ändern | ||
=== Windows-Ereignisprotokoll === | === Windows-Ereignisprotokoll === | ||
; Fehler während des Apache-Starts | |||
* Dieser Mechanismus dient als Backup für Situationen, in denen der Apache noch nicht bereit ist, die Datei <tt>error.log</tt> zu verwenden | Fehler während des Apache-Starts werden in das Windows-Ereignisprotokoll eingetragen, wenn der Apache unter Windows NT läuft | ||
* Dieser Mechanismus dient als Backup für Situationen, in denen der Apache noch nicht bereit ist, die Datei <tt>error.log</tt> zu verwenden | |||
Sie können das Windows-Ereignisprotokoll mithilfe der Ereignisanzeige überprüfen | |||
* z. B. Start - Einstellungen - Systemsteuerung - Verwaltung - Ereignisanzeige | |||
[[Kategorie:Apache/HTTP/Windows]] | [[Kategorie:Apache/HTTP/Windows]] |
Aktuelle Version vom 5. November 2024, 01:55 Uhr
Apache für Windows anpassen
Konfiguration
- Apache wird über die Dateien im Unterverzeichnis conf konfiguriert
- Es handelt sich dabei um dieselben Dateien, die auch zur Konfiguration der Unix-Version verwendet werden, aber für den Apache unter Windows gibt es ein paar andere Direktiven
- Im Direktiven-Indexfinden Sie alle verfügbaren Direktiven
Standardkonfiguration
- Die Standardkonfiguration der Quelldistribution erwartet, dass der Server in \Apache24 installiert wird
- Dies kann bei der Kompilierung angepasst werden, aber es ist wichtig, dass das ServerRoot in httpd.conf mit dem tatsächlichen Installationsstamm übereinstimmt
- Binärdistributionen können entweder das Standard-Installationsverzeichnis oder das Gesamtlayout der ursprünglichen Konfiguration anpassen
Hauptunterschiede
Hauptunterschiede beim Apache für Windows
MPM
- Da der Apache für Windows multithreaded ist, verwendet er nicht wie der Apache unter Unix für jede Anfrage einen eigenen Prozess, sondern es laufen in der Regel nur zwei Apache-Prozesse: ein Elternprozess und ein Kindprozess, der die Anfragen bearbeitet
- Innerhalb des untergeordneten Prozesses wird jede Anfrage von einem eigenen Thread bearbeitet
Prozessmanagement
Direktiven für das Prozessmanagement
MaxConnectionsPerChild | Verbindungen eins Kindprozess
Verwenden Sie die Standardeinstellung MaxConnectionsPerChild 0
|
ThreadsPerChild | Threads pro Child
Standardwert
|
- Warnung
- Die Serverkonfigurationsdatei wird neu eingelesen, wenn ein neuer Kindprozess gestartet wird
- Wenn Sie httpd.conf geändert haben, startet der neue Kindprozess möglicherweise nicht oder Sie erhalten unerwartete Ergebnisse
Dateinamen
Direktiven, die Dateinamen als Argumente akzeptieren, müssen Windows-Dateinamen anstelle von Unix-Dateinamen verwenden
- Da der Apache jedoch Backslashes als "Escape-Zeichen"-Sequenz interpretieren kann, sollten Sie in Pfadnamen stets Schrägstriche und keine Backslashes verwenden
Groß- und Kleinschreibung
Während bei Dateinamen unter Windows in der Regel nicht zwischen Groß- und Kleinschreibung unterschieden wird, wird bei URLs intern immer noch zwischen Groß- und Kleinschreibung unterschieden, bevor sie auf das Dateisystem abgebildet werden
- Die Direktiven <Location>, Alias und ProxyPass verwenden beispielsweise alle Argumente unter Berücksichtigung der Groß- und Kleinschreibung
- Daher ist es besonders wichtig, die <Directory>-Direktive zu verwenden, wenn der Zugriff auf Inhalte im Dateisystem eingeschränkt werden soll, da diese Direktive für alle Inhalte in einem Verzeichnis gilt, unabhängig davon, wie auf sie zugegriffen wird
Wenn Sie sicherstellen wollen, dass in URLs nur Kleinbuchstaben verwendet werden, können Sie etwas wie folgt verwenden
RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond "%{REQUEST_URI}" "[A-Z]"
RewriteRule "(.*)" "${lowercase:$1}" [R,L]
Lese-/Schreibrechte
Im laufenden Betrieb benötigt der Apache nur Schreibzugriff auf das Verzeichnis logs und einen eventuell konfigurierten Cache-Verzeichnisbaum
- Aufgrund der Groß-/Kleinschreibung und der kurzen Namen im 8.3-Format muss der Apache alle angegebenen Pfadnamen überprüfen
- Das bedeutet, dass jedes Verzeichnis, das der Apache auswertet, vom Stammverzeichnis bis zum Verzeichnisblatt, Lese-, Listen- und Traverse-Verzeichnisrechte haben muss
- Wenn Apache2.4 unter C:\Programme installiert ist, müssen das Stammverzeichnis, die Programme und Apache2.4 für den Apache sichtbar sein
Module laden
Apache für Windows ermöglicht, Module zur Laufzeit zu laden, ohne den Server neu zu kompilieren
- Wenn der Apache normal kompiliert wird, installiert er eine Reihe von optionalen Modulen im Verzeichnis \Apache .4\modules
- Um diese oder andere Module zu aktivieren, muss die LoadModule-Anweisungverwendet werden
Status-Modul
Um zum Beispiel das Status-Modul zu aktivieren, verwenden Sie die folgende Anweisung (zusätzlich zu den status-aktivierenden Direktiven in access.conf)
LoadModule mod_status "modules/mod_status.so"
Informationen zur Erstellung von ladbaren Modulen sind ebenfalls verfügbar
ISAPI-Erweiterungen
- Apache kann auch ISAPI-Erweiterungen (Internet Server Application Programming Interface) laden, wie sie von Microsoft IIS und anderen Windows-Servern verwendet werden. Weitere Informationen sind verfügbar
- Beachten Sie, dass der Apache keineISAPI-Filter laden kann, und dass ISAPI-Handler mit einigen Microsoft-Funktionserweiterungen nicht funktionieren
CGI-Skripte
- Bei der Ausführung von CGI-Skripten ist die Methode, die der Apache verwendet, um den Interpreter für das Skript zu finden, mit der Direktive ScriptInterpreterSourcekonfigurierbar
- Da es unter Windows oft schwierig ist, Dateien mit Namen wie .htaccess zu verwalten, kann es nützlich sein, den Namen dieser Konfigurationsdatei pro Verzeichnis mit der Direktive AccessFilenamezu ändern
Windows-Ereignisprotokoll
- Fehler während des Apache-Starts
Fehler während des Apache-Starts werden in das Windows-Ereignisprotokoll eingetragen, wenn der Apache unter Windows NT läuft
- Dieser Mechanismus dient als Backup für Situationen, in denen der Apache noch nicht bereit ist, die Datei error.log zu verwenden
Sie können das Windows-Ereignisprotokoll mithilfe der Ereignisanzeige überprüfen
- z. B. Start - Einstellungen - Systemsteuerung - Verwaltung - Ereignisanzeige