Развертывание приложения Rails на apache

Я создал небольшое приложение, которое взаимодействует с mysql на бэкэнде. Когда я запускаю сервер mongrel, он работает нормально. Я хочу запустить это приложение на сервере Apache. Приложение представляет собой приложение для рельсов. ОС - opensolaris. Я попытался изменить httpd.conf в apache и добавил в него следующие строки.

LoadModule passenger_module /var/ruby/1.8/gem_home/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
   PassengerRoot /var/ruby/1.8/gem_home/gems/passenger-2.2.15
   PassengerRuby /usr/ruby/1.8/bin/ruby

<VirtualHost *:80>
      ServerName sampleapp.com
      DocumentRoot /export/home/gaurav/test/sample_app/public
    <Directory /export/home/gaurav/test/sample_app>
      AllowOverride ALL
      Order allow,deny
      Allow from all
     </Directory>
   </VirtualHost>`

Но я получаю ошибку базы данных. Я проверяю файл журнала на наличие ошибки, в которой отображается код ошибки 500.


person gaurav    schedule 29.09.2010    source источник
comment
Вы настроили свою производственную базу данных?   -  person shingara    schedule 29.09.2010
comment
Можно нам ваш журнал, пожалуйста?   -  person shingara    schedule 29.09.2010
comment
То же самое приложение работает с mogrel. Поэтому я думаю, что рабочая база данных должна быть настроена. Но все же я проверил файл database.yml, там все в порядке.   -  person gaurav    schedule 29.09.2010
comment
Статус: 500 Внутренняя ошибка сервера Неизвестная база данных 'sample_prod' /var/ruby/1.8/gem_home/gems/activerecord-2.3.8/lib/active_record/connection_adapters/mysql_adapter.rb:619:in real_connect' /var/ruby/1.8/gem_home/gems/activerecord-2.3.8/lib/active_record/connection_adapters/mysql_adapter.rb:619:in connect' /var/ruby/1.8/ gem_home/gems/activerecord-2.3.8/lib/active_record/connection_adapters/mysql_adapter.rb:203:in `initialize' /var/ruby/1.8/gem_home/gems/activerecord-2.3.8/lib/active_record/conne.. .................................   -  person gaurav    schedule 29.09.2010
comment
Я хотел спросить, как приложение rails может работать тогда на могреле, а не в apache, когда даже базы данных «sample_prod» не было, мне это даже не нужно. Но когда я удаляю его из файла database.yml, это дает некоторую ошибку производство д/б отсутствует   -  person gaurav    schedule 29.09.2010
comment
@gaurav: в следующий раз при добавлении данных, таких как журналы, попробуйте обновить свой вопрос, а не оставлять большие куски кода в комментариях.   -  person marcgg    schedule 29.09.2010
comment
Я думаю, что @shingara с первого раза понял правильно. Я считаю, что Mongrel по умолчанию работает в режиме разработки, тогда как Passenger больше работает в режиме производства. Либо установите RackEnv для разработки, либо настройте производственную базу данных.   -  person bjg    schedule 29.09.2010


Ответы (1)


Вам нужно определить производственную базу данных в файле db/database.yml и создать эту базу данных со всеми миграциями.

RAILS_ENV=production rake db:create
RAILS_ENV=production rake db:migrate

Или, если вы действительно не хотите использовать производственную среду, вы можете изменить ее в своей конфигурации пассажира.

person shingara    schedule 29.09.2010
comment
Привет, шингара. Команда RAILS_ENV=production rake db:create сработала.. но когда я запускаю следующую команду, она выдает (в /usr/home/gaurav/demo/sample_app) грабли прерваны! Шифр не является модулем - person gaurav; 01.10.2010
comment
это другая проблема. Шифр находится в нашем Gem, я полагаю, или в вашем коде. - person shingara; 01.10.2010