Nginx+ruby-on-rails
Недавно встала задача сделать онлайн-магазин, без изысков, но не очень страшный.
Пошарившись по различным движкам, нашел парочку приемлимых, правда
написаных на 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 |
Похожие записи:


