OSX jak pokazać status apache w terminalu?


11

Zauważyłem, że na moim serwerze z linuksem, gdy piszę, uruchom ponownie apachectl, daje mi niewiele, ale pomocne informacje zwrotne, takie jak restartingwtedy [ok]i [fail]na końcu linii. Niewiele, ale przynajmniej wiem, co się dzieje i mogę sprawdzić dzienniki.

Na moim OS X nic nie dostaję. natychmiast następny wiersz:

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

Jak mogę włączyć te funkcje „debugowania”?


Nie znam OS X, ale możesz edytować skrypt init, aby dodać echolinię.
kwanty

gdzie jest ten skrypt? i do której linii mam dodać echo? Przepraszam, jestem nowy i potrzebuję szczegółów: \
mgPePe

Nie jestem facetem z OS X, ale być może jest to zgodne z filozofią uniksową, zgodnie z którą „brak wiadomości to dobra wiadomość” i zaczyna cię nękać tylko wtedy, gdy coś jest nie tak?
Janne Pikkarainen,

hmm ciche błędy nie pomagają, więc tak naprawdę nie jestem fanem
mgPePe

Proszę zamieścić treść /usr/sbin/apachectl.
kwanty

Odpowiedzi:


5

Co powiesz na skrypt otoki apachectl, który umieścisz na końcu coś takiego?

tail -5 /var/log/httpd/error_log

powinieneś zobaczyć coś takiego podczas normalnego uruchamiania

  • [Pt 22 kwietnia 23:39:20 2011] [zawiadomienie] Podsumowanie: generowanie sekretu dla
    uwierzytelnienia streszczenia ...
  • [Pt 22 kwietnia 23:39:20 2011] [zawiadomienie] Podsumowanie: gotowe
  • [Pt 22 kwietnia 23:39:20 2011] [ostrzeżenie] plik pid
    /mlk/apache/pid/httpd.pid nadpisany - Nieczyste zamknięcie poprzedniego uruchomienia Apache?
  • [Pt 22 kwietnia 23:39:20 2011] [zawiadomienie] Konfiguracja Apache / 2.0.63 (Unix) DAV / 2 - wznowienie normalnej pracy

W przeciwnym razie każdy błąd powinien być przynajmniej częściowo pokazany tutaj. Kluczowe zdanie znajduje się powyżej.

Dodatkowo: / usr / sbin / apachectl jest własnością root, musisz być uprzywilejowanym użytkownikiem, aby to zrobić. sudo vi / usr / sbin / apachectl

przejdź na koniec pliku i wstaw go między wierszami „esac” i „exit $ ERROR”. to znaczy.

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

Zauważ, że to wydrukuje kilka ostatnich wierszy, bez względu na to, co zrobisz ze skryptem, przestań, uruchom ponownie. możesz umieścić go tylko w części początkowej instrukcji przypadku.


To brzmi jak możliwe rozwiązanie. Jak mogę go dołączyć, aby automatycznie uruchamiał się przy każdym poleceniu restartu?
mgPePe

Musiałem ssh na moim serwerze macos w domu, aby spojrzeć na / usr / bin / apachectl Spójrz w powyższej odpowiedzi dodałem polecenia do edycji pliku.
Michael Henry

30

Mam ten sam problem na moim komputerze Mac. Kiedykolwiek próbuję uruchomić apache i nic się nie dzieje, natychmiast uruchamiam to polecenie. W moim przypadku problemem zawsze wydają się być pliki konfiguracyjne apache.

apachectl configtest

Dzięki za to. Sam napotkałem ten problem i okazało się, że aktualizacja homebrew SQLite spowodowała, że ​​homebrew PHP wywołało błąd Apache, który nie pojawił się nigdzie indziej niż w configtest.
AlexMax

Dziekuję Dziekuję Dziękuję!!! To właśnie uratowało mi zdrowie psychiczne !!!
I wreszcie

1
krótka wersja tego polecenia toapachectl -t
equiman 11.04.17

To polecenie powie ci, czy konfiguracja Apache httpd (httpd.conf) jest wolna od błędów składniowych. Aby sprawdzić, czy proces jest uruchomiony, możesz uruchomić „htop”, a następnie F4, aby przefiltrować „httpd”, aby zobaczyć wszystkie procesy odradzane przez httpd.
Puneet Lamba

8

apachectlna Macu znajduje się opakowanie wokół niektórych launchctlpoleceń (wystarczy zajrzeć do pliku). Niestety, launchctl nie wychodzi z kodem błędu, gdy coś idzie nie tak z uruchomieniem httpd, więc skrypt nie ma łatwego sposobu na wyświetlenie czegokolwiek, nawet jeśli spróbuje.

Podstawowa kontrola, którą możesz wykonać samodzielnie, to sprawdzenie istnienia procesów Apache po apachectl startkomendzie.

ps aux | grep httpd

w pewnym sensie mówisz: „nie ma takich informacji debugowania, które można ustawić na Macosxie, ale w ten sposób możesz sprawdzić, czy serwer apache działa”, prawda?
mgPePe

Tak, o to chodzi.
Sven

0

W systemie macOS z netstatpoleceniem wyświetl całe połączenie sieciowe. Możesz filtrować tylko połączenia „nasłuchuj” i przeglądać serwery http (s).

Możesz utworzyć plik bash z tym kodem:

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

Rezultatem zatrzymania serwera sudo apachectl -k stopbędzie:

Apache server is not running

Wynik podczas działania serwera sudo apachectl -k stopbędzie:

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

W tym przykładzie mam dwa serwery, jeden z https i drugi z http.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.