¿Cómo anular el registro de "httpd" después de "wfsctl stop"?

2

¿Cómo se anula correctamente el registro de httpd del inicio al reiniciar después de sudo wfsctl start y el siguiente sudo wfsctl stop ?

Background:

wfsctl es una "utilidad de control de uso compartido de archivos WebDAV" lanzada con macOS High Sierra. wfsctl se encuentra en /usr/sbin/wfsctl .

En mi caso, después de una instalación inicial de macOS High Sierra, el daemon Apache httpd no está sirviendo contenido inicialmente. (Esto se esperaba.) La observación de que httpd no estaba funcionando podía observarse de varias maneras, incluyendo:

  • escriba localhost en un navegador web en la misma máquina
  • escriba curl localhost en el terminal en la misma máquina.
curl localhost
# curl: (7) Failed to connect to localhost port 80: Connection refused

Cuando los servicios wfsctl WebDAV se inician por primera vez, también se inicia httpd .

sudo wfsctl start
# ... 
sudo wfsctl diagnose
# ... snip ...
# All httpd processes:
# COMM             RUSER             PPID   PID STARTED
# httpd            root                 1   885  4:18PM
# httpd            _www               885   890  4:18PM

No fue sorprendente que se haya iniciado un Apache httpd . Aunque, la configuración de línea de base de Apache httpd también comienza a servir los contenidos de / Library / WebServer / Documents además de y es independiente de cualquier recurso compartido de WebDAV. En particular, el contenido de index.html se devuelve a través de localhost en un navegador web o curl localhost en la aplicación de Terminal.

curl localhost --verbose
# * Connected to localhost (::1) port 80 (#0)
# > GET / HTTP/1.1
# > Host: localhost
# > User-Agent: curl/7.54.0
# > Accept: */*
# > 
# < HTTP/1.1 200 OK
# < Server: Apache/2.4.28 (Unix) mod_secure_transport/2.4.27
# < Content-Location: index.html.en
# <html><body><h1>It works!</h1></body></html>

Finalmente, detenga los servicios WebDAV con sudo wfsctl stop , luego reinicie. Después de reiniciar, httpd aparentemente aún se está ejecutando:

# after 'sudo wfsctl stop' and system reboot ...
curl localhost
# <html><body><h1>It works!</h1></body></html>

sudo wfsctl status
# disabled

sudo wfsctl diagnose
# ...
# WFS is not enabled.
# ...
# All httpd processes:
# COMM   RUSER  PPID   PID STARTED
# httpd  root      1    85  6:12PM
# httpd  _www     85   414  6:13PM

Nota al pie: ¿Es un comportamiento razonablemente esperado que sudo wfsctl stop no anula también el registro de httpd ?

¿Tal vez wfsctl presume que no interfiere con otros servicios con podría usarse para iniciar el servidor web httpd ? (Aunque, en mi caso de uso, httpd no se habilitó por ningún otro medio que no sea wfsctl .)

    
pregunta l --marc l 06.02.2018 - 03:24

1 respuesta

1

Como se señaló en la pregunta, sudo wfsctl stop no se detiene y anula el registro del proceso httpd . Sin embargo, los daemons httpd se detienen y reinician. Además, httpd permanece registrado para comenzar en el próximo (re) arranque.

sudo wfsctl diagnose
# All httpd processes:
# COMM   RUSER   PPID   PID STARTED
# httpd  root       1   325  8:46PM
# httpd  _www     325   331  8:46PM
sudo wfsctl stop
sudo wfsctl diagnose
# All httpd processes:
# COMM    RUSER  PPID   PID STARTED
# httpd   root      1   399 10:19PM
# httpd   _www    399   403 10:19PM

El man wfsctl menciona que el uso de httpd-wrapper se prefiere al uso de apachectl y httpd (al menos para el indicador de prueba -t ).

  

El archivo de configuración de Apache para el uso compartido de archivos WebDAV está parametrizado, y el servidor httpd es administrado por la utilidad httpd-wrapper , que pasa los parámetros a httpd . Esto normalmente es transparente, pero tenga en cuenta que para verificar la sintaxis del archivo de configuración de Apache, no use apachectl configtest o httpd -t . En su lugar, utilice httpd-wrapper -t .

En general, las opciones que se muestran en la página man httpd se pueden pasar al script /usr/sbin/httpd-wrapper ruby. La mayoría de las opciones funcionan como se esperaba.

Sin embargo, sudo httpd-wrapper -k graceful-stop se comporta como un reinicio que reinicia los daemons httpd y deja httpd registrado para que se inicie cuando el sistema se reinicie nuevamente.

Finalmente, se encontró que sudo apachectl graceful-stop detiene y anula el registro de los procesos httpd .

Por lo tanto, la siguiente secuencia de comandos detendrá el uso compartido de wfsctl WebDAV y los daemons httpd en la Sierra Alta actual.

sudo wfsctl stop
# Unloaded and removed: org.apache.httpd.webdavfilesharing.username-275.49176.plist
sudo apachectl graceful-stop
# verify
sudo wfsctl diagnose

Consulte " ¿Cómo configurar wfsctl WebDAV para usar con una aplicación que usa autenticación básica? " para un ejemplo más completo de WebDAV.

    
respondido por el l --marc l 15.02.2018 - 07:45

Lea otras preguntas en las etiquetas