Apache2 (Httpd) funktioniert nach dem Update auf High Sierra nicht

15

Ich habe ein Problem, bei dem Apache nach dem Update auf High Sierra 10.13.1 nicht gestartet wird. In den Fehlerprotokollen wird nichts angezeigt, aber wenn ich es versuche, apachectl startpassiert nichts. Wenn ich laufe, apachectl configtesterhalte ich "Syntax OK

Ich habe Befehle wie sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plistohne Erfolg verwendet. Apache wird nicht gestartet. Ich kann rennen sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.httpd.plistund das funktioniert auch nicht.

Ich habe mir die Liste der Braudienstleistungen angesehen und httpd wird zusammen mit anderen Prozessen (MySQL) in der Liste angezeigt, aber der Status von httpd zeigt ein gelbes "gestartet" anstelle eines grünen an.

Ich habe viele verschiedene Dinge ausprobiert, und was ich finde, ist, dass ich finde, wenn ich in die Datei system.log schaue com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1

Wenn ich apachectl start ausführe, scheint der Befehl zu funktionieren, aber wenn ich den Stoppbefehl ausführe, wird "httpd (keine PID-Datei) nicht ausgeführt.
Ich erhalte auch die Ausgabe von com .; Apple.xpc.launchd [1] ( org.apache.httpd): Bitte wechseln Sie von OnDemand zu KeepAlive.

Gibt es etwas in High Sierra, das verhindert, dass Apache ausgeführt wird, wenn es in Sierra einwandfrei funktioniert?

Alcyeonnero
quelle
1
Sie mischen Apache httpd von Brew und Apache httpd von Apple (deren Startdämonen verschiedene Binärdateien starten)! Woher erhalten Sie den httpd-Status (dh gelbe vs. grüne Anzeige)? Welche Anleitung zur Ersteinrichtung haben Sie verwendet?
Klanomath
Ich mische sie nicht, ich habe die Schritte durchlaufen, bei denen sowohl Brew als auch Apples Apache brew services list' I receive a yellow indicator, I checked with all of the available users and ran ausprobiert wurden. Wenn ich eine Liste der Brühdienste durchführe, zeigen alle den gleichen Indikator an. Ansible wurde für die Einrichtung von Apache verwendet. Dies wurde auf 5 anderen MacBooks durchgeführt, auf denen Sierra noch ausgeführt wird. Dieses eine MacBook hatte ein Problem und ein Apple führte eine Diagnose durch und setzte das Betriebssystem zurück, während das Betriebssystem
Alcyeonnero
Mit Mischen meine ich: Sie haben mindestens zwei Apachectl- und httpd-Binärdateien installiert (und zwei Konfigurationsdateien). Normalerweise wird das Apachectl von Brew bevorzugt (aufgrund des Standardinhalts der PATH-Variablen können Ihre jedoch unterschiedlich sein). Das Apachectl von AFAIR Brew startet Apples httpd nicht mit der Standardstartoption (dh apachectl start). Gleiches mit ... configtest!
Klanomath
Mit "Ansible wurde zum Einrichten von Apache verwendet" meinen Sie diese Anleitung: Mac Development Ansible Playbook ? Es ist besser, einen Link zu einer Anleitung oder Einrichtung hinzuzufügen. Die verschiedenen Setup-Anleitungen für die verschiedenen MacOS-Versionen enthalten alle leicht unterschiedliche Konfigurationen / erstellen unterschiedliche Umgebungen.
Klanomath
Ich habe dieses Wochenende gerade auf High Sierra aktualisiert und habe genau das gleiche Problem. Ich habe die Homebrew- httpdFormel verwendet und jetzt reagiert Apache nicht mehr. Wenn ich das tue brew services list, bekomme ich auch das startedfür httpd in gelb, und wenn ich laufe sudo apachectl stop, sagt es mir dashttpd (pid 87?) not responding.
wunder95

Antworten:

16

Meiner Meinung nach haben Sie Ihre verschiedenen httpd-Startdämonen / Startmechanismen abgespritzt, indem Sie zu viele httpd-bezogene Befehle ausgeführt haben.

Wenn Homebrew und Apache-httpd von Homebrew installiert sind und der Standardpfad verwendet wird, haben Sie sechs Möglichkeiten, httpd zu starten.

Apples Apache:

  • sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
  • sudo /usr/sbin/apachectl start

Homebrews Apache:

  • sudo apachectl start
  • apachectl start
  • sudo brew services start httpd
  • brew services start httpd

Wenn Sie die Datei homebrew.mxcl.httpd.plist manuell nach ~ / Library / LaunchAgents / oder / Library / LaunchDaemons / kopiert haben, haben Sie zwei weitere Optionen, um sie durch Laden zu starten (sudo) launchctl load ....

Wenn Sie die httpd-Konfigurationsdateien oder die apachectl-Skripte nicht stark geändert haben, verwendet der Apple-Zweig die httpd.conf-Datei von Apple in / var und DocumentRoot im Ordner / Library.

Der Homebrew-Zweig verwendet Unterordner in / usr / local /.

Einige Startmethoden funktionieren nicht, wenn Sie die httpd-Ports an Ports unter 1024 gebunden haben!

Wenn Sie (sudo) brew services ...httpd starten, müssen Sie den richtigen (sudo) brew services listBefehl verwenden, um den Status zu überprüfen:

Wenn Sie es als root starten, listen Sie es mit root privs auf:

sudo brew services start httpd > sudo brew services list

oder mit Benutzerprivilegien:

brew services start httpd> brew services list.


Um Ihr Problem zu lösen, entladen Sie Apples httpd:

  • sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
  • Entfernen Sie alle manuell installierten homebrew.mxcl.httpd.plist
  • Stoppen Sie jeden Homebrew-httpd-Dienst mit (sudo) brew services stop httpd
  • Stoppen Sie alle von apachectl gestarteten httpd:

    apachectl stop
    sudo apachectl stop
    sudo /usr/sbin/apachectl stop
    
  • Öffnen Sie den Aktivitätsmonitor und überprüfen Sie, ob kein httpd-Prozess ausgeführt wird.
  • Starten Sie neu

Geben Sie nun - vorausgesetzt, Sie möchten Homebrews httpd für privilegierte Ports verwenden - Folgendes ein:

sudo brew services start httpd

Überprüfen Sie den erfolgreichen Start mit sudo brew services list.

Klanomath
quelle
Beim Versuch, das von Ihnen bereitgestellte Update durchzuführen, erhalte ich dieselbe Ausgabe wie ich. apachectl stopliefert die Ausgabe von httpd (no pid file) not runningund wenn ich laufe sudo brew services httpd start sudo brew services list zeigt apache2 (httpd) startedin einer gelben Farbe an Wenn ich versuche, auf etwas zuzugreifen, das mit der Webseite zu tun hat, kann ich nicht. Ich frage mich, ob das Update auf 10.13 etwas in Apache geändert hat, das den Start verhindert.
Alcyeonnero
14

In Bezug auf Homebrew httpd war ein Problem, auf das ich kürzlich gestoßen bin, eine alte übrig gebliebene httpd.pid-Datei, die den Start von httpd verhinderte. Symptom wurde apachectl startgesagt, httpd läuft bereits, aber es war nicht.

Ursache war hier eine alte Datei:

/usr/local/var/run/httpd/httpd.pid

Die Lösung bestand darin, diese PID-Datei zu löschen und dann httpd zu starten.

Eduard Rozenberg
quelle
großartig! Dies ist mein Problem, wenn mein MBP entscheidet, dass er nicht aus dem Schlaf erwacht und ich ihn aus- und wieder einschalten muss.
Frumbert
2
Diese Lösung funktionierte auch in MacOS Mojave. Brew glaubte, dass Apache lief, aber es gab keinen httpdAktivitätsmonitor. Dies hat es behoben.
Vahid Amiri
Das hat mir viel Ärger erspart!
SEJU
Das hat auch bei mir funktioniert. Ich konnte keine Website laden und bekam immer wieder ERR_CONNECTION_REFUSED. Als ich versuchte, die Dienste aufzulisten, mit denen ausgeführt brew services listwurde, erhielt ich den gelben Status "Start", was bedeutete, dass mit dem aktiven Status des Servers etwas nicht stimmte. Das Entfernen der PID hat dies behoben und jetzt zeigt die Serviceliste den aktiven Status stattdessen als grünes "Gestartet" an. Danke dafür!
Mike Kormendy
Wenn Ihr Computer nach einer Kernel-Panik / einem Stromausfall / usw. schwer neu gestartet wurde, ist dies wahrscheinlich Ihr Problem. Vielen Dank!
Dom Stubbs
2

Ich sah mich dem auch gegenüber, nachdem ich heute früher auf High Sierra umgestiegen war. Ich fand heraus, dass die folgenden Apache-Dateien durch brandneue Versionen ersetzt wurden. Zum Glück gab es für alle diese Dateien eine DATEI ~ vorherige Datei im selben Ordner. Ich habe gerade die ~ vorherige Version zurück in die ursprüngliche Version kopiert, Apache neu gestartet und alles war in Ordnung.

Im Ordner /etc/apache2:

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

Beispiel:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
Unmesh
quelle
In dem Ordner /etc/apache2/extra/befinden sich ungefähr 10 Dateien mit ~ vorherigen Anhängen, falls alle geändert werden sollten, oder nur die beiden, die Sie im /etc/apache2/extra/Ordner erwähnen
Alcyeonnero
Ich würde mit den Dateien httpd.conf und httpd-vhosts.conf beginnen. Wenn Sie über ein SSL-Setup verfügen, müssen Sie auch die Datei httpd-ssl.conf aktualisieren. Der Rest hängt davon ab, ob Sie sie früher geändert haben. Ich würde ein Diff verwenden, um zu sehen, ob sich die Dateien geändert haben, z. B. diff httpd.conf httpd.conf ~ zuvor für alle anderen Dateien
Unmesh
Ich habe mit diesen Dateien begonnen, die nichts geändert haben.
Alcyeonnero
1

Ich hatte das gleiche Problem

com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1

Dies bedeutet, dass httpd abnormal beendet wurde.

Ich habe dann manuell httpd gestartet, um zu sehen, was das Problem war

> httpd
(13)Permission denied: AH00091: httpd: could not open error log file /usr/local/var/log/httpd/error_log.

Bei den Berechtigungen war es ziemlich klar

> ll /usr/local/var/log/httpd/
total 96
-rw-r--r--  1 root  admin    242 15 apr 12:38 access_log
-rw-r--r--  1 root  admin  42062 20 jun 11:01 error_log

Ich glaube, ich habe httpd als root gestartet, was dieses Problem verursacht hat. Ich habe die Dateien entfernt und danach

brew services restart httpd

Alles war in Ordnung.

Hans Pikkemaat
quelle
0

Ich würde im Gegenteil vorschlagen, was HomeBrew sagt, immer httpd von sudo laufen zu lassen. Wenn Sie ps -aef | grep httpd ausführen, wird es als ausgeführt angezeigt. Wenn Sie auf sudo verzichten, wird keine ps-Ausgabe ausgegeben, die möglicherweise den falschen Eindruck erweckt, dass httpd nicht ausgeführt wird.

Ich bin mir auch nicht sicher, ob in beiden Fällen unterschiedliche oder gleiche Konfigurationen geladen sind. Ich habe PHP installiert und die Datei test.php mit phpinfo im DocumentRoot-Verzeichnis erstellt. Wenn Sie Apache mit sudo starten, wird möglicherweise phpinfo mit localhost / test.php angezeigt, während Sie Brew Services verwenden. Wenn Sie httpd starten, wird eine Fehlermeldung angezeigt, wenn sich DocumentRoot in einem Bereich befindet, in dem Root-Zugriff erforderlich ist.

Sebastian
quelle