Один из старых клиентов, для которых я разрабатывал движок, решили переехать к новому хостеру. Путем недолгих изысканий был выбран 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 рублей