2 votes

Comment désenregistrer "httpd" après "wfsctl stop" ?

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 .)

1voto

l --marc l Points 267

Comme indiqué dans la question, sudo wfsctl stop n'arrête pas et ne désenregistre pas le httpd processus. Cependant, le httpd Les démons sont arrêtés et redémarrés. Aussi, httpd reste enregistré pour démarrer lors du prochain (re)démarrage.

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

Le site man wfsctl mentionne que l'utilisation de httpd-wrapper est préférable à l'utilisation de apachectl y httpd (au moins pour le -t drapeau de test).

Le fichier de configuration Apache pour le partage de fichiers WebDAV est paramétré, et le serveur httpd est géré par la fonction httpd-wrapper qui transmet des paramètres à httpd . Ceci est normalement transparent, mais notez que pour vérifier la syntaxe du fichier de configuration d'Apache, n'utilisez pas apachectl configtest o httpd -t . Au lieu de cela, utilisez httpd-wrapper -t .

En général, les options présentées dans le man httpd peut être transmise à la page /usr/sbin/httpd-wrapper ruby script. La plupart des options fonctionnent comme prévu.

Cependant, sudo httpd-wrapper -k graceful-stop se comporte comme une réinitialisation qui redémarre la httpd démons et feuilles httpd enregistré pour démarrer lorsque le système redémarre.

Enfin, sudo apachectl graceful-stop a été trouvé pour arrêter et désenregistrer le httpd processus.

Ainsi, la séquence de commande suivante arrêtera à la fois la wfsctl Le partage WebDAV et le httpd daemons sur l'actuelle High Sierra.

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

Voir "Comment mettre en place wfsctl WebDAV à utiliser avec une application qui utilise l'authentification de base ?" pour un exemple WebDAV plus complet.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X