Укладываем рельсы
По просьбам все-таки пишу заметку про разборку с приложением (что это толком не знаю, похоже на багзиллу).
Собственно все началось с просьбы клиента установить ему выше указанное приложение. Установка производилась на под управлением c установленным , в котором уже имеется возможность создания сайтов для запуска Ruby on Rails. Создаем сайт, тащим с официального сайта дистрибутив, кладем на место, настраиваем, пытаемся запустить, плящем с бубном, в итоге получаем огромный тормоз при работе как FastCGI (про CGI, я вообще молчу). В общем заставить работать имеющимися в комплекте VDS средствами не получилось.
В общем для запуска я решил использовать связку + , получилось очень даже неплохо, а главное просто. В принципе никто не мешает вместо индейца с 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: mysql
database: redmine
host: localhost
username: bduser
password: bdpasswd
И вот так для email
production:
delivery_method: :smtp
smtp_settings:
address: domain.ru
port: 25
domain: domain.ru
authentication: :login
user_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.yml
user: user
cwd: /home/user/data/www/domain.ru
port: «9000»
environment: production
group: user
address: 0.0.0.0
pid_file: /home/user/data/logs/domain.ru.pid
servers: 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.conf
LoadModule proxy_module libexec/apache22/mod_proxy.so
LoadModule proxy_http_module libexec/apache22/mod_proxy_http.so
LoadModule 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:9000
BalancerMember http://domain.ru:9001
</Proxy>
ProxyPass / balancer://domain.ru/
Вот собственно и все. Перезапускаем apache и получаем рабочий Redmine.
Естественно, можно адаптировать под любое Ruby on Rails приложение.
Естественно, ни на какую полноту не претендую, читайте доки от разработчиков.
Одной фразой:
- Переезд как известно равен трем пожарам :) . В таком случае ребята с сайта квартиный и офисный переезд — это пожарные, потому как переезды — их специализация.
- На форуме города Уфы с 1 мая стартует Майская акция! Время твоих побед! Участвуют все пользователи форума, по результатам акции — денежные призы.
- Что обычно делают с сайтом если хотят наростить ссылочную массу, повысить его в выдаче поисковика — регистрируют в каталогах. О том насколько это долгая и монотонная процедура думаю говорить не стоит. Однако специально для ленивых есть сервис регистрации в каталогах, который избавляет от потери времени и монотонного труда.
- Еще один ресурс на тему поисковой оптимизации — Блог Ольги и Mr.Snake. Интересен тем, что помимо собственно SEO тема человеческих отношений, ну и, конечно, тем, что это не мысли одного человека, а своего рода коллективный разум.
- Строят сейчас быстро. Вы тоже заметили? А знаете за счет чего? За счет широкого использования готовых металлических конструкций. И даже у нас такие фирмы есть, например, вот, монтаж металлоконструкций Иркутск, все что с данным процессом связано.



4 комментария на запись "Укладываем рельсы"
Очень интересная статья!
Сделал все как у вас в статье, но есть одна загвоздка
При обращении к domain.ru:9000 показывается redmine как и должен. Но при обращении к domain.ru показывается просто html-код заглавной страницы redmine. Почему браузер не пытается разобрать его и отобразить в обычном виде? Буду очень благодарен, если вы подскажите как решить данную проблему.
Судя по всем он считает его обычным text/plain, а не text/html, потому и не интерпретирует.
С заголовками где-то проблемы.
Да я тоже это понял, но так и не нашел как и в каком месте сделать так чтобы contentType ответа был text/html
Даже не представляю где это указать.
Оставить комментарий