Tengo un problema en el que Apache no se iniciará después de actualizar a High Sierra 10.13.1. No hay nada que se muestre en los registros de errores, pero cuando intento apachectl start
no pasa nada. Si ejecuto apachectl configtest
, recibo "Sintaxis OK
He usado comandos como sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
en vano. Apache no se iniciará. Puedo correr sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.httpd.plist
y eso tampoco funciona.
Eché un vistazo a la lista de servicios de preparación y httpd aparece en la lista junto con otro proceso (mysql) pero el estado de httpd muestra un "iniciado" amarillo en lugar de uno verde.
He intentado muchas cosas diferentes, y lo que estoy encontrando es que si busco en el archivo system.log, encuentro com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1
Si ejecuto apachectl start, el comando parece funcionar, pero cuando ejecuto el comando stop obtengo "httpd (no pid file) no ejecutándose.
También estoy recibiendo la salida de com.; Apple.xpc.launchd [1] ( org.apache.httpd): cambie de OnDemand a KeepAlive.
¿Hay algo con High Sierra que impide que Apache se ejecute cuando funciona bien en Sierra?
fuente
brew services list' I receive a yellow indicator, I checked with all of the available users and ran
servicios de brebaje y todos muestran el mismo indicador. En cuanto a una guía de configuración, Ansible se usó para configurar apache. Esto se ha hecho en otros 5 MacBooks, todavía están ejecutando Sierra. Este MacBook tenía un problema y una Apple ejecutó un diagnóstico y restableció el sistema operativo, mientras actualizaba el sistema operativo a High Sierraapachectl start
). Lo mismo con... configtest
!httpd
fórmula Homebrew , y ahora Apache no responde. Cuando lo hagobrew services list
, también obtengo elstarted
httpd en amarillo, y cuando corrosudo apachectl stop
, me dice quehttpd (pid 87?) not responding.
Respuestas:
En mi opinión, mangaste tus diversos demonios de lanzamiento httpd / mecanismos de inicio ejecutando demasiados comandos relacionados con httpd.
Con homebrew y apache-httpd de homebrew instalados y la RUTA predeterminada, tiene seis formas de iniciar httpd.
Apache de 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 ha copiado el archivo homebrew.mxcl.httpd.plist manualmente en ~ / Library / LaunchAgents / o / Library / LaunchDaemons / tiene dos opciones más para comenzar cargándolos
(sudo) launchctl load ...
.Si no modificó los archivos de configuración httpd o los scripts apachectl en gran medida, la rama de Apple utilizará el archivo httpd.conf de Apple en / var y DocumentRoot en la carpeta / Library.
La rama homebrew usa subcarpetas en / usr / local /.
¡Algunos métodos de inicio no funcionarán si ha vinculado los puertos httpd a puertos inferiores a 1024!
Si usa
(sudo) brew services ...
para iniciar httpd, debe usar el(sudo) brew services list
comando adecuado para verificar el estado:Si lo inicia como root, enumérelo con privilegios de root:
sudo brew services start httpd
>sudo brew services list
o con privilegios de usuario:
brew services start httpd
>brew services list
.Para resolver su problema, descargue el httpd de Apple:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
(sudo) brew services stop httpd
Detenga cualquier httpd iniciado por apachectl:
Ahora, suponiendo que desea utilizar httpd de homebrew en puertos privilegiados, ingrese:
Verifique el comienzo exitoso con
sudo brew services list
.fuente
apachectl stop
proporciona la salida dehttpd (no pid file) not running
y cuando ejecutosudo brew services httpd start
sudo brew services list
indica apache2 (httpd)started
en color amarillo. Cuando intento acceder a cualquier página web relacionada, no puedo. Me pregunto si la actualización a 10.13 alteró algo en Apache impidiendo que se inicie.Con respecto a homebrew httpd, un problema con el que me topé recientemente fue un archivo httpd.pid sobrante que impedía que httpd se iniciara. El síntoma
apachectl start
decía que httpd ya se está ejecutando, pero no fue así.Porque era un archivo viejo aquí:
La solución fue eliminar este archivo pid y luego comenzó httpd.
fuente
httpd
monitor de actividad. Esto lo solucionó.brew services list
recibí el estado amarillo 'iniciado', lo que significaba que había algo mal con el estado activo del servidor. Eliminar el pid solucionó esto y ahora la lista de servicios muestra el estado activo como un 'iniciado' verde en su lugar ahora. ¡Gracias por esto!Me enfrenté a lo mismo después de actualizarme a High Sierra el día de hoy. Encontré que los siguientes archivos apache fueron reemplazados por nuevas versiones. Afortunadamente para todos estos archivos existía un ARCHIVO ~ archivo anterior en la misma carpeta. Acabo de copiar la ~ versión anterior a las originales, reinicié Apache y todo estuvo bien.
En carpeta
/etc/apache2
:Ejemplo:
fuente
/etc/apache2/extra/
hay aproximadamente 10 archivos con ~ anterior anexa a ellos, deberían todos ellos pueden cambiar, o simplemente los dos que mencionas en la/etc/apache2/extra/
carpetaYo tuve el mismo problema
Esto significa que httpd salió anormalmente.
Luego comencé manualmente httpd para ver cuál era el problema
Mirando los permisos, estaba bastante claro
Creo que comencé httpd como root que causó este problema. Eliminé los archivos y luego
Todo estuvo bien.
fuente
Me encontré con esto recientemente. La causa es que homebrew instala apache2 / httpd en carpetas accesibles para el usuario y se ejecuta como usuario (ejecutando el comando: brew services start httpd).
No ejecutarse como un usuario normal significa que httpd no puede escuchar en puertos privilegiados (1024 y menos).
Entonces, incluso si httpd.conf está configurado para escuchar 80 y 443, httpd no puede recibir solicitudes a través de esos puertos.
La peculiaridad es cuando inicia httpd ejecutando el comando: sudo apachectl start. Este comando inicia httpd como usuario root. El usuario raíz puede escuchar en los puertos 80 y 443. httpd luego deja de funcionar los privilegios como el usuario _www.
Entonces, la respuesta corta es ejecutar homebrew httpd en los puertos 80 y 443 es iniciarlo usando: sudo apachectl start. También puede iniciarlo con: sudo brew services start httpd. Brew le dirá que está reclamando ciertas carpetas para root, lo que supongo que está bien, pero no es necesario ya que sudo apachectl start no requiere permisos de archivo y / o cambios de propietario.
fuente
Sugeriría por el contrario lo que dice HomeBrew siempre ejecuta httpd por sudo. Por lo tanto, si hace ps -aef | grep httpd, verá que aparece como en ejecución. Hacerlo sin sudo no produce una salida ps que pueda dar una impresión incorrecta de que httpd no se está ejecutando.
Además, no estoy seguro de si hay configuraciones diferentes o iguales cargadas en ambos casos. Instalé PHP y creé el archivo test.php con phpinfo en el directorio DocumentRoot. Si comienza apache con sudo, puede ver phpinfo con localhost / test.php mientras usa brew services start httpd le dará un error si DocumentRoot está en el área donde se requiere acceso root.
fuente