Укладываем рельсы

Опубликовано

По просьбам некоторых трудящихся все-таки пишу заметку про разборку с Ruby on Rails приложением Redmine (что это толком не знаю, похоже на багзиллу).Собственно все началось с просьбы клиента установить ему выше указанное приложение. Установка производилась на VDS под управлением VDSmanager c установленным ISPmanager, в котором уже имеется возможность создания сайтов для запуска Ruby on Rails. Создаем сайт, тащим с официального сайта дистрибутив, кладем на место,

настраиваем, пытаемся запустить, плящем с бубном, в итоге получаем огромный тормоз при работе как FastCGI (про CGI, я вообще молчу). В общем заставить работать имеющимися в комплекте VDS средствами не получилось.В общем для запуска я решил использовать связку Apache22 с mod_proxy + mongrel_cluster, получилось очень даже неплохо, а главное просто. В принципе никто не мешает вместо индейца с mod_proxy поставить в качестве фронтенда nginx или лайти (сегодня я этот вариант не рассматриваю).И так, для начала ставим mongrel_cluster

# cd /usr/ports/www/rubygem-mongrel_cluster/# make install clean

Качаем дистрибутив Redmine c официального сайта и кладем его в /home/user/data/www/domain.ru, здесь user - имя пользователя из ISPmanager, domain.ru - сайт, на который ставим.Создаем базу, в моем примере - MySQL

mysql> create database redmine character set utf8;

Дальнейшую настройку я выполнял на уровне пользователя. Сначала конфигурируем приложение, конфиги хранятся в директории config, файл database.yml - конфигурация БД, файл email.yml - конфигурация отправки сообщений, выглядит это примерно так.

production:adapter: mysqldatabase: redminehost: localhostusername: bduserpassword: bdpasswd

И вот так для email

production:delivery_method: :smtpsmtp_settings:address: domain.ruport: 25domain: domain.ruauthentication: :loginuser_name: "robot@domain.ru"password: "password"

Здесь прошу обратить внимание на параметр address: domain.ru. Redmine использует STARTTLS при подключении к серверу, поэтому тут нужно указывать домен, идентичный тому, на который выписан сертификат у sendmail'а. В случае VDS это будет его hostname.Теперь нужно создать в базе структуру, заполнить ее, и инициализировать хранилище сессий.

% rake db:migrate RAILS_ENV="production"% rake redmine:load_default_data RAILS_ENV="production"% rake config/initializers/session_store.rb

С самим Redmine все. При желании можно потестить запустив

% ruby script/server webrick -e production

И сходив браузером на http://domain.ru:3000.Возвращаемся в root'а и настраиваем связку web-серверов, которые все это будут отдавать. Для начала пишем конфиг для mongrel_cluster, лежать должен в /usr/local/etc/mongrel_cluster/.

# vi domain.ru.ymluser: usercwd: /home/user/data/www/domain.ruport: "9000"environment: productiongroup: useraddress: 0.0.0.0pid_file: /home/user/data/logs/domain.ru.pidservers: 2

Готово, прописываем в автозапуск и запускаем, идем браузером на порты 9000 и 9001, убеждаемся что все работает.

# echo 'mongrel_cluster_enable="YES"' >> /etc/rc.conf# /usr/local/etc/rc.d/mongrel_cluster start

Настал черед гордого индейца, нам понадобятся модули mod_proxy.so, mod_proxy_http.so и mod_proxy_balancer.so, первые два на VDS уже есть, последнего нет и пересобирать из-за него апачу из портов не хочется поэтому

# cd /usr/ports/www/apache22# make extract# cd work/httpd-2.2.11/modules/proxy/# apxs -a -i -c mod_proxy_balancer.c

В конфиге апача включаем модули

# vi /usr/local/etc/apache22/httpd.confLoadModule proxy_module libexec/apache22/mod_proxy.soLoadModule proxy_http_module libexec/apache22/mod_proxy_http.soLoadModule proxy_balancer_module libexec/apache22/mod_proxy_balancer.so

А в конфиг виртуального хоста domain.ru добавляем следующее

ProxyPass /images !ProxyPass /stylesheets !ProxyPass /javascripts !ProxyPass /favicon.ico !ProxyPass /static !ProxyPass /holding !ProxyPass /templates !<Proxy balancer://domain.ru>BalancerMember http://domain.ru:9000BalancerMember http://domain.ru:9001</Proxy>ProxyPass / balancer://domain.ru/

Вот собственно и все. Перезапускаем apache и получаем рабочий Redmine.Естественно, можно адаптировать под любое Ruby on Rails приложение.Естественно, ни на какую полноту не претендую, читайте доки от разработчиков.Одной фразой:

  • Переезд как известно равен трем пожарам :) . В таком случае ребята с сайта квартиный и офисный переезд - это пожарные, потому как переезды - их специализация.
  • На форуме города Уфы с 1 мая стартует Майская акция! Время твоих побед! Участвуют все пользователи форума, по результатам акции - денежные призы.
  • Что обычно делают с сайтом если хотят наростить ссылочную массу, повысить его в выдаче поисковика - регистрируют в каталогах. О том насколько это долгая и монотонная процедура думаю говорить не стоит. Однако специально для ленивых есть сервис регистрации в каталогах, который избавляет от потери времени и монотонного труда.
  • Еще один ресурс на тему поисковой оптимизации - Блог Ольги и Mr.Snake. Интересен тем, что помимо собственно SEO тема человеческих отношений, ну и, конечно, тем, что это не мысли одного человека, а своего рода коллективный разум.
  • Строят сейчас быстро. Вы тоже заметили? А знаете за счет чего? За счет широкого использования готовых металлических конструкций. И даже у нас такие фирмы есть, например, вот, монтаж металлоконструкций Иркутск, все что с данным процессом связано.