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 міг отримувати доступ до сховищ без авторизації).
Усе, налаштування завершено. Тепер можна спробувати створити проєкт, через деякий час для нього автоматично буде створено сховище. Після слід додати учасників у проєкт і спробувати авторизуватися з використанням їхніх облікових даних у сховищі.