it-swarm.com.de

OSX Wie wird der Apache-Status im Terminal angezeigt?

Ich habe festgestellt, dass auf meinem Linux-Server beim Eingeben von apachectl restart nur wenig, aber hilfreiches Feedback wie restarting und dann [ok] oder [fail] am Ende der Zeile. Nicht viel, aber zumindest weiß ich, was los ist, und ich kann Protokolle überprüfen.

Auf meinem OS X bekomme ich nichts. nur die nächste Zeile sofort:

sh-3.2# /usr/sbin/apachectl stop   
sh-3.2# /usr/sbin/apachectl start
sh-3.2# 

Wie kann ich diese Debug-Funktionen aktivieren?

11
mgPePe

Wie wäre es mit dem Apachectl-Wrapper-Skript, das Sie am Ende so etwas anbringen.

tail -5 /var/log/httpd/error_log

sie sollten so etwas in einem normalen Start sehen

  • [Fri Apr 22 23:39:20 2011] [Notiz] Digest: Generieren von Geheimnissen für
    Digest-Authentifizierung ...
  • [Fri Apr 22 23:39:20 2011] [Notiz] Digest: fertig
  • [Fri Apr 22 23:39:20 2011] [warn] pid-Datei
    /mlk/Apache/pid/httpd.pid überschrieben - Unreines Herunterfahren des vorherigen Apache-Laufs?
  • [Fri Apr 22 23:39:20 2011] [Hinweis] Apache/2.0.63 (Unix) DAV/2 konfiguriert - Wiederaufnahme des normalen Betriebs

Andernfalls sollte ein Fehler zumindest teilweise hier angezeigt werden. Der Schlüsselbegriff ist oben hervorgehoben.

Zusätzlich:/usr/sbin/apachectl gehört root. Sie müssen ein privilegierter Benutzer sein, um dies zu tun. Sudo vi/usr/sbin/apachectl

gehen Sie zum Ende der Datei und fügen Sie diese zwischen die Zeilen "esac" und "exit $ ERROR" ein. dh.

esac
sleep 2; tail -5 /var/log/httpd/error_log
exit $ERROR

Beachten Sie, dass dadurch die letzten Zeilen ausgedruckt werden, unabhängig davon, welche Aktion Sie mit dem Skript ausführen. Stoppen Sie den Start und starten Sie den Computer neu. Möglicherweise möchten Sie es nur in den Anfangsteil der case-Anweisung einfügen.

5
Michael Henry

Ich habe das gleiche Problem auf meinem Mac. Immer wenn ich versuche, Apache zu starten und nichts passiert, führe ich diesen Befehl sofort aus. In meinem Fall scheint das Problem immer in den Apache-Konfigurationsdateien zu liegen.

apachectl configtest
30
Randy Findley

apachectl auf dem Mac ist ein Wrapper um einige launchctl -Befehle (schauen Sie einfach in die Datei). Leider wird launchctl nicht mit einem Fehlercode beendet, wenn beim Starten von httpd etwas schief geht, sodass das Skript keine einfache Möglichkeit hat, etwas anzuzeigen, selbst wenn es dies versucht.

Eine grundlegende Überprüfung, die Sie selbst durchführen können, besteht darin, die Existenz von Apache-Prozessen nach dem apachectl start Befehl.

ps aux | grep httpd
8
Sven

Unter macOS mit dem Befehl netstat wird die gesamte Netzwerkverbindung angezeigt. Sie können nur "Listen" -Verbindungen filtern und die http (s) -Server anzeigen.

Mit diesem Code können Sie eine Bash-Datei erstellen:

status="$(netstat -at | grep LISTEN | grep *.http)"
count="$(echo "${status}" | grep -Ev "^$" | wc -l)"

if [ ${count} -eq 0 ] ; then
    echo " Apache server is not running"
fi   

echo "${status}" | 
while IFS= read -r line
do
    echo " ${line}"
done

Ergebnis, wenn der Server gestoppt ist Sudo apachectl -k stop wird sein:

Apache server is not running

Ergebnis, wenn der Server ausgeführt wird Sudo apachectl -k stop wird sein:

tcp46      0      0  *.https                *.*                    LISTEN     
tcp46      0      0  *.http                 *.*                    LISTEN     

In diesem Beispiel laufen zwei Server, einer mit https und einer mit http.

0
equiman