Я пытаюсь настроить Rails на экземпляре Ubuntu, следуя документации, такой как https://help.ubuntu.com/community/RubyOnRails. Я пытаюсь настроить приложение со страницы "Начало работы с Rails" здесь: http://guides.rubyonrails.org/getting_started.html.
Что я сделал до сих пор:
- Установка Ruby / RubyGems / Rails через RVM и GEM (это установили Ruby 1.9.2 и Rails 3.0.7)
- Установкамодуль mysql и mysql2 (последний, который не работал)
- Создание приложения rails (приложение для блога в качестве учебного пособия инструктирует)
- Sym-связывание / home / me / www / blog / public/ from / var / www / blog /
- Создание БД через грабли
- Установка пассажирского модуля для выполнения Rails в Apache
- Запуск
passenger-install-apache2-module
для настройки Apache - Удаление файла public.html из папки приложения public / rails, чтобы мой контроллер / представление мог запустить
- Конфигурирование файлов, доступных для сайтов, для виртуальных хостов
- Конфигурирование маршрутизации Rails
Я считаю, что этопоследние два шага меня сбивают с толку, отчасти из-за отсутствия знакомства с Apache и Rails (я новичок в обоих).
В моем файле виртуального хоста я пытаюсь указать на публичный каталог блога в /вар / WWW / блог.Для моего маршрута по Rails у меня есть root :to => "home#index"
в соответствии с инструкциями.
Когда я захожу на http: // url, я обычно должен видеть мой "Hello, Rails!"страница в разделе 4.3 Руководства по началу работы, однако все, что я вижу, это список каталогов от Apache.Статические страницы работают, но не обрабатывают Rails.
На данный момент мне неясно, выполняет ли пассажирский модуль что-либо или где искать какие-либо доказательства того, что происходит.Я пробовал разные вещи, такие как запуск приложения Rails с другого виртуального хоста под названием "blog" на http: /// blog, и маршрутизация работала (статические страницы и все), но без 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 webmaster@localhost
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: /// blog, что не совсем то, что я хотел получить, но это не имеет значения, так как я использую это просто для изучения Rails в виртуальной среде.Мне нужно будет снова поработать над тем, чтобы оно снова стало приложением верхнего уровня.Вот мой текущий (окончательный) файл VirtualHost для справки:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
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>