Nginx+ruby-on-rails

опубликовал 29 апреля 2010 в разделе "FreeBSD"

Недавно встала задача сделать онлайн-магазин, без изысков, но не очень страшный.
Пошарившись по различным движкам, нашел парочку приемлимых, правда
написаных на Ruby. Ну, а почему бы и нет… Во-первых интересно посмотреть
как эта херня с рельсами вообще работает, а во-вторых интересно настроить
nginx в связке с чем-нибудь помимо php. Итак, приступим.

Ставим rubygem-passenger:

cd /usr/ports/www/rubygem-passenger make install clean

конфигурация:

Ставим nginx или пересобираем, это уж у кого как:
Привожу свои настройки, у вас они могут выглядеть и по другому,
но обязательно надо отметить PASSENGER_MODULE

cd /usr/ports/www/nginx make install clean

конфигурация:

[X] HTTP_MODULE Enable HTTP module [X] HTTP_ADDITION_MODULE Enable http_addition module [X] HTTP_CACHE_MODULE Enable http_cache module [X] HTTP_FLV_MODULE Enable http_flv module [X] HTTP_GZIP_STATIC_MODULE Enable http_gzip_static module [X] HTTP_PERL_MODULE Enable http_perl module [X] HTTP_REALIP_MODULE Enable http_realip module [X] HTTP_REWRITE_MODULE Enable http_rewrite module [X] HTTP_STATUS_MODULE Enable http_stub_status module [X] PASSENGER_MODULE 3rd party passenger module

Добавляем в nginx.conf

http { ... passenger_root /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.11; passenger_ruby /usr/local/bin/ruby18; ... }

Ставим rubygem-rails:

cd /usr/ports/www/rubygem-rails make install clean

конфигурация:

в ходе сборки возникнет диалог конфигурации rubygem-activerecord, выбираем NATIVE_MYSQL

Создаем наш проект:

cd /home/www/public_html rails -d mysql our_project

-d mysql — для хранения используем MySQL
our_project — название проекта и имя каталога где будут лежать файлы проекта

Создаем базы и пользователя для нашего проекта(предполагается что MySQL уже установлен):

mysql> create database our_project_development; mysql> create database our_project_test; mysql> create database our_project_production; mysql> grant all on our_project_development.* to 'ruby'@'localhost' identified by 'rubypassword'; mysql> grant all on our_project_test.* to 'ruby'@'localhost' identified by 'rubypassword'; mysql> grant all on our_project_production.* to 'ruby'@'localhost' identified by 'rubypassword';

Меняем значения username и password в трех секциях (development, test и production)
в конфиге доступа к базе данных /home/www/public_html/our_project/config/database.yml:

username: ruby password: rubypass

устанавливаем права доступа для пользователя www:

chown -R www:www /home/www/public_html/our_project

создаем виртуальный хост для нашего проекта, который выглядит примерно так:

server { listen 80; server_name www.our_project.ru; root /usr/home/www/public_html/our_project/public; passenger_enabled on; rails_spawn_method smart; rails_env development; }

рестартуем nginx

/usr/local/etc/rc.d/nginx restart

Заходим на страницу нашего проекта и наблюдаем Ruby On Rails:

Если нажать на «About your application’s environment», то увидим окружение приложения:

Ruby version 1.8.7 (i386-freebsd8) RubyGems version 1.3.5 Rack version 1.0 Rails version 2.3.4 Active Record version 2.3.4 Action Pack version 2.3.4 Active Resource version 2.3.4 Action Mailer version 2.3.4 Active Support version 2.3.4 Application root /usr/home/www/public_html/our_project Environment development Database adapter mysql Database schema version 0

UPDATE:
Чуть позже оказалось, что движок магазина требует более свежие версии софта, чем представленные в портах.
Исправляется на раз-два:

Обновляем RubyGems

gem update --system

Устанавливаем недостающие gems

cd /home/www/public_html/our_project rake gems:install

Источник

Похожие записи:

  1. Nginx + PHP fastcgi
  2. Распределение нагрузки между несколькими серверами
  3. Логирование SQL-запросов
  4. Mysql + tmpfs
  5. Как снести забытый MySQL административный пароль

Оставить комментарий




XHTML::
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


*