Проблема при запуске приложения Rails / Passenger на слайсе, который также обслуживает статические html-сайты - PullRequest
2 голосов
/ 16 июля 2010

Я запускаю приложение Rails на выносливой коробке Ubuntu с пассажиром. У меня также есть пара базовых сайтов html, работающих на одном компьютере. Моя проблема в том, что apache vhost, настроенный для сайтов html, похоже, блокирует разрешение моего приложения Rails по правильному URL.

У меня есть несколько приложений Rails, работающих на разных срезах с использованием пассажира, поэтому я знаю, как это сделать вообще.

Я не получаю никаких ошибок в терминале или в логах apache. Кажется, что все работает отлично, но сайт не будет разрешен по правильному URL. Вместо этого, когда я захожу на URL, где должно быть мое приложение Rails, я вижу сайт, который является виртуальным хостом apache по умолчанию на моем слайсе.

Чтобы подтвердить свое предположение, я отключил все vhosts на моем слайсе, связанные со статическими html-страницами. После этого мое приложение Rails появилось по правильному адресу и работало нормально. Когда я снова включил vhosts для html-сайтов, я снова вернулся к той же проблеме.

Могу поспорить, что это легко исправить, но я не могу понять. Кто-нибудь знает?

Спасибо.

Обновление для ответа на вопрос в комментарии

Да, статические сайты работают сами по себе. При любых обстоятельствах статические сайты в порядке.

Мои файлы vhost используют супер базовую настройку. Файлы vhost статического сайта выглядят так:

<VirtualHost *:80>

  ServerName foo.com
  ServerAlias www.foo.com

  DirectoryIndex index.html
  DocumentRoot /home/blah/public_html/foo/public

</VirtualHost>

Файл vhost пассажира выглядит так:

<VirtualHost *:80>

  ServerName  bar.com
  ServerAlias www.bar.com

  DocumentRoot /home/blah/public_html/bar/current/public

</VirtualHost>

Ответы [ 2 ]

1 голос
/ 06 сентября 2010

Если вы хотите проверить конфигурацию виртуального хоста apache, попробуйте выполнить:

apache2 -S

или

apache2 -t -D DUMP_VHOSTS

оба должны сбросить ваш список vhosts. Может быть, ваш виртуальный хост rails получает другой IP-адрес?

0 голосов
/ 16 июля 2010

Была ли у вас опция -MultiViews включить / выключить?

<VirtualHost *:80>
    ServerName www.phusion.nl
    DocumentRoot /websites/phusion
    <Directory /websites/phusion>
        Allow from all
    </Directory>

    RailsBaseURI /rails                   # <-- These lines have
    <Directory /websites/phusion/rails>   # <-- been added.
        Options -MultiViews               
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>                          
</VirtualHost>

Эффект MultiViews заключается в следующем: если сервер получает запрос на / some / dir / foo, если / some / dirс поддержкой MultiViews и / some / dir / foo не существует, тогда сервер считывает каталог, ища файлы с именем foo. *, и эффективно подделывает карту типов, которая называет все эти файлы, назначая им одинаковые типы медиа и контент- кодировки, которые он имел бы, если бы клиент попросил одного из них по имени.Затем он выбирает лучшее соответствие требованиям клиента

...