Як я можу визначити, який конфігураційний файл використовує Apache?


36

Я намагаюся налаштувати віртуальних хостів на Mac OS X. Я модифікував httpd.conf і перезапустив сервер, але не пощастив змусити його працювати. Крім того, я зауважую, що він не подає файли в DocumentRoot, згаданому в httpd.conf (Бібліотеки / WebServer / Документи), а в іншому каталозі (/ usr / local / apache2 / htdocs). Я не бачу цієї папки ніде в httpd.conf. Крім того, PHP працює, але рядок "LoadModule php5_module" коментується. Це змушує мене думати, що він використовує інший .conf файл. Як я можу зрозуміти, який конфігурація завантажується насправді?

Оновлення. Щойно я видалив, що httpd.conf та apache поводяться так само після перезавантаження, тому його точно не використовували!

Відповіді:


45

З будь-яким додатком * nix найпростішим методом є запит на саму бінарну. У випадку з httpd, я думаю, що процес буде приблизно таким:

$ 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"

Як бачите - моя ОС X каже, що двійковий файл, якщо не спрямований інакше, буде використовувати файл config: /private/etc/apache2/httpd.conf

Якщо це не допоможе, можливо , пропозиція Крістофера про знахідку є наступним кроком.


2
Це не спрацює, якщо ви використовуєте Apache через Server.app. У цьому випадку вам знадобиться список процесів у відповіді від @msanford serverfault.com/a/155114/187798, який показує, що Server.app починає httpd з іншим файлом конфігурації, як показано тут у моїй установці (Mavericks)/usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/apache2/httpd_server_app.conf -D WEBSERVICE_ON
Jason S

також не працює при використанні apache, встановленого через macports - відповідь msandord працює для мене!
pgee70


10

Спробуйте

ps ax | grep httpd

і вам слід (можливо) отримати вихід, як

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

Крім того, як саме ви перезапускаєте сервер? Просто цікаво , в разі , якщо ви як - то чи не на самому ділі перечитуючи конфігураційний файл.


гм, у ньому немає -fпрапора
Клавдіу,

1
+1 Оскільки це єдина відповідь, яка працює у всіх випадках, тобто якщо ви налаштовуєте Apache самостійно або використовуєте Apache через Server.app
Jason S

2

Оскільки деякі конфігуратори використовують серверний додаток, пивоварне чи що завгодно, і тому, що один вкладиш FTW:

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

Цією командою виконайте наступне:

  • Знайдіть активний процес httpd
  • Інформація про конфігурацію виводу
  • Обріжте конфігураційний файл

Випробували на Сьєррі та Ель-Капітан


Це $важливо (в цьому випадку це не командний рядок). Якщо перетворення оператора в паренах перетворюється в команду, якій ми передаємо -Vпрапор. Якщо вийти з нього, це призведе до: "помилки синтаксису біля несподіваного маркера` -V '".
Том Ожер

0

Спочатку перевірте, який сценарій запуску для Apache. Для macOS це має бути / Бібліотека / LaunchDaemons. Це може включати робочий каталог або подібну інформацію.

Ви також можете налагодити сам запущений процес за допомогою dtruss. Ви можете підключитися до запущеного процесу за допомогою dtruss -p <pid>. Тоді, якщо ви його HUP, ви, ймовірно, зможете переглядати вихід, щоб побачити, звідки він захоплює його конфігурацію. Крім того, просто запустіть Apache, зателефонувавши dtruss безпосередньо за допомогою dtruss start_apache_command.

Ви завжди можете просто здійснити загальносистемний пошук за httpd.conf find / -name httpd.conf.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.