Назад | Перейти на главную страницу

Установка пассажира с виртуальными хостами Apache?

Я настраиваю новый сервер, на котором я собираюсь разместить несколько приложений Ruby on Rails.

На сервере работает Ubuntu 10.04 LTS, и я настроил виртуальные хосты Apache, чтобы каждое приложение имело собственный файл конфигурации, доступный для сайтов (указывающий на общедоступный каталог Rails). Затем я сделал символическую ссылку из sites-enabled/(CONFIG FILE HERE) к sites-available/(CONFIG FILE HERE).

Доступные сайты

root@HAH-UBUNTU-GER /etc/apache2/sites-available # ls
default  default-ssl  application1.com  application2.com

Сайты включены (символические ссылки)

root@HAH-UBUNTU-GER /etc/apache2/sites-enabled # ls
000-default  application1.com  application2.com

Подробнее о символических ссылках:

root@HAH-UBUNTU-GER /etc/apache2/sites-enabled # ls -l
total 0
lrwxrwxrwx 1 root root 26 2012-05-04 11:41 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root 39 2012-05-04 12:28 application1.com -> ../sites-available/application1.com
lrwxrwxrwx 1 root root 37 2012-05-04 12:09 application2.com -> ../sites-available/application2.com

Я загрузил все файлы приложения Rails в /var/www/vhosts/application1.com и убедитесь, что файл конфигурации Apache указывает на общедоступный каталог.

Bundler, ruby ​​gems и т. Д. Работает, но я не могу заставить Passenger загрузить приложение.

Как обычно, я настроил сервер с помощью сценария bash, который содержит следующий раздел, относящийся к установке Passenger:

# Install and setup the Apache Passenger Module
yes '' | sudo /usr/local/bin/passenger-install-apache2-module

# Add the Passenger config to /etc/apache2/httpd.conf
sudo cat > /etc/apache2/httpd.conf << HTTPD_CONF
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-      3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11
PassengerRuby /usr/local/bin/ruby
HTTPD_CONF

Полный файл конфигурации виртуального хоста для application1.com:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName application1.com
    DocumentRoot /var/www/vhosts/application1.com/public
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/vhosts/application1.com/public>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all

Если это имеет значение, я получаю доступ к веб-сайту, редактируя свой файл hosts, чтобы указать IP-адрес сервера на отдельных доменах.

Когда я захожу в домен, я получаю список общедоступного каталога:

Я предполагаю, что делаю что-то совершенно очевидно неправильное, но не могу этого понять. Любая помощь будет оценена.

Для получения дополнительной информации полный сценарий bash, который я использую, находится здесь: https://raw.github.com/deanperry/onelineserver/master/ruby192.sh

ОБНОВИТЬ

Loaded Modules:
 core_module (static)
 log_config_module (static)
 logio_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 alias_module (shared)
 auth_basic_module (shared)
 authn_file_module (shared)
 authz_default_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgi_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 php5_module (shared)
 reqtimeout_module (shared)
 setenvif_module (shared)
 status_module (shared)
Syntax OK

На основании документации, вам нужно будет отключить MultiView на пассажирских сайтах. Кроме того, ваш DocumentRoot должен указывать на каталог, содержащий общедоступные, т. е. Passenger проверяет, есть ли в выбранном каталоге приложение для пассажиров проверив для {DocumentRoot}/../config/environment.rb, поэтому убедитесь, что это правильно.

Если ты все еще в тупике, включить ведение журнала и выясните, почему он не думает, что у вас есть приложение Passenger в этом месте.