OS X 10.10.3: Apache (2.4.12) + Passenger 5.0.10 от Homebrew не работает

683
Drew

Попытка настроить Snorby (приложение ruby) для работы с Apache / 2.4.12 и Passenger 5.0.10.

- Я успешно установил из доморощенного апача и пассажира.

brew install httpd24 passenger 

- Создан /etc/apache/other/passenger.conf (как указано в Homebrew):

LoadModule passenger_module /usr/local/opt/passenger/libexec/buildout/apache2/mod_passenger.so PassengerRoot /usr/local/opt/passenger/libexec/lib/phusion_passenger/locations.ini PassengerDefaultRuby /usr/local/var/rbenv/versions/1.9.3-p551/bin/ruby 

- Включен модуль виртуальных хостов в /usr/local/etc/apache2/2.4/httpd.conf :

# Virtual hosts Include /usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf 

а также

LoadModule vhost_alias_module libexec/mod_vhost_alias.so 

- Создан виртуальный хост в /usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf :

<VirtualHost *:8080> ServerAdmin Andryuwka@localhost ServerName snorby.server.loc ServerAlias www.snorby.server.loc DocumentRoot /usr/local/var/www/snorby/public <Directory "/usr/local/var/www/snorby/public"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride all Order deny,allow Allow from all #Require all granted Options -MultiViews </Directory> </VirtualHost> 

- добавлено 127.0.0.1 snorby.server.loc www.snorby.server.locв / etc / hosts

- перезапустил httpd с apachectl restart

но при навигации по сайту www.snorby.server.loc в браузере вместо запуска приложения, управляемого rails (страница входа в Snorby и информационные панели), получая только содержимое файлов /usr/local/var/www/snorby/public:

Index of /  404.html 422.html 500.html assets/ favicon.ico favicon.png flash/ images/ javascripts/ robots.txt stylesheets/ 

Должно быть что-то вроде этого поста (прокрутите вниз): https://www.corelan.be/index.php/2011/02/27/cheat-sheet-install-snorby-2-2-with-apache2-and- Suricata-с-barnyard2-на-убунту-10-х /

Поэтому я предполагаю, что пассажир не работает с Apache должным образом и не запускает приложение (поправьте меня, если я ошибаюсь). Что я делаю неправильно? apachectl -M | sortдает мне это (ничего с "пассажиром"):

access_compat_module (shared) alias_module (shared) auth_basic_module (shared) authn_core_module (shared) authn_file_module (shared) authz_core_module (shared) authz_groupfile_module (shared) authz_host_module (shared) authz_user_module (shared) autoindex_module (shared) core_module (static) dir_module (shared) env_module (shared) filter_module (shared) headers_module (shared) http_module (static) log_config_module (shared) mime_module (shared) mpm_prefork_module (static) php5_module (shared) reqtimeout_module (shared) setenvif_module (shared) so_module (static) status_module (shared) unixd_module (shared) version_module (shared) vhost_alias_module (shared) Loaded Modules: 

Хотя доморощенный утверждает, что их apache уже настроен для работы с пассажирами, мне интересно, есть ли способ проверить это?

0

2 ответа на вопрос

0
Josip Rodin

The PassengerRoot pointing to an .ini file doesn't appear to make sense, it's supposed to be a directory. See the documentation at https://www.phusionpassenger.com/documentation/Users%20guide%20Apache.html#PassengerRoot

Изменен на `PassengerRoot / usr / local / opt / passenger / libexec / lib / phusion_passenger /`, перезапустил apache - ничего не изменилось, также попробовал `PassengerRoot / usr / local / opt / passenger /` - не повезло (( ( Drew 9 лет назад 0
Хорошо, но ни один из этих каталогов не находится (в пределах) вашего виртуального хоста DocumentRoot, и в них нет псевдонима. Попробуйте сделать это. Josip Rodin 9 лет назад 0
Как это сделать? Ну, я изменил виртуальный хост DocumentRoot следующим образом: `DocumentRoot / usr / local / opt / passenger / libexec / lib / phusion_passenger / location.ini`, и он сломал мой виртуальный хост, так что теперь я получаю это в браузере:` Not Найдено Запрошенный URL / не найден на этом сервере. Drew 9 лет назад 0
@ И снова, часть после DocumentRoot не может быть файлом, она должна быть каталогом. Сделать так, чтобы они оба были в одном каталоге? Josip Rodin 9 лет назад 0
Ой, извините, это была опечатка. Я имел в виду, что сделал это: изменил виртуальный хост DocumentRoot на это: `DocumentRoot / usr / local / opt / passenger / libexec / lib / phusion_passenger`, и это не помогло. Drew 9 лет назад 0
И это расположение совпадает с выводом `passenger-config --root` на вашей машине? Josip Rodin 9 лет назад 0
спасибо за попытку помочь, но вы ошиблись: DocumentRoot может быть не только каталогом, но и файлом со списком каталогов, например мой `/ usr / local / opt / passenger / libexec / lib / phusion_passenger / location.ini` в этом нет ничего плохого. Я уже нашел правильное решение и опубликовал его. Вы должны были прочитать объяснение проблемы более внимательно, и последний блок кода имеет подсказку для корня проблемы. Drew 9 лет назад 0
DocumentRoot? Вы имеете в виду PassengerRoot? В любом случае, это противоречит приведенной выше документации. Josip Rodin 9 лет назад 0
lol Извините, вы правы - PassengerRoot (не DocumentRoot), но опять же это не противоречит документации (это только пример). С `... / location.ini` все работает, как и ожидалось, проблема была в том, что пассажир модуля не был загружен и` apachectl -M | вроде как показал. если был неправильный PassengerRoot, он все равно будет отображать загруженный пассажирский модуль. Drew 9 лет назад 0
0
Drew

Наконец парень из Homebrew проекта на GitHub указал мне в правильном направлении. По какой-то причине мой /usr/local/etc/apache2/2.4/httpd.conf, который был создан с установкой Homebrew httpd24, не имеет этой строки: Include /usr/local/etc/apache2/2.4/other/*.conf(хотя homebrew утверждает, что она должна быть - я думаю, это было относительно недавнее изменение)

Вот почему у меня не было пассажирского модуля при проверке apachectl -M | sort. ( например: по умолчанию /etc/apache2/httpd.conf есть Include /private/etc/apache2/other/*.conf)

Итак, я добавил Include /usr/local/etc/apache2/2.4/other/*.confв мой /usr/local/etc/apache2/2.4/httpd.conf, и это работает.