ХостингРазворачиваем приложение Ruby On Rails на примере Redmine

Rvm, Bundler, Capistrano — все эти инструменты сильно облегчают жизнь разработчику и администратору проекта, но могут изрядно запутать. В этой статье мы наглядно покажем процесс деплоя распространенной системы управления проектами Redmine.

Создаем новый Ruby On Rails проект

  1. Выбираем тип проекта «Ruby on Rails»
  2. Задаем имя будущему проекту
  3. Создаем. Панели нужно две-три минуты, чтобы создать всё необходимое для работы проекта, после чего можно продолжать. Около 15 минут необходимо, чтобы проект начал отзываться по присвоенному ему DNS-имени.

Обратите внимание на созданную базу данных, она нам еще пригодится.

Загружаем дистрибутив

Новые версии Redmine замечательно работают с Ruby 1.9.3, поэтому, настройки проекта по умолчанию нам подойдут. Мы будем ставить последнюю на момент написания статьи стабильную версию Redmine 2.0.3.

Узнаём параметры входа на сервер по ssh

Начинаем работать с терминалом. Заходим на сервер

Переходим с свежесозданный каталог проекта

$ cd projects/redmine

Удаляем автоматически созданные файлы

$ rm -rf ./current/*

Загружаем архив с исходниками Redmine

$ wget http://rubyforge.org/frs/download.php/76259/redmine-2.0.3.tar.gz

Распаковываем архив

$ tar xvf redmine-2.0.3.tar.gz

Переписываем симлинк current на распакованный Redmine

$ rm current
$ ln -s redmine-2.0.3 current

Подготавливаем окружение

На этом этапе можно открыть в соседней вкладке руководство по установке Redmine и сверяться с ним, если что-то пойдет не так. Также рекомендуем прочитать нашу статью об особенностях работы с rvm.

Переходим в каталог с исходниками

$ cd current

Подготавливаем бандл. Хотя Gemfile уже идет в поставке Redmine, хостинг Locum использует сервер приложений Unicorn для запуска проектов, поэтому в Gemfile необходимо внести изменения

$ echo 'gem "unicorn"' >> Gemfile

Теперь можно создать бандл

$ rvm use 1.9.3 do bundle install --path=~/projects/redmine/shared/gems --without development test

Этот процесс обычно занимает около пяти минут. Теперь нужно поправить конфигурацию базы данных для проекта. Узнаем параметры подключения к БД в панели управления хостингом. Заходим в «Услуги — Проекты», нажимаем «Подробнее» на проекте redmine, далее в графе «Ресурсы» нажимаем на ссылку с базой данных.

Возвращаемся в терминал. Копируем файл конфигурации БД из поставки Redmine

$ cp config/database.yml.example config/database.yml

Редактируем файл с настройками, вписываем параметры подключения нашей базы

Обратите внимание на адаптер базы, для Ruby 1.9 это должен быть mysql2. Вторая частая ошибка — имя хоста. Обязательно внесите хост со страницы с параметрами подключения БД.

Сохраняем изменения: Ctrl+O, Ctrl+X.

Выполняем настройку проекта

Следуем инструкции по установке, выполняем таски, необходимые для запуска проекта. Особенность хостинга — все команды нужно оборачивать в rvm и bundle.

$ rvm use 1.9.3 do bundle exec rake generate_secret_token
$ RAILS_ENV=production rvm use 1.9.3 do bundle exec rake db:migrate

В нашем примере мы загрузим тестовые данные в проект

$ RAILS_ENV=production rvm use 1.9.3 do bundle exec rake redmine:load_default_data

Правим права доступа к каталогам

$ chmod -R 755 files log tmp

Перезапускаем сервер приложений

Установка практически завершена. Все, что осталось сделать, это перезапустить сервер приложений, обслуживающий наш проект. Из терминала выполняем команды:

$ kill -QUIT `cat /var/run/unicorn/hosting_redmine/redmine.redmine5.pid`
$ rvm use 1.9.3 do bundle exec unicorn_rails -Dc /etc/unicorn/redmine.redmine5.rb

Проверяем, что сервер приложений запустился и проект работает. В панели управления идем в «Услуги — Проекты», напротив проекта redmine нажимаем на ссылку с его доменом. Авторизуемся учетной записью по умолчанию admin/admin.

Можно приступать к настройке непосредственно самого Redmine.

Если что-то пошло не так, полезную информацию можно найти в логах в каталоге проекта ~/projects/current/log

  • production.log — основной журнал Redmine. Ошибки уровня приложения пишутся сюда.
  • unicorn.stderr.log — журнал ошибок запуска Unicorn. Недостающие библиотеки и проблемы запуска сервера приложений запишутся сюда.

 

  1. Спасибо за полезную инструкцию. Ею интересуются люди так или иначе связанные с Redmine, а значит всем им может пригодиться наша разработка. Мы создали простой таймер RMClient для учета времени в Redmine. Программа удобна и функциональна. Мы используем этот таймер в собственной компании, что позволило существенно упростить работу с Redmine и оптимизировать работу команды. Предлагаю всем желающим ее протестировать и если понравиться будем рады новым пользователям!

  2. Спасибо большое за подробную статью.

  3. Максим:

    После выполнения команды:
    rvm use 1.9.3 do bundle exec rake generate_secret_token
    Получаю:
    Could not find gem ‘mysql2 (~> 0.3.11) ruby’ in any of the gem sources listed in your Gemfile or available on this machine.

    Как быть?
    Ставлю 0.3.11 redmine