Настройка rails apache mongrel-cluster

Материал из Сетепедии

Перейти к: навигация, поиск

Турториал описывает настройку apache с mongrel_cluster для хостинга rails-приложений в *ubuntu 8.10

Содержание

Начальные условия

Считается что у нас уже установлен apache2 и все необхоимые gem (rails, mongrel, etc) Приложение находится в директории

/var/www/app

Задача

Необходимо создать кластер из трёх серверов mongrel на порту 5000 в режиме production. Так же мы создадим симлинк, чтобы кластер мог запуститься после рестарта сервера. Специфика проекта - возведение приложения на порт 8080

Решение

Установка ruby / rails

  • Ставим ruby :
sudo apt-get install ruby ruby-dev libzlib-ruby rdoc irb rubygems eruby build-essential 
  • Ставим ruby on rails через gem :
sudo gem install rails
  • Ставим mongrel и mongrel_cluster через gem:
sudo gem install mongrel
sudo gem install mongrel_cluster

Модули apache

Необходимо установить несколько дополнительных модулей:

sudo a2enmod proxy
sudo a2enmod proxy_balancer
sudo a2enmod proxy_http
sudo a2enmod rewrite

После чего перезапустить веб сервер:

sudo /etc/init.d/apache2 force-reload

Конфигурация кластера

Настройку необходимо осуществить из папки приложения:

cd /var/www/app

Генерируем файл настроек:

mongrel_rails cluster::configure -e production -p 5000 -N 3 -c /var/www/app -a 127.0.0.1

Собственно здесь все параметры интуитивно понятны.. результаты работы можно посмотреть в

cat ./config/mongrel_cluster.yml

Теперь создадим симлинк для перезапусков

sudo mkdir /etc/mongrel_cluster
sudo ln -s /var/www/app/config/mongrel_cluster.yml /etc/mongrel_cluster/railsapp.yml

Ну и запуск кластера:

mongrel_cluster_ctl start

Зделано.

Виртуальные хосты apache

Создаём хост..

sudo vim /etc/apache2/sites-available/railsapp

.. и вставляем туда:

<VirtualHost *:8080>

  DocumentRoot /var/www/app/public

  RewriteEngine On

  <Proxy balancer://mongrel1>
    BalancerMember http://127.0.0.1:5000
    BalancerMember http://127.0.0.1:5001
    BalancerMember http://127.0.0.1:5002
  </Proxy>

  # Redirect all non-static requests to thin
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule ^/(.*)$ balancer://mongrel1%{REQUEST_URI} [P,QSA,L]

  ProxyPass / balancer://mongrel1/
  ProxyPassReverse / balancer://mongrel1/
  ProxyPreserveHost on

  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>

  # Custom log file locations
  ErrorLog  /var/www/app/log/error.log
  CustomLog /var/www/app/log/access.log combined

</VirtualHost>

Также необходимо добавить запись в

sudo vim /etc/apache2/ports.conf

следующего содержания:

Listen 80
Listen 8080

Далее включаем вхост

sudo a2ensite railsapp

и перезагружаем apache sudo /etc/init.d/apache2 reload

Конец

Теоретически теперь можно пройти по адресу http://servername:8080 и увидеть свой сайт.

Личные инструменты