Ruby on Rails на хостинге Agava VPS (через mod_rails)

Опубликовано 26.08.2008

Один из старых клиентов, для которых я разрабатывал движок, решили переехать к новому хостеру. Путем недолгих изысканий был выбран VPS хостинг от Agava, план VPS Basic. В этой заметке я вкратце опишу процесс развертывания Rails-приложения на сервере Агавы с использованием Passenger (он же mod_rails). Для развертывания мы выбрали сервер под управлением операционной системы CentOS 5.2, контрольная панель ISPManager Lite.

Установка GCC

Сразу после регистрации сервера вам может потребоваться установить GNU C++ Compiler. Когда я первый раз настраивал аккаунт на Агаве, он был уже установлен, однако на новом аккаунте он почему-то отсутствовал. Поэтому его потребовалось установить:

yum install gcc-c++

При установке может возникнуть ошибка Error: Missing Dependency: kernel-headers >= 2.2.1 is needed by package. В этом случае необходимо обновить пакет kernel-headers. Я его ставил отсюда:

wget ftp://ftp.pbone.net/mirror/ftp.centos.org/5.2/os/i386/CentOS/kernel-headers-2.6.18-92.el5.i386.rpm
rpm -i kernel-headers-2.6.18-92.el5.i386.rpm

После этого все должно ставиться нормально.

Установка Ruby

Изначально на сервер не установлен интерпретатор Ruby, поэтому нам необходимо его установить. Чтобы сделать эксперимент максимально интересным, будем ставить не стандартный MRI, а Ruby Enterprise Edition оптимизированный для работы с Passenger.

Качаем архив с официального сайта, распаковываем и запускаем инсталлятор:

./installer

Следуем инструкциям в инсталляторе, там все прозрачно.

Установка MySQL

Следующий этап - установка gem’а для работы с MySQL. Сам сервер MySQL уже установлен, нужно только поставить дополнительные библиотеки:

yum install mysql-devel

Затем ставим сам gem:

gem install mysql

Идем дальше

Установка RMagick

Следующий этап - установка ImageMagick и RMagick. Я при установке следовал инструкциям, предложенным в этой статье, копипастить не буду :)

Установка Passenger (mod_rails)

Затем приступаем к установке Passenger. Для начала нам надо поставить дополнительные библиотеки для Apache:

yum install httpd-devel

Затем, чтобы Passenger нашел все исполняемые файлы, которые идут в составе Ruby, нам надо добавить путь до бинарников в наш .bash_profile:

PATH=$PATH:$HOME/bin:/opt/ruby-enterprise-1.8.6-20080810/bin

Вам необходимо поставить тот путь, куда вы установили Ruby.

Затем ставим gem и модуль для Apache:

gem install passenger
passenger-install-apache2-module

Подключаем модуль в нашем файле httpd.conf (у меня он находится по адресу /etc/httpd/conf/httpd.conf):

LoadModule passenger_module /opt/ruby-enterprise-1.8.6-20080810/lib/ruby/gems/1.8/gems/passenger-2.0.3/ext/apache2/mod_passenger.so
PassengerRoot /opt/ruby-enterprise-1.8.6-20080810/lib/ruby/gems/1.8/gems/passenger-2.0.3
PassengerRuby /opt/ruby-enterprise-1.8.6-20080810/bin/ruby

Через панель управления создаем нового пользователя и под его именем создаем новый WWW-домен. В httpd.conf автоматически добавится VirtualHost. Чтобы по на этом хосте заработали рельсы, нам необходимо поменять DocumentRoot таким образом, чтобы он указывал на папку public в нашем проекте:

<VirtualHost 123.45.67.89:80>
  ServerName mysite.ru
  DocumentRoot /var/www/mysite/data/www/mysite.ru/public
  SuexecUserGroup mysite mysite
  CustomLog /var/www/httpd-logs/mysite.ru.access.log combined
  ErrorLog /var/www/httpd-logs/mysite.ru.error.log
  ServerAlias www.mysite.ru mysite.ru
  ServerAdmin webmaster@mysite.ru
</VirtualHost>

Установка git

Для установки Git из исходников нам потребуются дополнительные библиотеки:

yum install gettext-devel expat-devel curl-devel zlib-devel openssl-devel

Поставив библиотеки, качаем и ставим сам git:

wget http://kernel.org/pub/software/scm/git/git-1.6.0.tar.gz
tar zxvf git-1.6.0.tar.gz
cd git-1.6.0
make all
make install

Как видите, все просто, с настройкой справится даже человек, не искушенный в настройке серверов (типа меня). Цены на хостинг тоже вполне доступные - от 559 рублей

Подпишись и читай
Самые продвинутые ruby-программеры уже читают Rail0rz в формате RSS. Присоединяйся!
Комментарии
  1. mikhailov26.08.2008

    Толковая инструкция, Декарт. спасибо за ценный совет!

  2. Дмитрий27.08.2008

    Можно ли взять Вашу инструкцию в официальный ФАК по услуге ВПС?

  3. DEkart28.08.2008

    Дмитрий, если ссылку на источник поставите :)

  4. Одмин28.08.2008

    а зачем качать git из сырцов если можно поставить пакетом? Скорее всего, пакетом будет поставлен git-1.5 а не 1.6, но это не принципиально.

    Ещё у вас там как-то gem неправильно ставится. Надо yum install gem, потом уже gem install passenger.

    Passenger “увидит” PATH, заданный из .bash_proofile только если запускать вебсервер ручками из-под юзера. А если апач запущен из стартовых скриптов то это не сработает.

  5. DEkart28.08.2008

    1) В пакетах git очень старый

    2) rubygems ставится вместе с Ruby Enterprise Edition

    3) PATH для апача не нужен - он нужен чтобы можно было запускать rake из под юзера, больше ни для чего

  6. Одмин28.08.2008

    Тогда в тексте смысловые ошибки. Надо заменить фразу “Затем, чтобы Passenger нашел все исполняемые файлы” на “Затем, чтобызапускать rake из под юзера”, фразу “Затем ставим gem” убрать.

    А какая версия git в centos 5.2?