The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Поднимаем продакшн сервер для ROR на Линукс (Debian, Ubuntu) (ruby rails linux web mongrel nginx)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: ruby, rails, linux, web, mongrel, nginx,  (найти похожие документы)
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: apt-get install ruby ruby-dev rails rubygems mongrel mongrel-cluster После установки gem ставим mongrel #gem install mongrel #gem install mongrel_cluster Для хранения рельсовых приложений я предпочел использовать централизованное место, поэтому создал директорию /var/www/rails. Переходим в эту директорию и создаем тестовое RoR приложение: #rails demo Генерируем конфигурационный файл для нашего приложения, используя команду mongrel_rails: #cd /var/www/rails/demo #mongrel_rails cluster::configure -e production -p 3000 -N 2 \ -c /var/www/rails/demo -a 127.0.0.1 \ -l log/mongrel.log -P /tmp/demo.pid \ -user www-data -group www-data Опции: * -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; } # serve static files directly location ~ .html { root /var/www/rails/demo/public; } location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov)$ { root /var/www/rails/demo/public; } # resend everything else to mongrel location / { proxy_pass http://mongrel; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } Меняем proxy_set_header Host $host; на proxy_set_header Host $http_host; если $server_port != 80 Перезапускаем сервер: #/etc/init.d/nginx restart и запускаем mongrel_cluster cd /var/www/rails/demo/ mongrel_cluster_ctl start -v -c config/ Для запуска монгрела можно создать скрипт отдельный, что бы он стартовал автоматом при запуске системы. Думаю с этим уже разберетесь :) Все, теперь мы видим по адресу demo.xxx.com стартовую страничку нашего RoR приложения

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру