OSX come mostrare lo stato di apache nel terminale?


11

Ho notato che sul mio server Linux quando digito apachectl restart mi dà un feedback piccolo ma utile come restartinge poi [ok]o [fail]alla fine della riga. Non molto, ma almeno so cosa sta succedendo e posso andare a controllare i registri.

Sul mio OS X non ottengo nulla. solo la riga successiva immediatamente:

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

Come posso abilitare queste funzionalità di "debug"?


Non ho familiarità con OS X, ma è possibile modificare lo script init per aggiungere una echoriga.
quanta

dov'è quella sceneggiatura? e a quale riga devo aggiungere echo? Siamo spiacenti, sono nuovo in giro e ho bisogno di dettagli: \
mgPePe

Non sono un tipo OS X, ma forse segue solo la filosofia Unix di "nessuna notizia è una buona notizia", ​​e inizia a tormentarti solo se c'è qualcosa che non va?
Janne Pikkarainen,

hmm errori silenziosi non aiutano, quindi non sono un fan davvero
mgPePe

Si prega di pubblicare il contenuto di /usr/sbin/apachectl.
maggio

Risposte:


5

Che ne dici dello script wrapper apachectl alla fine attaccare qualcosa del genere.

tail -5 /var/log/httpd/error_log

dovresti vedere qualcosa del genere in un avvio normale

  • [Ven 22 Apr 23:39:20 2011] [avviso] Digest: generare segreto per l'
    autenticazione digest ...
  • [Ven 22 Apr 23:39:20 2011] [avviso] Digest: fatto
  • [Ven 22 Apr 23:39:20 2011] [avvertire] file pid
    /mlk/apache/pid/httpd.pid sovrascritto - Arresto impuro della precedente esecuzione di Apache?
  • [Ven 22 Apr 23:39:20 2011] [avviso] Apache / 2.0.63 (Unix) configurato DAV / 2 - ripresa delle normali operazioni

In caso contrario, qualsiasi errore dovrebbe almeno in parte essere mostrato qui. La frase chiave è oscurata sopra.

Ulteriore: / usr / sbin / apachectl è di proprietà di root, per farlo devi essere un utente privilegiato. sudo vi / usr / sbin / apachectl

spostare alla fine del file e inserirlo tra le righe "esac" e "exit $ ERROR". vale a dire.

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

Nota che questo stamperà le ultime righe a prescindere dall'azione che fai con lo script, ferma l'avvio, riavvia. potresti volerlo inserire solo nella parte iniziale dell'istruzione case.


Sembra una possibile soluzione. E come potrei collegarlo in modo che venga eseguito automaticamente con ogni comando di riavvio?
mgPePe

Ho dovuto ssh nel mio server macos a casa per guardare / usr / bin / apachectl Guarda nella risposta sopra ho aggiunto i comandi per modificare il file.
Michael Henry,

30

Ho lo stesso problema sul mio mac. Ogni volta che tento di avviare apache e non succede nulla, eseguo immediatamente questo comando. Nel mio caso il problema sembra essere sempre nei file di configurazione di Apache.

apachectl configtest

Grazie per questo. Stavo incontrando questo problema da solo, e risulta che un aggiornamento a SQLite homebrew stava causando PHP homebrew a dare il via a un errore Apache che non si presentava da nessuna parte se non in configurazione.
AlexMax,

Grazie, grazie, grazie!!! Questo ha appena salvato la mia sanità mentale !!!
E infine il

1
la versione breve di questo comando èapachectl -t
equiman,

Questo comando ti dirà se la configurazione httpd di Apache (httpd.conf) è priva di errori di sintassi. Per vedere se il processo è in esecuzione, è possibile eseguire "htop" e quindi F4 per filtrare su "httpd" per vedere tutti i processi generati da httpd.
Puneet Lamba,

8

apachectlsul Mac c'è un involucro attorno ad alcuni launchctlcomandi (basta guardare nel file). Sfortunatamente, launchctl non esce con un codice di errore quando qualcosa va storto all'avvio httpd, quindi lo script non ha un modo semplice per visualizzare nulla, anche se ci prova.

Un controllo di base che puoi eseguire da solo è verificare l'esistenza dei processi Apache dopo il apachectl startcomando.

ps aux | grep httpd

in un certo senso, stai dicendo "non ci sono tali informazioni di debug che puoi impostare su macosx, ma è così che puoi controllare se il server apache è in esecuzione", giusto?
mgPePe

Sì, questo è tutto.
Sven

0

Su macOS con netstatcomando visualizza tutta la connessione di rete. Puoi filtrare solo le connessioni "in ascolto" e vedere i server http (s).

Puoi creare un file bash con questo codice:

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

Il risultato all'arresto del server sudo apachectl -k stopsarà:

Apache server is not running

Il risultato quando il server è in esecuzione sudo apachectl -k stopsarà:

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

In questo esempio ho due server in esecuzione, uno con https e un altro con http.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.