From: Алексей Васильев <leopard_ne[at]inbox.ru>
Date: Mon, 09 Feb 2009 17:02:14 +0000 (UTC)
Subject: Поднимаем продакшн сервер для ROR на Линукс (Debian, Ubuntu)
Оригинал: leopard.in.ua
Итак, разработали мы сайт на Ruby on Rails. Пора запустить его в свободное плаванье (в
продакшан). Для этого будем использовать: Debian (Ubuntu) - Линукс система на сервере,
nginx это HTTP-сервер и IMAP/POP3-прокси сервер. Отлично справляется с высокими
нагрузками.
Mongrel - это быстрая HTTP-библиотека и сервер для Ruby, предназначенные для хостинга
Ruby веб-приложений и использующая HTTP вместо FastCGI или SGI.
Mongrel_cluster - Gem плагин, предназначенный для упрощения развертывания веб
приложений, использующих кластер Mongrel серверов.
Понятное дело надо установить ruby, rails, mongrel, mongrel-cluster:
Опции:
* -e - Rails environment (в данном случае указываем production)
* -p - Mongrel будет слушать порты начиная с указанного порта до +(N-1) (т.е. в нашем
случае порты 3000 и 3001)
* -N - количестов Mongrel серверов
* -c - директория в которую перейдет Mongrel сервер перед запуском
* -a - IP адресс для прослушивания Mongrel сервером
* -l - лог файл
* -P - файл в который будет записан PID процесса (с версии mongrel_cluster 1.0.x должен
находится в каталоге /var/run/mongrel_cluster/)
* -user и -group - имя пользователя и группа от имени которых будут запущены Mongrel
серверы (я использую www-data, т.к. под этим пользователям работает nginx. Перед
запуском необходимо убедится, что данный пользователь имеет права записи в директорию с
приложением)
Для получения полной справки можно выполнить команду
mongrel_rails cluster::configure -h
После выполнения этой команды будет создан файл config/mongrel_cluster.yml
Настраиваем nginx.
Допустим мы хотим, чтобы наше RoR приложение было доступно по адресу demo.xxx.com.
Для этого изменяем nginx.conf следующим образом (или же создайте отдельный файл
конфигурации):
В основную конфигурацию сервера добавляем:
И добавляем виртуальный хост demo.xxx.com:
upstream mongrel {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
}
server {
listen 80;
server_name demo.xxx.com;
charset off;
location / {
root /var/www/rails/demo;
index index.html index.htm;
}
# / -> first search for local index.html then go to mongrel
location ~ ^/$ {
if (-f /index.html) {
rewrite (.*) /index.html last;
}
proxy_pass http://mongrel;
}
# rails caching: searching first for $action.html local pages
location / {
if (!-f $request_filename.html) {
proxy_pass http://mongrel;
}
rewrite (.*) $1.html last;
}
cd /var/www/rails/demo/
mongrel_cluster_ctl start -v -c config/
Для запуска монгрела можно создать скрипт отдельный, что бы он стартовал автоматом при
запуске системы. Думаю с этим уже разберетесь :)
Все, теперь мы видим по адресу demo.xxx.com стартовую страничку нашего RoR приложения
642 Прочтений • [Поднимаем продакшн сервер для ROR на Линукс (Debian, Ubuntu) (ruby rails linux web mongrel nginx)] [08.05.2012] [Комментариев: 0]