Я пытаюсь настроить Rails на экземпляр Ubuntu, следуя вместе с документацией, такой как https://help.ubuntu.com/community/RubyOnRails. Я пытаюсь настроить приложение на странице Rails Getting Started здесь: http://guides.rubyonrails.org/getting_started.html.
Что я сделал до сих пор:
- Установка Ruby/RubyGems/Rails через RVM и GEM (этот установлен Ruby 1.9.2 и Rails 3.0.7)
- Установка модуля mysql и mysql2 (последний не работал)
- Создание приложения rails (приложение для блога в качестве учебного пособия)
- Сим-связь/home/me/www/blog/public/from/var/www/blog/
- Создание БД через грабли
- Установка пассажирского модуля для выполнения Rails в Apache
- Запуск
passenger-install-apache2-module
для настройки Apache - Удаление файла public.html из общедоступной /rails папки приложения, чтобы мой контроллер/просмотр мог запустить
- Конфигурация доступных для сайтов файлов для виртуальных хостов
- Конфигурация маршрутизации Rails
Я считаю, что это два последних шага, которые меня отключают, отчасти из-за незнания Apache и Rails (я новичок в обоих).
В моем файле виртуального хоста я пытаюсь указать на публичный общедоступный блог в /var/www/blog. Для моего маршрута Rails у меня есть root :to => "home#index"
в соответствии с инструкциями.
Когда я просматриваю URL-адрес http://, я обычно должен видеть мои "Hello, Rails!". в разделе 4.3 Руководства по началу работы, но все, что я вижу, это список каталогов из Apache. Статические страницы работают, но не обрабатываются Rails.
В этот момент я не понимаю, работает ли пассажирский модуль и что-то делать, или где искать какие-либо доказательства того, что происходит. Я пробовал разные вещи, такие как запуск приложения Rails с другого виртуального хоста под названием "блог" в блоге http:///и работающей маршрутизации (статические страницы и все), но без Rails, как указано выше.
Обновление: после игры еще несколько, я получаю новое сообщение об ошибке (404):
Не найдено
Запрошенный URL/dispatch.cgi был не найден на этом сервере.
С тех пор я определил, что этот cgi 404 был вызван правилом перезаписи, которое я добавил в .htaccess из руководства на странице help.ubuntu.com, о которой я говорил выше. Похоже, что это не было необходимо или применялось к более ранней версии Rails. Несоответствия в инструкциях при поиске помощи в Интернете дезориентируют! Удаление файла оставляет меня с предыдущей проблемой.
Здесь запись в журнале Apache, которая, как мне кажется, коррелирует с первой ошибкой. Хотя я больше не получаю эту ошибку, кажется, может быть связано с чем-то еще, что я пытался раньше...
[Fri May 27 22:49:41 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9 with Suhosin-Patch Phusion_Passenger/3.0.7 configured -- resuming normal operations
[Fri May 27 22:51:18 2011] [error] [client 192.168.1.141] File does not exist: /var/www/blog/rails, referer: http://192.168.1.138/blog/
Здесь самая последняя запись с 404 на cgi вещь:
[Sat May 28 08:01:18 2011] [error] [client 192.168.1.141] File does not exist: /var/www/blog/dispatch.cgi
Что я могу пропустить? Спасибо!
Дополнительная информация по запросу. Файл сайтов Apache:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/blog/
RailsEnv development
# <Directory />
# Options FollowSymLinks
# AllowOverride None
# </Directory>
<Directory "/var/www/blog/">
Options Indexes FollowSymLinks -MultiViews +ExecCGI
AllowOverride All
Order allow,deny
allow from all
# AddHandler cgi-script .cgi
</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 ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Другое обновление:. Я смог заставить его работать, наконец, используя DocumentRoot верхнего уровня (/var/www) и основывая приложение Rails, использующее RailsBaseURI. Это отображает раздел "Развертывание в подпункт URI" инструкций Phusion Passenger. Он используется как блог http:///, который на самом деле не тот, который я хотел получить, но это не имеет никакого значения, поскольку я использую это только для того, чтобы узнать Rails в виртуальном. Мне нужно будет поработать над тем, чтобы он снова работал как приложение верхнего уровня. Вот мой текущий (окончательный) файл VirtualHost для справки:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/
RailsEnv development
<Directory /var/www/>
Options FollowSymLinks
AllowOverride None
</Directory>
RailsBaseURI /blog
<Directory /var/www/blog/>
Options Indexes FollowSymLinks -MultiViews +ExecCGI
AllowOverride All
Order allow,deny
allow from all
# AddHandler cgi-script .cgi
</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 ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>