Настройка пассажира с виртуальными хостами 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 и т. Д. Работают, но я не могу заставить Пассажира загрузить приложение.
Как обычно, я настроил сервер, используя скрипт bash, который содержит следующий раздел, касающийся установки Пассажира:
# 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
1 ответ
На основании документации вам необходимо отключить MultiViews на пассажирских сайтах. Кроме того, ваш DocumentRoot
должен указывать на каталог, содержащий публичные - то есть Пассажир проверяет, содержит ли выбранный каталог пассажирское приложение, проверяя {DocumentRoot}/../config/environment.rb
, поэтому убедитесь, что это правильно.
Если вы все еще в тупике, включите ведение журнала и выясните, почему он не считает, что у вас есть приложение Passenger в этом месте.