Comment désenregistrer correctement httpd
de se lancer au redémarrage après une sudo wfsctl start
et suivants sudo wfsctl stop
?
Le contexte :
wfsctl
est un "utilitaire de contrôle du partage de fichiers WebDAV" publié avec MacOS High Sierra. wfsctl
est situé à /usr/sbin/wfsctl
.
Dans mon cas, après une installation initiale de MacOS High Sierra, le programme Apache httpd
n'est pas initialement en train de servir le contenu. (Ceci était attendu.) L'observation que httpd ne servait pas pouvait être observée de différentes manières, notamment :
- type
localhost
dans un navigateur web sur la même machine -
type
curl localhost
dans le terminal sur la même machine.curl localhost
curl: (7) Failed to connect to localhost port 80: Connection refused
Lorsque le wfsctl
Les services WebDAV sont démarrés pour la première fois, puis httpd
est également lancé.
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
Il n'est pas surprenant qu'un Apache httpd
a été lancé. Bien que l'Apache de base httpd
commence également à servir le contenu de /Library/WebServer/Documents en plus et séparément de tout partage WebDAV. En particulier, index.html
est renvoyé par l'intermédiaire de l'un ou l'autre des éléments suivants localhost
dans un navigateur web ou curl localhost
dans l'application 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>
Enfin, arrêtez les services WebDAV avec sudo wfsctl stop
puis redémarrez. Après le redémarrage, httpd
est apparemment toujours en cours :
# 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
Note de bas de page : Est-ce un comportement raisonnablement attendu que sudo wfsctl stop
ne désenregistre pas également httpd
?
Peut-être wfsctl
présume ne pas interférer avec d'autres services à pourrait être utilisé pour lancer le httpd
serveur web ? (Bien que, dans mon cas d'utilisation, httpd
n'a pas été activé par d'autres moyens que wfsctl
.)