Search
Write a publication
Pull to refresh

Ruby Enterprise Edition, Nginx и заморозка

Затюнинговал я свой web-сервер, чтобы летал побыстрей. Для этого перенес MYSQL в tmpfs с синхронизацией на диск каждые 10 минут, наложил на него патчи от гугла, поставил в роли фронтэнда nginx, приделал к wordpress’у плагины кэширования. Радость то какая! Стал мой сервачок гораздо шустрее. Счастью не было предела. Но продолжалось, как всегда, не долго…

PHP – это отлично, но есть еще проектики, которые на Ruby On Rails крутятся у меня. Стоял Passanger, прикрученный к apache. Но из-за жутко медленной работы и граблей с одновременной работой в связке с PHP я его отключил, чтобы нервы не портил. Отложил до «хорошего настроения». И вот пришла муза.

Нашел отличную статейку на хабре и понеслась… Поставил Enterprise-версию рельсов, пассажира прикрутил. Nginx удалил, который до этого ставился из репозитория debian. Перенес нужные мне строчки из старого конфига в /opt/nginx/conf/nginx.conf. Замечательно! Теперь PHP и RoR дружат и все работает как надо (читайте, «летает»). Но, как всегда, вылез трабл. Не будь надобности запустить Redmine, я бы и не заметил. Проблемы были две. Вторая выявилась благодаря первой.
  • Redmine работает только с Rails 2.2.2 и не выше. А у меня стоит 2.3.5 (зачем нам барахло?)
  • gem install ставил пакеты в места, которые были определены до этого старыми дебиановскими скриптами, так как до этого описываемый софт ставился из репозитариев Debian.

Теперь по порядку. Трабл №1. Я подумал:»Заморожу версию рельсов с помощью команды rake rails:freeze:gems». Откатываю rails до нужной версии, захожу в директорию Redmine’а, замораживаю. Но копируются либы свежей версии рельсов. Выяснилось, что в /opt/ruby-enterprise/ рельсы не откатились. Вот и Трабл №2…

Замечу, что в статье, по которой все настраивал, сделаны симлинки в директорию /usr/bin/ из /opt/ruby-enterprise/bin/

Обе проблемы решил. Сначала вторую, чтобы все нужные бинарники и либы находились системой там, где нужно (/opt/ruby-enterprise/), потом первую, чтобы заморозить Redmine. Что я сделал:

aptitude purge rubygems rails, ruby
Удаляем пакеты, что ставились не из исходников

rm -f /usr/bin/gem /usr/bin/rails /usr/bin/ruby /usr/bin/rake
Удаляем симлинки, которые создавали

export PATH=/opt/ruby-enterprise/bin:$PATH
Говорим, где искать все это удаленное добро

gem uninstall rails -v=2.3.5
Удаляем старые рельсы. Вам может и не понадобится. У меня стояли обе версии (думается, что из-за MultiRails ). Как сказать фризу, чтобы он страую себе копировал, я не нашел.

gem install rails -v=2.2.2
Ставим старичка

cd /var/www/redmine/
rake rails:freeze:gems
gem uninstall rails -v=2.2.2
gem install rails

Перешли в директорию проекта, заморозили, удалили старичка, поставили свежачек

Все работает! Может кому пригодится.

Использованный материал:
Установка nginx и Ruby Enterprise
http://habrahabr.ru/blogs/ror/64295/
Заморозка проектов на RoR
http://www.softiesonrails.com/2008/1/3/freezing-your-rails-application
Решение с export PATH и удалением пакетов с симлинками
/dev/my_mind
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.