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> Orderallow,denyAllow from all RailsEnv production </Directory> </VirtualHost>
После этого Redmine должен быть доступен по адресу https://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 <Location /svn> # подключаем модуль dav svnDAV 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"Orderdeny,allowDeny from all# only allow reading orders <Limit GET PROPFIND OPTIONS REPORT> Allow from redmine_server_ip </Limit> </Location> </VirtualHost>
svn-private нужен для того, что б позволить самому Redmine получать доступ к хранилищам без авторизации. Это позволит полностью автоматизировать создание и подключения хранилища к новому проекту. Так же его можно использовать на своих серверах для обновления исходников без необходимости авторизации.
Теперь по адресу https://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 https://svn.example.com/svn-private/ --verbose
Описание аргументов скрипта:
--key
— API ключ. В Redmine . Выбираем и копируем его в скрипт.--redmine
— хост, на котором висит redmine.--svn-dir
— путь к svn.--owner
— владелец хранилища.--url
— url к svn (svn-private нужен для того, что б redmine мог получать доступ к хранилищам без авторизации).
Все, настройка завершена. Теперь можно попробовать создать проект, через некоторое время для него автоматически будет создано хранилище. После следует добавить участников в проект и попробовать авторизоваться с использовании их учётных данных в хранилище.