Укладываем рельсы
По просьбам некоторых трудящихся все-таки пишу заметку про разборку с 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 тема человеческих отношений, ну и, конечно, тем, что это не мысли одного человека, а своего рода коллективный разум.
- Строят сейчас быстро. Вы тоже заметили? А знаете за счет чего? За счет широкого использования готовых металлических конструкций. И даже у нас такие фирмы есть, например, вот, монтаж металлоконструкций Иркутск, все что с данным процессом связано.
Комментарии
Никита
Очень интересная статья!
Сделал все как у вас в статье, но есть одна загвоздка
При обращении к domain.ru:9000 показывается redmine как и должен. Но при обращении к domain.ru показывается просто html-код заглавной страницы redmine. Почему браузер не пытается разобрать его и отобразить в обычном виде? Буду очень благодарен, если вы подскажите как решить данную проблему.
Meg@DED
Судя по всем он считает его обычным text/plain, а не text/html, потому и не интерпретирует.
С заголовками где-то проблемы.
Никита
Да я тоже это понял, но так и не нашел как и в каком месте сделать так чтобы contentType ответа был text/html
Meg@DED
Даже не представляю где это указать.