OSX comment afficher le statut d'apache dans le terminal?

11

J'ai remarqué que sur mon serveur Linux lorsque je tape apachectl restart, il me donne des commentaires peu mais utiles tels que restartinget puis [ok]ou [fail]à la fin de la ligne. Pas grand-chose, mais au moins je sais ce qui se passe et je peux aller consulter les journaux.

Sur mon OS X, je ne reçois rien. juste la ligne suivante immédiatement:

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

Comment puis-je activer ces fonctionnalités de «débogage»?

mgPePe
la source
Je ne connais pas OS X, mais vous pouvez modifier le script init pour ajouter une echoligne.
quanta
où est ce script? et à quelle ligne dois-je ajouter echo? Désolé, je suis nouveau et j'ai besoin de détails: \
mgPePe
Je ne suis pas un gars OS X, mais peut-être que cela suit simplement la philosophie Unix de "aucune nouvelle n'est une bonne nouvelle", et commence à vous harceler seulement s'il y a quelque chose qui ne va pas?
Janne Pikkarainen
hmm les erreurs silencieuses n'aident pas, donc je ne suis pas vraiment fan
mgPePe
Veuillez publier le contenu de /usr/sbin/apachectl.
quanta

Réponses:

5

Que diriez-vous dans le script d'encapsulation apachectl vous collez quelque chose comme ça à la fin.

tail -5 /var/log/httpd/error_log

vous devriez voir quelque chose comme ça dans un démarrage normal

  • [Ven 22 avr 23:39:20 2011] [avis] Digest: génération de secret pour l'
    authentification Digest ...
  • [Ven 22 avr 23:39:20 2011] [avis] Résumé: terminé
  • [Ven Apr 22 23:39:20 2011] [warn] pid file
    /mlk/apache/pid/httpd.pid écrasé - Arrêt impur de la précédente exécution d'Apache?
  • [Ven 22 avr 23:39:20 2011] [notice] Apache / 2.0.63 (Unix) DAV / 2 configuré - reprise des opérations normales

Sinon, toute erreur devrait au moins en partie être montrée ici. La phrase clé est mise en évidence ci-dessus.

Supplémentaire: / usr / sbin / apachectl appartient à root, vous devez être un utilisateur privilégié pour ce faire. sudo vi / usr / sbin / apachectl

déplacez-vous à la fin du fichier et insérez-le entre les lignes "esac" et "exit $ ERROR". c'est à dire.

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

Notez que cela imprimera les dernières lignes, quelle que soit l'action que vous entreprenez avec le script, arrêtez de démarrer, redémarrez. vous souhaiterez peut-être le mettre uniquement dans la partie de début de la déclaration de cas.

Michael Henry
la source
Cela ressemble à une solution possible. Et comment pourrais-je l'attacher pour qu'il s'exécute automatiquement à chaque commande de redémarrage?
mgPePe
J'ai dû ssh dans mon serveur macos à la maison pour regarder / usr / bin / apachectl Regardez dans la réponse ci-dessus, j'ai ajouté les commandes pour modifier le fichier.
Michael Henry
30

J'ai le même problème sur mon mac. Chaque fois que j'essaie de démarrer apache et que rien ne se passe, j'exécute immédiatement cette commande. Dans mon cas, le problème semble toujours être dans les fichiers de configuration d'apache.

apachectl configtest
Randy Findley
la source
Merci pour cela. Je rencontrais moi-même ce problème et il se trouve qu'une mise à jour de homebrew SQLite faisait que homebrew PHP lançait une erreur Apache qui n'apparaissait nulle part sauf dans configtest.
AlexMax
Merci merci merci!!! Cela vient de sauver ma santé mentale !!!
Et enfin
1
la version courte de cette commande estapachectl -t
equiman
Cette commande vous indiquera si la configuration Apache httpd (httpd.conf) est exempte d'erreurs de syntaxe. Pour voir si le processus est en cours d'exécution, vous pouvez exécuter "htop" puis F4 pour filtrer sur "httpd" pour voir tous les processus générés par httpd.
Puneet Lamba
8

apachectlsur le Mac est un wrapper autour de certaines launchctlcommandes (il suffit de regarder dans le fichier). Malheureusement, launchctl ne se termine pas avec un code d'erreur lorsque quelque chose se passe mal au démarrage httpd, donc le script n'a aucun moyen facile d'afficher quoi que ce soit, même s'il essaie de le faire.

Une vérification de base que vous pouvez effectuer vous-même consiste à vérifier l'existence de processus Apache après la apachectl startcommande.

ps aux | grep httpd
Sven
la source
d'une certaine manière, vous dites: "il n'y a pas de telles informations de débogage que vous pouvez définir sur macosx, mais c'est ainsi que vous pouvez vérifier si le serveur Apache fonctionne", n'est-ce pas?
mgPePe
Oui, c'est à peu près tout.
Sven
0

Sur macOS avec netstatcommande affiche toute la connexion réseau. Vous pouvez filtrer uniquement les connexions «écouter» et voir les serveurs http (s).

Vous pouvez créer un fichier bash avec ce code:

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

Le résultat lorsque le serveur est arrêté sudo apachectl -k stopsera:

Apache server is not running

Le résultat lorsque le serveur est en cours d'exécution sudo apachectl -k stopsera:

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

Dans cet exemple, j'ai deux serveurs en cours d'exécution, un avec https et un autre avec http.

equiman
la source