Установка Redmine + настройка и интеграция SVN хранилищ

Redmine это свободная (free as freedom) система для управления проектами и отслеживания ошибок. Написан на Ruby on Rails Исходный код распространяется под GNU GPL лицензией.

Мы используем Redmine для управления проектами больше двух лет. За это время в системе набралось 80ть проектов и полсотни пользователей.

Установка Redmine на Ubuntu 10.04 Server

Ставим необходимые пакеты:

aptitude install redmine redmine-mysql

Инсталяционные скрипты предлагают настроить пакет:

Выбираем с какой СУБД будет работать Redmine:

Вводим пароль администратора MySQL и пароль доступа к БД самого Redmine:

Если после этого сравнение таблиц выставляется в latin1_swedish_ci (или в любую другую кодировку отличную от utf8_general_ci) добавляем в /etc/mysql/my.cfg в секцию mysqld директиву collation-server=utf8_general_ci и character-set-server=utf8. После чего удаляем полностью БД и создаем новую базу Redmine с сравнением utf8_general_ci. Теперь разворачиваем новую базу Redmine:

# cd /usr/share/redmine/
/usr/share/redmine# rake db:migrate RAILS_ENV="production" 

После чего у нас будут все таблицы в utf8_general_ci и с кириллицей не будет никаких проблем.

Настройка mod-passenger

Mod Passenger используется для связки веб сервера Apache и приложений написанных на Ruby On Rails.
С его помощью Apache может работать как веб сервер для ROR приложений.

Установка пакетов:

aptitude install libapache2-mod-passenger

Загружаем модуль Apache:

a2enmod passenger

Настраиваем vhost для Redmine:

vim /etc/apache2/sites-enabled/redmine.example.com
<VirtualHost *:80>
	ServerName redmine.example.com
	ServerAlias redmine.example.com
	DocumentRoot /usr/share/redmine/public
	# Без PassengerDefaultUser www-data Redmine не сможет загружать файлы на сервер
	PassengerDefaultUser www-data
 
	<Directory /usr/share/redmine/public>
		Order allow,deny
		Allow from all
		RailsEnv production
	</Directory>
</VirtualHost>

После этого Redmine должен быть доступен по адресу http://redmine.example.com

Настройка SVN хранилищ и их интеграция с Redmine

Redmine способен отображать изменения в хранилище, вести лог активности, рисовать графики по количеству комитов в хранилище. Так же Redmine может управлять правами доступа к хранилищам на основе своих пользователей и их подписок к проектам, автоматически создавать хранилища для новых проектов.

Установим требуемые пакеты:

aptitude install subversion 
aptitude install libapache2-svn libapache-dbi-perl libapache2-mod-perl2 libdbd-mysql-perl libdigest-sha1-perl

Загрузим все требуемые модули Apache:

a2enmod dav
a2enmod dav_svn
a2enmod perl

Дальше добавим одну строку в конфиг модуля:

vim /etc/apache2/mods-enabled/perl.load
LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
PerlLoadModule Apache::Redmine

Для того, что б пользователи могли авторизоваться в svn под теме же учётными данными что и в Redmine создадим символическую ссылку на скрипт Redmine.pm (можно просто скопировать его, но лучше создать ссылку)

ln -s /usr/share/redmine/extra/svn/Redmine.pm /usr/lib/perl5/Apache/Redmine.pm

Настроим vhost для svn:

vim /etc/apache2/conf.d/svn.example.com
<VirtualHost *:80>
        ServerName svn.example.com
        ServerAlias svn.example.com
        DocumentRoot /var/svn/
 
        <Location /svn>
                 # подключаем модуль dav svn
                 DAV svn
                 SVNParentPath "/var/svn" 
 
                 # настраиваем авторизацию по логину/паролю
                 AuthType Basic
                 AuthName redmine
                 Require valid-user
 
                 # подключаем скрипт Redmine.pm
                 PerlAccessHandler Apache::Authn::Redmine::access_handler
                 PerlAuthenHandler Apache::Authn::Redmine::authen_handler
 
                 # настройки подключения к БД
                 RedmineDSN "DBI:mysql:database=redmine_default;host=localhost" 
 
                 # логин и пароль для доступа к БД Redmine
                 RedmineDbUser "redmine" 
                 RedmineDbPass "password" 
        </Location>
 
        <Location /svn-private>
                  DAV svn
                  SVNParentPath "/var/svn" 
                  Order deny,allow
                  Deny from all
                  # only allow reading orders
                  <Limit GET PROPFIND OPTIONS REPORT>
                  Allow from redmine_server_ip
                  </Limit>
        </Location>
</VirtualHost>

svn-private нужен для того, что б позволить самому Redmine получать доступ к хранилищам без авторизации. Это позволит полностью автоматизировать создание и подключения хранилища к новому проекту. Так же его можно использовать на своих серверах для обновления исходников без необходимости авторизации.

Теперь по адресу http://svn.example.com/svn должен выводиться диалог авторизации.

Автоматическое создание SVN хранилищ для проектов

Для этой задачи есть скрипт /usr/share/redmine/extra/svn/reposman.rb. Он при запуске сверяет созданные проекты в Redmine и существующие svn хранилища. И если есть проект для которого нет хранилища — он создаст его. Для того чтобы это заработало нужно прописать запуск reposman.rb в crontab:

*/5 * * * * /usr/share/redmine/extra/svn/reposman.rb --redmine redmine.example.com --key=ключ --svn-dir /var/svn --owner www-data --url http://svn.example.com/svn-private/ --verbose

Описание аргументов скрипта:

  • --key — API ключ. В Redmine Администрирование > Настройки > Хранилище > API ключ. Выбираем Сгенерировать ключ и копируем его в скрипт.
  • --redmine — хост, на котором висит redmine.
  • --svn-dir — путь к svn.
  • --owner — владелец хранилища.
  • --url — url к svn (svn-private нужен для того, что б redmine мог получать доступ к хранилищам без авторизации).

Все, настройка завершена. Теперь можно попробовать создать проект, через некоторое время для него автоматически будет создано хранилище. После следует добавить участников в проект и попробовать авторизоваться с использовании их учётных данных в хранилище.

Автор: Евгений Гуринович

  • 08 Jun 2012
  • Комментировать

Disqus seems to be taking longer than usual. Reload?

Увеличить скорость Redmine? Асинхронная почта!

        anton_nix
        6 августа, 2009

    Те, кто используют стабильную ветку Redmine ниже 0.9 - вы, наверное, заметили, что при создании задачи и еще некоторых действиях Redmine "долго думает" :) А происходит это из-за того, что он отправляет почтовое сообщение об обновлении в главном потоке. И тормозить эта штука может до нескольких секунд. Особенно, если для отправки используется gmail.


    Эту проблему решили в версии 0.9, но она еще не зарелизена. Поэтому те, кто хотят поиметь эту супер-фичу уже сейчас, должны сделать следующее:

    1.Открыть файл config/initializers/10-patches.rb и добавить в конец этого файла следующие строчки:


    # Adds :async_smtp and :async_sendmail delivery methods
    # to perform email deliveries asynchronously
    module AsynchronousMailer
      %w(smtp sendmail).each do |type|
        define_method("perform_delivery_async_#{type}") do |mail|
          Thread.start do
            send "perform_delivery_#{type}", mail
          end      
        end
      end
    end

    ActionMailer::Base.send :include, AsynchronousMailer


    2. Перезапустить Redmine.
    3. Открыть файл config/email.yml и поменять "delivery_method" с ":smtp" на ":async_smtp".
    4. Пойти к начальству и сказать, что вы значительно ускорили корпоративную систему багтрэкинга =)
    Метки: redmine, инструменты

Hosted by uCoz
193.109.247.229
Похоже что не установлены нужные gem's
Надо из папки redmine запустить комманду

bundle install

Проверить работоспособность redmine можно командой

bundle exec rails s -e production