J'ai un problème où Apache ne démarre pas après la mise à jour vers High Sierra 10.13.1. Il n'y a rien qui s'affiche dans les journaux d'erreurs, mais quand j'essaye, apachectl start
rien ne se passe. Si je cours, apachectl configtest
je reçois "Syntaxe OK
J'ai utilisé des commandes comme sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
en vain. Apache ne démarre pas. Je peux courir sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.httpd.plist
et ça ne marche pas non plus.
J'ai jeté un coup d'œil à la liste des services de brassage et httpd apparaît dans la liste avec d'autres processus (mysql) mais le statut de httpd montre un "commencé" jaune au lieu d'un vert.
J'ai essayé beaucoup de choses différentes, et ce que je trouve, c'est que si je regarde dans le fichier system.log, je trouve com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1
Si j'exécute apachectl start, la commande semble fonctionner, mais lorsque j'exécute la commande d'arrêt, j'obtiens "httpd (pas de fichier pid) non exécuté.
Je reçois également la sortie de com.; Apple.xpc.launchd [1] ( org.apache.httpd): Veuillez passer de OnDemand à KeepAlive.
Y a-t-il quelque chose avec High Sierra qui empêche Apache de fonctionner quand il fonctionnait bien dans Sierra?
la source
brew services list' I receive a yellow indicator, I checked with all of the available users and ran
services de brassage »et ils affichent tous le même indicateur. Quant à un guide de configuration, Ansible a été utilisé pour configurer apache. Cela a été fait sur 5 autres MacBook, ils exécutent toujours Sierra. Ce MacBook a eu un problème et un Apple a exécuté un diagnostic et réinitialisé le système d'exploitation, tout en mettant à jour le système d'exploitation vers High Sierraapachectl start
). Pareil avec... configtest
!httpd
formule Homebrew , et maintenant apache ne répond pas. Quand je faisbrew services list
, je reçois aussistarted
pour httpd en jaune, et quand je lancesudo apachectl stop
, il me dit quehttpd (pid 87?) not responding.
Réponses:
À mon avis, vous avez arrosé vos différents démons de lancement httpd / mécanismes de démarrage en exécutant trop de commandes liées à httpd.
Avec homebrew et apache-httpd de homebrew installés et le CHEMIN par défaut, vous avez six façons de démarrer httpd.
Apache d'Apple:
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
sudo /usr/sbin/apachectl start
Apache de Homebrew:
sudo apachectl start
apachectl start
sudo brew services start httpd
brew services start httpd
Si vous avez copié le fichier homebrew.mxcl.httpd.plist manuellement dans ~ / Library / LaunchAgents / ou / Library / LaunchDaemons / vous avez deux autres options pour le démarrer en les chargeant avec
(sudo) launchctl load ...
.Si vous n'avez pas modifié les fichiers de configuration httpd ou les scripts apachectl, la branche Apple utilisera le fichier httpd.conf d'Apple dans / var et DocumentRoot dans le dossier / Library.
La branche homebrew utilise des sous-dossiers dans / usr / local /.
Certaines méthodes de lancement ne fonctionneront pas si vous avez lié les ports httpd à des ports inférieurs à 1024!
Si vous utilisez
(sudo) brew services ...
pour démarrer httpd, vous devez utiliser la(sudo) brew services list
commande appropriée pour vérifier l'état:Si vous le démarrez en tant que root, puis répertoriez-le avec les privilèges root:
sudo brew services start httpd
>sudo brew services list
ou avec des privilèges utilisateur:
brew services start httpd
>brew services list
.Pour résoudre votre problème, déchargez httpd d'Apple:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
(sudo) brew services stop httpd
arrêter tout httpd démarré par apachectl:
Maintenant - en supposant que vous souhaitez utiliser httpd de homebrew sur des ports privilégiés - entrez:
Vérifiez le démarrage réussi avec
sudo brew services list
.la source
apachectl stop
fournit la sortie dehttpd (no pid file) not running
et lorsquesudo brew services httpd start
sudo brew services list
j'exécute indique apache2 (httpd)started
dans une couleur jaune Lorsque j'essaie d'accéder à quoi que ce soit de la page Web, je ne peux pas. Je me demande si la mise à jour vers 10.13 a modifié quelque chose dans apache l'empêchant de démarrer.Concernant l'homebrew httpd, un problème que j'ai récemment rencontré était un ancien fichier httpd.pid restant qui empêchait httpd de démarrer. Le symptôme a été
apachectl start
dit que httpd est déjà en cours d'exécution, mais ce n'était pas le cas.La cause était un ancien fichier ici:
La solution était de supprimer ce fichier pid, puis httpd a commencé.
la source
httpd
de moniteur d'activité. Cela l'a corrigé.brew services list
j'obtenais le statut jaune «démarré», ce qui signifiait qu'il y avait un problème avec le statut actif du serveur. La suppression du pid a corrigé cela et maintenant la liste des services affiche le statut actif comme vert 'commencé' à la place maintenant. Merci pour ça!J'ai fait face au même problème après ma mise à niveau vers High Sierra plus tôt dans la journée. J'ai trouvé que les fichiers apache suivants ont été remplacés par de nouvelles versions. Heureusement pour tous ces fichiers, il existait un fichier FILE ~ précédent dans le même dossier. Je viens de recopier la ~ version précédente dans la version d'origine, de redémarrer Apache et tout allait bien.
Dans le dossier
/etc/apache2
:Exemple:
la source
/etc/apache2/extra/
il y a environ 10 fichiers avec ~ précédent ajouté à eux, si tous ceux-ci doivent être modifiés, ou juste les deux que vous mentionnez dans le/etc/apache2/extra/
dossierJ'ai eu le même problème
Cela signifie que httpd s'est arrêté anormalement.
J'ai ensuite démarré manuellement httpd pour voir quel était le problème
En regardant les autorisations, c'était assez clair
Je pense que j'ai commencé httpd en tant que root, ce qui a causé ce problème. J'ai supprimé les fichiers et après
tout allait bien.
la source
Je l'ai rencontré récemment. La cause est que homebrew installe apache2 / httpd dans des dossiers accessibles par l'utilisateur et s'exécute en tant qu'utilisateur (en exécutant la commande: brew services start httpd).
Ne pas fonctionner en tant qu'utilisateur normal signifie que httpd ne peut pas écouter sur les ports privilégiés (1024 et inférieurs).
Ainsi, même si httpd.conf est configuré pour écouter 80 et 443, httpd ne peut pas recevoir de demandes via ces ports.
La particularité est lorsque vous démarrez httpd en exécutant la commande: sudo apachectl start. Cette commande démarre httpd en tant qu'utilisateur root. L'utilisateur root est autorisé à écouter sur les ports 80 et 443. httpd abandonne ensuite les privilèges en cours d'exécution en tant qu'utilisateur _www.
Donc, la réponse courte est d'exécuter homebrew httpd sur les ports 80 et 443 est de le démarrer en utilisant: sudo apachectl start. Vous pouvez également le démarrer avec: sudo brew services start httpd. Brew vous dira qu'il réclame certains dossiers pour root, ce qui, je suppose, est correct mais pas nécessaire car sudo apachectl start ne nécessite pas d'autorisations de fichiers et / ou de changements de propriétaire.
la source
Je dirais au contraire ce que HomeBrew dit toujours exécuter httpd par sudo. Là, si vous faites ps -aef | grep httpd, vous le verrez répertorié comme en cours d'exécution. Faire sans sudo ne produit aucune sortie ps qui peut donner une mauvaise impression que httpd n'est pas en cours d'exécution.
De plus, je ne sais pas s'il existe des configurations différentes ou les mêmes dans les deux cas. J'ai installé PHP et créé le fichier test.php avec phpinfo dans le répertoire DocumentRoot. Si vous démarrez apache avec sudo, vous pouvez voir phpinfo avec localhost / test.php lors de l'utilisation des services de brassage, démarrer httpd vous donnera une erreur si DocumentRoot se trouve dans la zone où l'accès root est requis.
la source