Page 1 of 2

Ruby on Rails?

Posted: Mon Sep 23, 2013 8:31 pm
by filippoff
Камрады, никто не практиковал параллельную установку VestaCP и ROR? Есть ли шанс заставить нормально функционировать?
Не планируется ли включить в сборку?

Re: Ruby on Rails?

Posted: Tue Sep 24, 2013 7:18 am
by skid
Теоритически может получится если поставить апач с модулем passenger. В ближайщих планах поддержки RoR нет. Вопрос о поддержке рельс поднимется после реализации связки nginx+php-fpm без апача.

Re: Ruby on Rails?

Posted: Tue Sep 24, 2013 1:16 pm
by filippoff
Ясно, жаль.
Практически мне пока не удалось завести параллельно сайт на руби (пытаюсь поставить Redmine) и оставить работающие на Vesta сайты на php. Возможно, просто знаний не хватает.
Собственно ROR поставился, но как его увязать с работающим апачем не понимаю. Пробовал с passenger, fcgi, через nginx и без, но безрезультатно. Будем надеяться на лучшее :)

Re: Ruby on Rails?

Posted: Tue Sep 24, 2013 1:56 pm
by Светозар
Так же интеграцию с рельсами. В скором времени планирую заняться языком вплотную.

Re: Ruby on Rails?

Posted: Tue Sep 24, 2013 2:41 pm
by filippoff
UPD — это все таки работает. Удачно запустил Redmine.

Re: Ruby on Rails?

Posted: Tue Sep 24, 2013 2:50 pm
by skid
Классно! Расскажите в двух словах как получилось завести рельсы?

Re: Ruby on Rails?

Posted: Tue Sep 24, 2013 6:55 pm
by filippoff
Ну, если только в двух :) Реально я не помню точную последовательность действий, так что точное следование процедурам может и не привести к нужному результату.
Ставил на CentOS 6.4 64bit

1. Ставим весту обычным способом. Для нужного сайта создаем домен и отключаем nginx. Остальные сайты можно настраивать как угодно. Для public_html делаем

Code: Select all

chown -R apache:apache /home/admin/web/domain.tld/public_html/

От имени admin по умолчанию ничего работать не будет (у меня не работает).

2. Ставим пакеты devel

Code: Select all

yum groupinstall "Development Tools" -y
zlib,openssl, Imagick (без него не встанет rmagick), YAML

Code: Select all

yum install zlib-devel openssl-devel openssl-devel libyaml-devel ImageMagick-devel ImageMagick-c++-devel -y
или

Code: Select all

yum -y install zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel gcc make gcc-c++ ruby-devel libxml2 libxml2-devel libxslt libxslt-devel ImageMagick-devel ImageMagick-c++-devel
здесь зависит от того, как у вас CentOS сконфигурирован.
YAML может потребоваться ставить из rpm
качаем

Code: Select all

cd /tmp && mkdir my_tmp_files && wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz && tar zxvf yaml-0.1.4.tar.gz && cd yaml-0.1.4
собираем и ставим

Code: Select all

./configure && make && make isntall 
3. Так как у нас связка с MySQL, нам нужен mysql-devel. Проблема в том, что

Code: Select all

yum install mysql-devel
дает нам ошибку зависимостей, т.к. в репозитории epel mysql-devel есть только 5.1, а MySQL у нас -5.5.34
Без mysql-devel работать ничего не будет, т.к. он нужен для коннектора mysql2 или mysql (собсно, нужен только mysql.h вроде бы)
Для CentOS 6.4 пакета выше 5.1 нет. Подходящий пакет нашел только в RedHat EL 6 for x86_64:
mysql-devel-5.5.34-1.el6.remi.x86_64.rpm

Code: Select all

wget ftp://rpmfind.net/linux/remi/enterprise/6/remi/x86_64/mysql-devel-5.5.34-1.el6.remi.x86_64.rpm

Code: Select all

rpm -Uvh mysql-devel-5.5.34-1.el6.remi.x86_64.rpm
4. Лезем за Ruby

Code: Select all

ftp ftp.ruby-lang.org
anonymous
anonymous

cd /pub/ruby
get ruby-2.0.0-p247.tar.gz
quit
Я брал версию 2.0.0-p247, самую свежую. Местами рекомендуют 1,9.

распаковываем

Code: Select all

tar zxvf ruby-2.0.0-p247.tar.gz
cd ruby-2.0.0-p247
собираем и ставим

Code: Select all

./configure
make
make install
Если все хорошо, проверям версию и env

Code: Select all

ruby -v
which ruby
Результат:
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
/usr/local/bin/ruby
Далее идем за RubyGems? я брал самую свежую 1.8.25

Code: Select all

wget http://rubyforge.org/projects/rubygems/rubygems-1.8.25.tgz
tar zxvf rubygems-1.8.25.tgz
cd rubygems-1.8.25
ruby setup.rb
Если все хорошо, проверям версию и env

Code: Select all

gem -v
which gem
1.8.25
/usr/local/bin/gem
Ставим passenger для Apache.

Code: Select all

gem install passenger && passenger-install-apache2-module
Жмем Энтер когда спросит.
Конфигурацию для подключения модуля он конфигурирует. Запомните её :)

Дальше колдунство с апачем.
для подключения passenger идем в /etc/httpd/conf.d и создаем файл passenger.conf, в который прописываем примерно следующее

Code: Select all

LoadModule passenger_module /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.19
PassengerDefaultRuby /usr/local/bin/ruby

# Remove HTTP Headers
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"

# Tuning of Passenger
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerUseGlobalQueue on
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 86400
RailsFrameworkSpawnerIdleTime 0
PassengerDefaultUser apache
Наконец, ставим гемы

Code: Select all

gem install bundler
gem install nokogiri
gem install rmagick
gem install rails
Проверяем:

Code: Select all

rails -v
rails -v
Rails 4.0.0
Аллес гемахт, дальше можно настраивать что-нибудь, например Redmine. :)

Re: Ruby on Rails?

Posted: Tue Sep 24, 2013 6:57 pm
by skid
круто :)

Re: Ruby on Rails?

Posted: Tue Sep 24, 2013 7:24 pm
by filippoff
skid wrote:круто :)
ну, реально затыков там несколько больше, с mysql2 я возился долго, сервер пару раз уронил и пока passenger поставил пересобирал руби раза три, но уже убей не помню почему, глаза к этому времени были в кучку. потом ещё с самим редмайном возился.
самое главное, что работа панели не нарушается в итоге, что радует, т.к. как настоящий джедай я все это делал на работающем продакшн сервере. :)

Re: Ruby on Rails?

Posted: Wed Sep 25, 2013 10:06 am
by XakRu
вы забыли наверное еще и то что нужно прогружать глобальные переменные руби для пользователя, т.е. там строка выводится после установки, из под рута не установить, только sudo.
Я не вижу проблемы в функционировании passenger/thin вместе с апачем и nginx, passenger висит на 3000 порту и никому не мешает, nginx проксирует на 80 порт. апач здесь не причем.