Я пытаюсь настроить виртуальные хосты в Mac OS X. Я изменял httpd.conf и перезагружал сервер, но мне так и не удалось заставить его работать. Кроме того, я заметил, что он обслуживает файлы не в DocumentRoot, упомянутом в httpd.conf (Libraries / WebServer / Documents), а в другом каталоге (/ usr / local / apache2 / htdocs). Я не вижу упоминания этой папки в httpd.conf. Кроме того, PHP работает, но строка «LoadModule php5_module» закомментирована. Это заставляет меня думать, что он использует другой файл .conf. Как я могу определить, какая конфигурация загружается на самом деле?
Обновление: я только что удалил этот httpd.conf, и apache ведет себя так же после перезапуска, поэтому он определенно не использовал его!
Для любого приложения * 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"
Как видите, моя OS X говорит, что двоичный файл, если не указано иное, будет использовать файл конфигурации: /private/etc/apache2/httpd.conf
Если это не поможет, возможно, предложение Кристофера найти это следующий шаг.
Есть еще один вопрос о сбое сервера относительно этот. Если вы используете сервер на основе Debian, вы можете использовать apache2ctl
чтобы определить, какой файл конфигурации используется:
apache2ctl -V
Подробнее об этом:
Как узнать, какой httpd.conf apache использует во время выполнения
Пытаться
ps ax | grep httpd
и вы должны (могли бы) получить результат вроде
1633 ?? Ss 0:00.21 /usr/sbin/httpd -f /etc/httpd.conf
Кроме того, как именно вы перезагружаете сервер? Просто любопытно, если ты почему-то не фактически перечитать файл конфигурации.
Потому что в некоторых конфигурациях используется серверное приложение, варево или что-то еще, и потому что один лайнер содержит FTW:
$(ps ax -o comm | grep -m 1 httpd) -V | grep SERVER_CONFIG_FILE
Эта команда делает следующее:
Протестировано на Сьерре и Эль-Капитане
Сначала проверьте, какой сценарий запуска для Apache. Для macOS это должен быть / Library / LaunchDaemons. Это может быть рабочий каталог или аналогичная информация.
Вы также можете отлаживать сам запущенный процесс с помощью dtruss. Вы можете подключиться к запущенному процессу, используя dtruss -p <pid>
. Затем, если вы его HUP, вы, вероятно, сможете просмотреть вывод, чтобы увидеть, откуда он берет свою конфигурацию. Или просто запустите Apache, вызвав dtruss напрямую с помощью dtruss start_apache_command
.
Вы всегда можете просто выполнить общесистемный поиск httpd.conf с помощью find / -name httpd.conf
.