1. Trac не поддерживает git из коробки (реализован в виде плагина, что не есть уже хорошо).
2. Trac хорош для одного крупного проекта (для запуска дополнительного надо много телодвижений), а мы хотим построить СКВ для многих проектов.
3. В trac нет русификации, а она желательна (возможен доступ пользователей программ для создания задач или сообщений о багах).
4. В trac нет удобной системы распределения прав (есть конечно дополнительные пакеты, но если все это сложить, получается уж очень громоздко).
Поэтому я решил поискать систему, которая бы меня устраивала.
И я ее нашел, redmine. Он написан на Ruby, поддерживает кучу баз данных, есть русский язык, лишен всех недостатков перечисленных выше, самое главное, поддерживает git "из коробки"!
Краткий обзор возможностей отсюда:
* Поддержка нескольких проектов в одной базе данных;
* Гибкая система настройки пользовательских прав доступа;
* Гибкая система тикетов и заданий;
* Поддержка календаря и графиков Гантта
* Поддержка файлового архива, документация и новостных лент по проекту
* Сквозное логирование событий в системе и поддержка отсылки на еmail
* Встроенная система Wiki по проекту
* Встроенная система форумов по проекту
* Простая система учета времени
* Возможность добавлять произвольные пользовательские поля к проектам, заданиям и пользователям
* Интеграция с системами контроля версий (SVN, CVS, Mercurial, Bazaar and Darcs)
* Поддержка LDAP авторизации
* Поддержка регистрации пользователей
* Мультиязычность (Русский и Украинский присутствуют)
* Поддержка различных баз данных
Дополню, что git тоже поддерживается.
Начнем.
Системе 3 года, но уже информации по ней много, все хвалят, соответственно в поиске можно найти много мануалов по установке прямо под вашу систему.
Но мы пройдем этот путь заново :)
Считаем, что apache2 и postgres 8.3 уже установлен.
Следуем официальному руководству по установке:
1. Проверяем и устанавливаем необходимые пакеты:
#ruby --version
ruby 1.8.7 (2007-03-13 patchlevel 0) [i386-freebsd7]
#cd /usr/ports/www/rubygem-rails
#make clean install
Этот пакет содержит все компоненты, которые необходимы для запуска Ruby On Rails (собственно, на котором и написан redmine).
Таблицу с необходимыми версиями смотрим здесь.
У меня с портами REALEASE-7.2 встала версия 2.3.2
#cd /usr/ports/converters/ruby-iconv
#make clean install
2. Скачиваем стабильную ветку:
#wget http://rubyforge.org/frs/download.php/56909/redmine-0.8.4.tar.gz
#tar -zxvf redmine-0.8.4.tar.gz
3. Конфигурируем базу данных.
Добавляем пользователя redmine в базу данных postgres:
#su pgsql
$createuser redmine -–no-superuser -–no-createdb -–no-createrole -–login –-pwprompt -–encrypted
$createdb --owner=redmine --encoding=utf-8 redmine
$exit
Редактируем pg_hba.conf при необходимости.
Копируем ~/redmine-0.8.4/config/database.yml.example в ~/redmine-0.8.4/config/database.yml и редактируем:
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: password
encoding: utf8
Заполняем базу данных схемой Redmine, выполнив команду в директории redmine-0.8.4:
#rake db:migrate RAILS_ENV="production"
Загружаем первоначальную конфигурацию Redmine:
#rake redmine:load_default_data RAILS_ENV="production"
4. Устанавливаем права.
Пользователь www должен иметь право писать в директории files, log, tmp.
#cd redmine-0.8.4
#chown -R www:www files log tmp public/plugin_assets
#chmod -R 755 files log tmp public/plugin_assets
5. Пробный запуск.
#sudo -u www ruby script/server webrick -e production
Переходим по адресу http://SERVER:3000/, все должно работать.
Можно залогиниться от admin, пароль admin.
Примеры настройки smtp сервера здесь.
6. Связываем apache и Redmine.
Есть официальное how to.
Мне оно не понравилось, использует CGI, в общем все кисло :)
Гораздо более интересно решение "Настройка Redmine на работу через apache and mongrel_cluster по HTTPS", изначально подсмотренное здесь.
Предлагается использовать mongrel в качестве бэкенда к серверу apache.
Mongrel является HTTP-сервером и библиотекой на Ruby, которая предназначена для хостинга разнообразных веб-приложений написанных на языке программирования Ruby, используя HTTP протокол, а не FastCGI или SCGI.
Вот это уже гораздо интересней. Тем более https.
Но я решил пойти немного другим путем, установкой Phusion Passenger (aka mod_rails).
# cd /usr/ports/www/rubygem-passenger
# make clean install
Настраиваем апач:
Доступные настройки mod_rails:
* RailsEnv - задает среду выполнения приложения. Значение по умолчанию: production.
* RailsBaseURI - задает директорию, в которую размещается приложение. По этому адресу должна находиться директория public приложения.
* RailsRuby - задает интерпретатор, который будет использован для выполнения приложения. Имеет смысл, если у Вас установлено несколько интерпретаторов Руби.
* RailsMaxPoolSize - максимальное количество запущенных экземпляров приложения. Оптимально значение зависит от конфигурации системы. Значение по умолчанию: 20.
* RailsPoolIdleTime - максимальное время бездействия экземпляра приложения в секундах. По истечении этого времени экземпляр приложения будет остановлен для экономии памяти. Разработчики рекомендуют в качестве оптимального значения 2*x, где x - время, которое пользователь тратит на просмотр страницы. Значение по умолчанию: 120.
Настроен апач примерно так.
Создаем сертификаты.
А потом настраиваем секьюрный хост:
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
SSLMutex file:/usr/local/etc/apache22/logs/ssl_mutex
SSLSessionCache shm:/usr/local/etc/apache22/logs/ssl_cache_shm
SSLSessionCacheTimeout 600
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
NameVirtualHost *:80
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.2
PassengerRuby /usr/local/bin/ruby18
PassengerDefaultUser www
PassengerMaxPoolSize 1
PassengerUseGlobalQueue on
PassengerMaxInstancesPerApp 1
ServerName SERVER
ErrorLog etc/apache22/logs/httpd-redmine.log
RewriteEngine On
Options +FollowSymlinks
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=permanent]
RailsEnv production
ServerName SERVER
SSLEngine on
SSLVerifyClient none
SSLCertificateFile etc/apache22/keys/new.crt
SSLCertificateKeyFile etc/apache22/keys/new.key
SSLCACertificateFile etc/apache22/keys/cacert.pem
SSLProtocol all -SSLv2
DocumentRoot /tank/redmine/redmine-0.8.4/public
ErrorLog etc/apache22/logs/httpsd-redmine.log
Options FollowSymLinks
AllowOverride None
SSLOptions +StdEnvVars
Order allow,deny
Allow from all
Проверяем конфигурацию apache:
#/usr/local/etc/rc.d/apache22 configtest
Стартуем и может быть получаем ошибку
Error message:
No such file or directory - /nonexistent
Exception class:
Errno::ENOENT
если у нашего пользователя www нет домашней директории. Решается это так:
Покопавшись немного обнаружил, что проблема вызвана конфликтом Passenger и gem и исправляется внесением изменений в файл rubygems.rb в метод self.set_paths.
Необходимо заменить код
# only create by matching user
next if Etc.getpwuid.uid != File::Stat.new(Gem.user_home).uid
на:
# only create by matching user
home_folder_uid = File::Stat.new(Gem.user_home).uid rescue nil
next if Etc.getpwuid.uid != home_folder_uid
Файл находится здесь /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb .
Перезапускаем апач, http://SERVER (должен выполниться редирект на https://SERVER).
Настройка самого redmine через веб-интерфейс интуитивно понятна, удачи!
PS. Кстати, напоследок линк: Git User's Manual
а почемун не попробовать nginx
ОтветитьУдалитьВ таком случае придется выбирать между cgi на nginx, или бек WEBRick + фронт nginx, или бек mongrel_cluster + фронт nginx. И для чего этот зоопарк? Скажите, чем апач хуже?
ОтветитьУдалитьДа, ="" - в конифигах не нужно, эту блоггер зачем-то добавляет.
ОтветитьУдалитьспасибо статья оказалась полезной
ОтветитьУдалитьРеспект! Отжигаешь по полной!
ОтветитьУдалитьKillich
да уж, ребята, webrick-у самое место на production окружении....
ОтветитьУдалить