Настройка 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 и увидеть свой сайт.
