Apache/HTTP/Windows: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 26: Zeile 26:


== Apache für Windows anpassen ==
== Apache für Windows anpassen ==
Apache wird über die Dateien im Unterverzeichnis <tt>conf</tt> konfiguriert.
=== Konfiguration ===
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 ===
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 ===
Die Hauptunterschiede beim Apache für Windows sind:
Die Hauptunterschiede beim Apache für Windows sind:
* 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 ===
Auch die Richtlinien für das Prozessmanagement sind unterschiedlich:
Auch die Richtlinien für das Prozessmanagement sind unterschiedlich:


Zeile 57: Zeile 61:
* 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.
* Aus diesem Grund 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.
* Aus diesem Grund 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:
  RewriteEngine On
  RewriteEngine On
  RewriteMap lowercase int:tolowerRewriteCond "%{REQUEST_URI}" "[A-Z]"
  RewriteMap lowercase int:tolowerRewriteCond "%{REQUEST_URI}" "[A-Z]"
  RewriteRule "(.*)" "${lowercase:$1}" [R,L]
  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.
* 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.
Zeile 70: Zeile 75:
* Wenn der Apache normal kompiliert wird, installiert er eine Reihe von optionalen Modulen im Verzeichnis \Apache <tt>.4\modules</tt>.
* 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.
* Um diese oder andere Module zu aktivieren, muss die [https://httpd.apache.org/docs/current/mod/mod_so.html#loadmodule LoadModule-Anweisung]verwendet werden.
* 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>):


=== 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>):
  LoadModule status_module "modules/mod_status.so"
  LoadModule status_module "modules/mod_status.so"


Informationen zur [https://httpd.apache.org/docs/current/mod/mod_so.html#creating Erstellung von ladbaren Modulen] sind ebenfalls verfügbar.
Informationen zur [https://httpd.apache.org/docs/current/mod/mod_so.html#creating Erstellung von ladbaren Modulen] sind ebenfalls verfügbar.
=== ISAPI-Erweiterungen ===
* Der 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].
* Der 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 ===
* 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 ===
* Alle Fehler während des Apache-Starts werden in das Windows-Ereignisprotokoll eingetragen, wenn der Apache unter Windows NT läuft.
* Alle 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.
* Dieser Mechanismus dient als Backup für Situationen, in denen der Apache noch nicht bereit ist, die Datei <tt>error.log</tt> zu verwenden.

Version vom 4. November 2024, 23:19 Uhr

Apache HTTP Server unter Microsoft Windows

Beschreibung

Apache 2.4 unter Microsoft Windows installieren, konfigurieren und ausführen.

Es wird davon ausgegangen, dass eine Binärdistribution des Apache installiert wurde

Anforderungen an das Betriebssystem

Die primäre Windows-Plattform für die Ausführung von Apache 2.4 ist Windows 2000 oder höher.

  • Besorgen Sie sich immer das aktuelle Service Pack und installieren Sie es, um Fehler im Betriebssystem zu vermeiden.

Apache HTTP Server-Versionen nach 2.2 laufen nicht auf Betriebssystemen vor Windows 2000.

Herunterladen von Apache für Windows

Das Apache HTTP Server Projekt selbst bietet keine Binärversionen von Software an, sondern nur Quellcode.

  • Einzelne Committer können Binärpakete als Annehmlichkeit zur Verfügung stellen, aber es handelt sich nicht um eine Veröffentlichung.

Wenn Sie den Apache HTTP Server nicht selbst kompilieren können, können Sie ein Binärpaket von zahlreichen Binärdistributionen aus dem Internet beziehen.

Beliebte Optionen für die Bereitstellung von Apache httpd und, optional, PHP und MySQL unter Microsoft Windows sind:

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

Die Hauptunterschiede beim Apache für Windows sind:

  • 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

Auch die Richtlinien für das Prozessmanagement sind unterschiedlich:

MaxConnectionsPerChild: Wie die Unix-Direktive steuert dies, 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 MaxConnectionsPerChild 0, es sei denn, Sie werden angewiesen, das Verhalten zu ändern, um ein Speicherleck in Modulen von Drittanbietern oder prozessinternen Anwendungen zu beheben.

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.

ThreadsPerChild: Diese Richtlinie ist neu.

  • Sie teilt dem Server mit, wie viele Threads er verwenden soll.
  • 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.
  • Der empfohlene Standardwert ist ThreadsPerChild 150, aber dieser Wert muss angepasst werden, um die größte zu erwartende Anzahl von gleichzeitigen Verbindungen zu berücksichtigen.
  • Die 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.
  • 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.
  • Aus diesem Grund 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:tolowerRewriteCond "%{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.
  • Apache für Windows bietet die Möglichkeit, 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 status_module "modules/mod_status.so"

Informationen zur Erstellung von ladbaren Modulen sind ebenfalls verfügbar.

ISAPI-Erweiterungen

  • Der 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

  • Alle 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 mit Hilfe der Ereignisanzeige überprüfen, z. B. Start - Einstellungen - Systemsteuerung - Verwaltung - Ereignisanzeige.

Apache als Dienst ausführen

Apache wird mit einem Dienstprogramm namens Apache Service Monitor ausgeliefert, mit dem Sie den Status aller installierten Apache-Dienste auf jedem Rechner in Ihrem Netzwerk sehen und verwalten können.

  • Um einen Apache-Dienst mit dem Monitor verwalten zu können, müssen Sie den Dienst zunächst installieren (entweder automatisch über die Installation oder manuell).

Sie können den Apache als Windows NT-Dienst wie folgt über die Eingabeaufforderung im Unterverzeichnis Apache bin installieren

httpd.exe -k install

Wenn Sie den Namen des zu installierenden Dienstes angeben müssen, verwenden Sie den folgenden Befehl.

  • Sie müssen dies tun, wenn Sie mehrere verschiedene Apache-Dienste auf Ihrem Computer installiert haben.
  • Wenn Sie während der Installation einen Namen angeben, müssen Sie ihn auch bei jeder anderen -k Operation angeben.
httpd.exe -k install -n "MeinDienstName"

Wenn Sie speziell benannte Konfigurationsdateien für verschiedene Dienste benötigen, müssen Sie dies verwenden

httpd.exe -k install -n "MeinDienstName" -f "c:\files\my.conf"

Wenn Sie den ersten Befehl ohne spezielle Parameter außer -k install verwenden, wird der Dienst Apache2.4 genannt und die Konfiguration wird als conf\httpd.conf angenommen.

Das Entfernen eines Apache-Dienstes ist einfach.

  • Verwenden Sie einfach
httpd.exe -k deinstallieren

Der spezifische Apache-Dienst, der deinstalliert werden soll, kann mit Hilfe von angegeben werden

httpd.exe -k uninstall -n "MeinDienstName"

Das normale Starten, Neustarten und Beenden eines Apache-Dienstes erfolgt in der Regel über den Apache Service Monitor, mit Befehlen wie NET START Apache2.4 und NET STOP Apache2.4 oder über die normale Windows-Dienstverwaltung.

  • Bevor Sie den Apache als Dienst starten, sollten Sie die Konfigurationsdatei des Dienstes testen, indem Sie
httpd.exe -n "MeinDienstName" -t

Sie können einen Apache-Dienst auch über seine Kommandozeilenparameter steuern.

  • Um einen installierten Apache-Dienst zu starten, verwenden Sie den folgenden Befehl
httpd.exe -k start -n "MeinDienstName"

Um einen Apache-Dienst über die Befehlszeilenschalter zu stoppen, verwenden Sie Folgendes

httpd.exe -k stop -n "MeinDienstName"

oder

httpd.exe -k shutdown -n "MeinDienstName"

Sie können auch einen laufenden Dienst neu starten und ihn zwingen, seine Konfigurationsdatei neu einzulesen, indem Sie verwenden

httpd.exe -k restart -n "MeinDienstName"

Standardmäßig sind alle Apache-Dienste so registriert, dass sie unter dem Systembenutzer (dem LocalSystem-Konto ) laufen.

  • Das LocalSystem-Konto hat keine Berechtigungen für Ihr Netzwerk über einen Windows-gesicherten Mechanismus, einschließlich des Dateisystems, Named Pipes, DCOM oder Secure RPC.
  • Es hat jedoch lokal weitreichende Rechte.

Gewähren Sie dem LocalSystem-Konto niemals irgendwelche Netzwerkprivilegien! Wenn der Apache auf Netzwerkressourcen zugreifen muss, erstellen Sie ein separates Konto für den Apache (siehe unten).

Es wird empfohlen, dass Benutzer ein separates Konto für die Ausführung von Apache-Diensten erstellen.

  • Wenn Sie über Apache auf Netzwerkressourcen zugreifen müssen, ist dies erforderlich.# Legen Sie ein normales Domänen-Benutzerkonto an, und merken Sie sich das Passwort.
  1. Gewähren Sie dem neu erstellten Benutzer die Berechtigung, sich als Dienst anzumelden und als Teil des Betriebssystems zu agieren.
  • Unter Windows NT 4.0 werden diese Berechtigungen über den Benutzer-Manager für Domänen gewährt, aber unter Windows 2000 und XP möchten Sie wahrscheinlich die Gruppenrichtlinie für die Verbreitung dieser Einstellungen verwenden.
  • Sie können diese Einstellungen auch manuell über das MMC-Snap-In Lokale Sicherheitsrichtlinie vornehmen.
  1. Bestätigen Sie, dass das erstellte Konto ein Mitglied der Gruppe Benutzer ist.
  2. Gewähren Sie dem Konto Lese- und Ausführungsrechte (RX) für alle Dokument- und Skriptordner( z.
  • B.htdocs und cgi-bin).
  1. Erteilen Sie dem Konto Änderungsrechte (RWXD) für das Apache-Logs-Verzeichnis.
  2. Gewähren Sie dem Konto Lese- und Ausführungsrechte (RX) für die ausführbare Binärdatei httpd.exe.

Es ist in der Regel eine gute Praxis, dem Benutzer, der den Apache-Dienst ausführt, Lese- und Ausführungsrechte (RX) für das gesamte Apache2.4-Verzeichnis zu gewähren, mit Ausnahme des Unterverzeichnisses logs, für das der Benutzer mindestens Änderungsrechte (RWXD) haben muss.

Wenn Sie dem Konto erlauben, sich als Benutzer und als Dienst anzumelden, können Sie sich mit diesem Konto anmelden und testen, ob das Konto die Berechtigung hat, die Skripte auszuführen, die Webseiten zu lesen und Apache in einem Konsolenfenster zu starten.

  • Wenn dies funktioniert und Sie die oben genannten Schritte befolgt haben, sollte der Apache ohne Probleme als Dienst ausgeführt werden.

Der Fehlercode 2186 ist ein guter Hinweis darauf, dass Sie die "Anmelden als"-Konfiguration für den Dienst überprüfen müssen, da der Apache nicht auf eine erforderliche Netzwerkressource zugreifen kann.

  • Achten Sie auch auf die Berechtigungen des Benutzers, unter dem Apache ausgeführt werden soll.

Wenn Sie den Apache als Dienst starten, kann eine Fehlermeldung des Windows-Dienstesteuerungsmanagers erscheinen.

  • Wenn Sie z. B. versuchen, Apache über das Applet "Dienste" in der Windows-Systemsteuerung zu starten, erhalten Sie möglicherweise die folgende Meldung
Der Apache2.4-Dienst konnte auf nicht gestartet werden. Fehler 1067; Der Prozess wurde unerwartet beendet.

Sie erhalten diese allgemeine Fehlermeldung, wenn es ein Problem beim Starten des Apache-Dienstes gibt.

  • Um herauszufinden, was das Problem wirklich verursacht, sollten Sie die Anweisungen zum Ausführen von Apache für Windows über die Eingabeaufforderung befolgen.

Wenn Sie Probleme mit dem Dienst haben, sollten Sie die folgenden Anweisungen befolgen, um zu versuchen, httpd.exe von einem Konsolenfenster aus zu starten, und die Fehler zu beheben, bevor Sie versuchen, ihn erneut als Dienst zu starten.

Apache als Konsolenanwendung ausführen

Normalerweise wird empfohlen, den Apache als Dienst zu verwenden, aber manchmal ist es einfacher, von der Kommandozeile aus zu arbeiten, insbesondere bei der anfänglichen Konfiguration und beim Testen.

Um den Apache von der Kommandozeile aus als Konsolenanwendung zu starten, verwenden Sie den folgenden Befehl

httpd.exe

Der Apache wird ausgeführt und bleibt aktiv, bis er durch Drücken von Strg-C gestoppt wird.

Sie können Apache auch über die Verknüpfung Apache in der Konsole starten starten, die Sie während der Installation unter Startmenü --> Programme --> Apache HTTP Server 2 .4.xx --> Apache Server steuern platziert haben.

  • Dadurch wird ein Konsolenfenster geöffnet und Apache darin gestartet.
  • Wenn Sie Apache nicht als Dienst installiert haben, bleibt das Fenster sichtbar, bis Sie Apache durch Drücken von Strg-C in dem Konsolenfenster, in dem Apache läuft, beenden.
  • Der Server beendet sich dann nach einigen Sekunden.
  • Wenn Sie Apache jedoch als Dienst installiert haben, startet die Verknüpfung den Dienst.
  • Wenn der Apache-Dienst bereits läuft, bewirkt die Verknüpfung gar nichts.

Wenn der Apache als Dienst läuft, können Sie ihn stoppen, indem Sie ein weiteres Konsolenfenster öffnen und eingeben

httpd.exe -k shutdown

Die Ausführung als Dienst sollte der Ausführung in einem Konsolenfenster vorgezogen werden, da der Apache auf diese Weise alle laufenden Operationen ordnungsgemäß beenden und aufräumen kann.

Wenn der Server jedoch in einem Konsolenfenster läuft, können Sie ihn nur durch Drücken von Strg-C im selben Fenster anhalten.

Sie können den Apache auch anweisen, neu zu starten.

  • Dadurch wird er gezwungen, die Konfigurationsdatei neu zu lesen.
  • Alle laufenden Operationen können ohne Unterbrechung zu Ende geführt werden.
  • Um den Apache neu zu starten, drücken Sie entweder Control-Break in dem Konsolenfenster, das Sie zum Starten des Apache verwendet haben, oder geben Sie
httpd.exe -k Neustart

wenn der Server als Dienst läuft.

Hinweis für diejenigen, die mit der Unix-Version von Apache vertraut sind: Diese Befehle stellen eine Windows-Entsprechung zu kill -TERM pid und kill -USR1 pid dar.

  • Die verwendete Kommandozeilenoption -k wurde in Anlehnung an den unter Unix verwendeten kill-Befehl gewählt.

Wenn das Apache-Konsolenfenster sofort oder unerwartet nach dem Start geschlossen wird, öffnen Sie die Eingabeaufforderung über das Startmenü --> Programme.

  • Wechseln Sie in den Ordner, in den Sie Apache installiert haben, geben Sie den Befehl httpd.exe ein, und lesen Sie die Fehlermeldung.
  • Wechseln Sie dann in den Ordner logs, und überprüfen Sie die Datei error.log auf Konfigurationsfehler.
  • Angenommen, httpd wurde in C: \Programme\Apache Software Foundation\Apache2.4\ installiert, dann können Sie Folgendes tun
c: cd "\Programmdateien\Apache Software Foundation\Apache2.4\bin" httpd.exe

Warten Sie dann, bis der Apache gestoppt wird, oder drücken Sie Control-C.

  • Geben Sie dann Folgendes ein
cd ..\logs mehr < error.log

Bei der Arbeit mit dem Apache ist es wichtig zu wissen, wie er die Konfigurationsdatei finden kann.

  • Sie können eine Konfigurationsdatei auf der Kommandozeile auf zwei Arten angeben:
  • -f gibt einen absoluten oder relativen Pfad zu einer bestimmten Konfigurationsdatei an:
httpd.exe -f "c:\my server files\anotherconfig.conf"

oder

httpd.exe -f files\anotherconfig.conf
  • -n gibt den installierten Apache-Dienst an, dessen Konfigurationsdatei verwendet werden soll:
httpd.exe -n "MeinDienstName"

In beiden Fällen sollte das richtige ServerRoot in der Konfigurationsdatei festgelegt werden.

Wenn Sie keine Konfigurationsdatei mit -f oder -n angeben, verwendet der Apache den in den Server einkompilierten Dateinamen, z.B. conf\httpd.conf.

  • Dieser eingebaute Pfad ist relativ zum Installationsverzeichnis.
  • Sie können den kompilierten Dateinamen anhand eines als SERVER_CONFIG_FILE bezeichneten Wertes überprüfen, wenn Sie den Apache mit der Option -V aufrufen, etwa so
httpd.exe -V

Der Apache versucht dann, sein ServerRoot zu bestimmen, indem er die folgenden Schritte in dieser Reihenfolge durchführt:# Eine ServerRoot-Anweisung über den Befehlszeilenschalter -C.

  1. Der Schalter -d in der Befehlszeile.
  2. Aktuelles Arbeitsverzeichnis.
  3. Ein Registrierungseintrag, der bei einer Binärinstallation erstellt wurde.
  4. Das Stammverzeichnis des Servers, das in den Server einkompiliert wurde.
  • Dies ist standardmäßig /apache.
  • Sie können dies überprüfen, indem Sie httpd.exe -V verwenden und nach einem Wert mit der Bezeichnung HTTPD_ROOT suchen.

Wenn Sie keine Binärinstallation durchgeführt haben, wird sich der Apache in einigen Fällen über den fehlenden Registrierungsschlüssel beschweren.

  • Diese Warnung kann ignoriert werden, wenn der Server ansonsten seine Konfigurationsdatei finden konnte.

Der Wert dieses Schlüssels ist das Verzeichnis ServerRoot, das das Unterverzeichnis conf enthält.

  • Wenn der Apache startet, liest er die Datei httpd.conf aus diesem Verzeichnis.
  • Wenn diese Datei eine ServerRoot-Anweisungenthält, die ein anderes Verzeichnis als das aus dem obigen Registrierungsschlüssel ermittelte enthält, vergisst der Apache den Registrierungsschlüssel und verwendet das Verzeichnis aus der Konfigurationsdatei.
  • Wenn Sie das Apache-Verzeichnis oder die Konfigurationsdateien an einen neuen Ort kopieren, müssen Sie unbedingt die ServerRoot-Anweisung in der Datei httpd.conf aktualisieren, um den neuen Ort wiederzugeben.

Testen der Installation

Nach dem Starten des Apache (entweder in einem Konsolenfenster oder als Dienst) lauscht er auf Port 80 (es sei denn, Sie haben die Listen-Direktive in den Konfigurationsdateien geändert oder den Apache nur für den aktuellen Benutzer installiert).

  • Um sich mit dem Server zu verbinden und die Standardseite aufzurufen, starten Sie einen Browser und geben Sie diese URL ein
http://localhost/

Apache sollte mit einer Willkommensseite antworten und Sie sollten "It Works!" sehen.

  • Wenn nichts passiert oder Sie eine Fehlermeldung erhalten, sehen Sie in der Datei error.log im Unterverzeichnis logs nach.
  • Wenn Ihr Host nicht mit dem Netz verbunden ist oder wenn Sie ernsthafte Probleme mit Ihrer DNS-Konfiguration (Domain Name Service) haben, müssen Sie möglicherweise diese URL verwenden
http://127.0.0.1/

Wenn Sie Apache auf einem anderen Port laufen lassen, müssen Sie dies ausdrücklich in der URL angeben

http://127.0.0.1:8080/

Wenn Ihre Grundinstallation funktioniert, sollten Sie sie richtig konfigurieren, indem Sie die Dateien im Unterverzeichnis conf bearbeiten.

  • Wenn Sie die Konfiguration des Windows NT-Dienstes für Apache ändern, versuchen Sie zunächst, ihn von der Befehlszeile aus zu starten, um sicherzustellen, dass der Dienst fehlerfrei startet.

Da der Apache nicht denselben Anschluss mit einer anderen TCP/IP-Anwendung teilen kann, müssen Sie möglicherweise bestimmte andere Dienste stoppen, deinstallieren oder neu konfigurieren, bevor Sie den Apache starten.

  • Zu diesen kollidierenden Diensten gehören andere WWW-Server, einige Firewall-Implementierungen und sogar einige Client-Anwendungen (z. B. Skype), die Port 80 verwenden, um Firewall-Probleme zu umgehen.

Konfigurieren des Zugriffs auf Netzwerkressourcen

Der Zugriff auf Dateien über das Netzwerk kann über zwei von Windows bereitgestellte Mechanismen festgelegt werden

Zugeordnete Laufwerksbuchstaben z. B.

Alias "/images/" "Z:/"

UNC-Pfade z. B.

Alias "/images/" "//imagehost/www/images/"

Zugeordnete Laufwerksbuchstaben ermöglichen es dem Administrator, die Zuordnung zu einem bestimmten Rechner und Pfad außerhalb der Apache httpd-Konfiguration zu pflegen.

  • Diese Zuordnungen sind jedoch nur mit interaktiven Sitzungen verbunden und stehen dem Apache httpd nicht direkt zur Verfügung, wenn er als Dienst gestartet wird. Verwenden Sie nur UNC-Pfade für Netzwerkressourcen in der Datei httpd.conf, damit der Zugriff auf die Ressourcen konsistent ist, unabhängig davon, wie der Apache httpd gestartet wird. (Die Beschränkung auf zugeordnete Laufwerksbuchstaben kann durch obskure und fehleranfällige Verfahren umgangen werden, dies wird jedoch nicht empfohlen).

Beispiel DocumentRoot mit UNC-Pfad

DocumentRoot "//dochost/www/html/"

Beispiel DocumentRoot mit IP-Adresse im UNC-Pfad

DocumentRoot "//192.168.1.50/docs/"

Beispiel-Alias und entsprechendes Verzeichnis mit UNC-Pfad

Alias "/images/" "//imagehost/www/images/"

<Verzeichnis "//imagehost/www/images/">
 #...
</Verzeichnis>

Wenn Sie Apache httpd als Dienst ausführen, müssen Sie, wie oben beschrieben, ein separates Konto für den Zugriff auf Netzwerkressourcen erstellen.

Windows-Abstimmung

  • Wenn mehr als ein paar Dutzend Piped Logger auf einer Betriebssysteminstanz verwendet werden, ist oft eine Vergrößerung des "Desktop-Heap" erforderlich.
  • Ausführlichere Informationen finden Sie in der Dokumentation zu Piped Logging.