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
- <ifmodule mime.c="">
- AddType application/x-x509-ca-cert .crt
- AddType application/x-pkcs7-crl .crl
- </ifmodule>
- 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
- <virtualhost *:80="">
- ServerName SERVER
- ErrorLog etc/apache22/logs/httpd-redmine.log
- RewriteEngine On
- Options +FollowSymlinks
- RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=permanent]
- </virtualhost>
- <virtualhost *:443="">
- 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
- <directory tank="" redmine="" redmine-0.8.4="" public="">
- Options FollowSymLinks
- AllowOverride None
- SSLOptions +StdEnvVars
- Order allow,deny
- Allow from all
- </directory>
- </virtualhost>
Проверяем конфигурацию 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 окружении....
ОтветитьУдалить