Sunday, October 26, 2008

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


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


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





No comments: