Я настраиваю новый сервер, на котором я собираюсь разместить несколько приложений 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 в этом месте.