Apache2 (Httpd) no funciona después de actualizar a High Sierra

6

Tengo un problema donde Apache no se iniciará después de actualizar a High Sierra 10.13.1. No se muestra nada en los registros de errores, pero cuando intento apachectl start no ocurre nada. Si ejecuto apachectl configtest , recibo "Sintaxis OK

He utilizado comandos como sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist sin éxito. Apache no se iniciará. Puedo ejecutar 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 "inicio" 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 el inicio de apachectl, el comando parece funcionar, pero cuando ejecuto el comando de detención aparece "httpd (sin archivo pid) no se está ejecutando.
También estoy recibiendo la salida de com.; Apple.xpc.launchd [1] (org.apache.httpd): Por favor, cambie de OnDemand a KeepAlive.

¿Hay algo con High Sierra que esté evitando que Apache se ejecute cuando funcionó bien en Sierra?

    
pregunta Alcyeonnero 17.11.2017 - 16:33

3 respuestas

9

En mi opinión, usted instaló sus diversos demonios de inicio / lanzamiento de httpd ejecutando demasiados comandos relacionados con httpd.

Con homebrew y homebrew's apache-httpd instalado y el PATH predeterminado, tienes 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 has copiado el archivo homebrew.mxcl.httpd.plist manualmente en ~ / Library / LaunchAgents / o / Library / LaunchDaemons / tienes dos opciones más para iniciarlo cargándolos con (sudo) launchctl load ... .

Si no modificó los archivos de configuración httpd o los scripts de apachectl en gran medida, la sucursal de Apple usará el archivo httpd.conf de Apple en / var y el DocumentRoot en la carpeta / Library.

La rama de homebrew usa subcarpetas en / usr / local /.

¡Algunos métodos de inicio no funcionarán si has vinculado los puertos httpd a puertos inferiores a 1024!

Si usa (sudo) brew services ... para iniciar httpd, tiene que usar el comando (sudo) brew services list 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 usuario privs:

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
  • eliminar cualquier homebrew.mxcl.httpd.plist instalado manualmente
  • detener cualquier servicio httpd de homebrew con (sudo) brew services stop httpd
  • detener cualquier httpd iniciado por apachectl:

    apachectl stop
    sudo apachectl stop
    sudo /usr/sbin/apachectl stop
    
  • Abra el Monitor de actividad y verifique que no se esté ejecutando ningún proceso httpd.
  • reiniciar

Ahora, suponiendo que desea utilizar httpd de homebrew en puertos privilegiados, ingrese:

sudo brew services start httpd

Comprueba el inicio exitoso con sudo brew services list .

    
respondido por el klanomath 18.11.2017 - 03:15
3

En relación con homebrew httpd, uno de los problemas que encontré recientemente era un archivo httpd.pid sobrante antiguo que impedía el inicio de httpd. El síntoma fue apachectl start dijo que httpd ya se está ejecutando, pero no lo estaba.

La causa era un archivo antiguo aquí:

/usr/local/var/run/httpd/httpd.pid

La solución fue eliminar este archivo pid y luego se inició httpd.

    
respondido por el Eduard Rozenberg 25.05.2018 - 16:30
2

Me enfrenté a lo mismo después de actualizar a High Sierra el día de hoy. Encontré que los siguientes archivos apache fueron reemplazados por versiones nuevas. 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 la carpeta /etc/apache2 :

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

Ejemplo:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
    
respondido por el Unmesh 21.11.2017 - 00:31

Lea otras preguntas en las etiquetas