Comment savoir quel fichier de configuration est utilisé par Apache?

36

J'essaie de configurer des hôtes virtuels sur Mac OS X. J'ai modifié httpd.conf et redémarré le serveur, mais je n'ai pas eu la moindre chance de le faire fonctionner. De plus, je remarque qu'il ne sert pas les fichiers dans le répertoire DocumentRoot mentionné dans httpd.conf (bibliothèques / serveur Web / documents), mais dans un répertoire différent (/ usr / local / apache2 / htdocs). Je ne vois pas ce dossier mentionné nulle part dans httpd.conf. De plus, PHP fonctionne, mais la ligne "LoadModule php5_module" est commentée. Cela me fait penser qu'il utilise un autre fichier .conf. Comment savoir quelle configuration est en train d'être chargée?

Mise à jour: Je viens de supprimer que httpd.conf et apache se comportent de la même manière après le redémarrage, ils ne l'utilisaient donc pas!

Claudiu
la source

Réponses:

45

Avec toute application * nix, la méthode la plus simple consiste à interroger le binaire lui-même. Dans le cas de httpd, j'imagine que le processus ressemblerait à ceci:

$ whereis httpd
/usr/sbin/httpd
$ /usr/sbin/httpd -V
Server version: Apache/2.2.11 (Unix)
Server built:   Jun 17 2009 14:55:13
Server's Module Magic Number: 20051115:21
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/usr"
 -D SUEXEC_BIN="/usr/bin/suexec"
 -D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/private/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

Comme vous pouvez le voir - mon OS X dit que le binaire, s'il n'est pas dirigé autrement, utilisera le fichier de configuration: /private/etc/apache2/httpd.conf

Si cela ne vous aide pas, la suggestion de Christopher de trouver est peut-être la prochaine étape.

Zayne S Halsall
la source
2
Cela ne fonctionnera pas si vous utilisez Apache via Server.app. Dans ce cas, vous aurez besoin de la liste des processus dans la réponse de @msanford serverfault.com/a/155114/187798, qui indique que Server.app démarre httpd. avec un fichier de configuration différent comme indiqué ici à partir de mon installation (Mavericks)/usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/apache2/httpd_server_app.conf -D WEBSERVICE_ON
Jason S
ne fonctionne pas non plus avec Apache installé via macports - answer by msandord fonctionne pour moi!
Pgee70
10

Essayer

ps ax | grep httpd

et vous devriez (peut-être) obtenir une sortie comme

1633   ??  Ss     0:00.21 /usr/sbin/httpd -f /etc/httpd.conf

De plus, comment redémarrez-vous exactement le serveur? Juste curieux au cas où vous ne liriez pas réellement le fichier de configuration.

msanford
la source
hm il n'a pas le -fdrapeau dedans
Claudiu
1
+1 Comme c'est la seule réponse qui marche dans tous les cas, c'est si vous configurez vous-même Apache ou si vous utilisez Apache via Server.app
Jason S
2

Parce que certaines configurations utilisent Server app, brew ou autre, et parce que l'on se glisse dans FTW:

$(ps ax -o comm | grep -m 1 httpd) -V | grep SERVER_CONFIG_FILE

Cette commande effectue les opérations suivantes:

  • Trouver un processus httpd actif
  • Informations de configuration de sortie
  • Grep le fichier de configuration

Testé sur Sierra et El Capitan

Creaforge
la source
Le $est important (ce n'est pas l'invite de ligne de commande dans ce cas). Si convertit l'instruction en parenthèse en une commande à laquelle nous passons l' -Vindicateur. Le laisser de côté entraîne: "une erreur de syntaxe près du jeton inattendu` -V '".
Tom Auger
0

Commencez par vérifier quel est le script de démarrage pour Apache. Pour macOS, ce devrait être / Library / LaunchDaemons. Cela pourrait inclure un répertoire de travail ou des informations similaires.

Vous pouvez également déboguer le processus en cours avec dtruss. Vous pouvez vous connecter au processus en cours en utilisant dtruss -p <pid>. Ensuite, si vous le faites HUP, vous pouvez probablement explorer la sortie pour voir où il va récupérer sa configuration. Vous pouvez également démarrer Apache en appelant directement dtruss avec dtruss start_apache_command.

Vous pouvez toujours faire une recherche à l’échelle du système pour httpd.conf avec find / -name httpd.conf.

Christopher Karel
la source