Apache/HTTP/Windows

Aus Foxwiki

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

Apache/HTTP/Windows/Anpassen

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.