FreeBSD

FreeBSD. Установка и настройка Trac

Trac — это инструмент управления проектами и отслеживания ошибок в программном обеспечении. Он использует минималистичный веб-интерфейс, основанный на технологии wiki, и позволяет организовать перекрёстные гиперссылки между базой данных зарегистрированных ошибок, системой управления версиями и wiki-страницами.

Это даёт возможность использовать Trac в том числе и как веб-интерфейс для доступа к системе контроля версий subversion, а так же, через плагины, к Mercurial, git, Bazaar и другим. Trac написан на языке программирования python и в настоящее время распространяется по модифицированной лицензии BSD.

http://ru.wikipedia.org/wiki/Trac

Возможности

  • Возможность просмотра всех изменений в svn и trac-проекте.
  • Можно создавать подпроекты, например для портала это будет «Разработать сервис фотографий», «Разработка форума» или «Реконструкция поискового-модуля». И для каждого будут отдельные группы тикетов.
  • Просмотреть изменения кодов проекта в svn-ревизиях и сравнивание их.
  • Создание, просмотр и закрытие тикетов.
  • Управление пользователями, участвующие в разработке.
  • Wiki-движок, с помощью которого можно создавать как справочную информацию, так и документацию по проекту в целом.

Так же имеется куча плагинов для Trac, с помощью которых вы легко расширите функционал!

Установка

Для развертывания Trac нам понадобится:

  • Apache 2.2 — но вы можете так же развернуть и на Apache 1.3 или на Nginx, к примеру
  • mod_python3 — это для Apache 2, а для 1.3 надо просто «mod_python»
  • Subversion — либо другие системы контроля версия, например Mercurial, git или Bazaar
  • py-subversion — для работы из Python с Subversion
  • MySQL — можете также использовать SQLite или PgSQL. Подробнее http://trac.edgewall.org/wiki/DatabaseBackend
  • Ну и сам Trac разумеется

Установка mod_python3 на Apache 2.2

  1. # cd /usr/ports/www/mod_python3/
  2. # make install clean

Зайдите и проверьте установился ли модуль mod_python.so

  1. # cd /usr/local/libexec/apache22/
  2. # ll | grep mod_python

Если он есть, то впишите в конфиг httpd.conf

  1. LoadModule python_module libexec/apache22/mod_python.so

Более подробно о mod_python можно почитать тут: http://trac.edgewall.org/wiki/TracModPython

Установка Trac

Trac устанавливается очень просто:

  1. # cd /usr/ports/www/trac
  2. # make install clean

Если вы хотите управлять настройками trac-проекта и правами пользователей из web-панели, то установите плагин ”trac-webadmin”.

  1. # cd /usr/ports/www/trac-webadmin/
  2. # make install clean

Более подробно о WebAdmin можно почитать тут: http://trac.edgewall.org/wiki/WebAdmin

Использование MySQL

Если вы хотите использовать MySQL для хранения данных Trac, то вам надо установить MySQL-python драйвер. Если вам не надо, то можете использовать SQLite и пропустить установку MySQL-python, которую я опишу далее.

Для этого надо установить драйвер MySQL-python.

  1. # cd /tmp
  2. # fetch http://downloads.sourceforge.net/sourceforge/mysql-python/MySQL-python-1.2.2.tar.gz
  3. # tar -xvf MySQL-python-1.2.2.tar.gz
  4. # cd MySQL-python-1.2.2
  5. # python setup.py build
  6. # python setup.py install

Если вы используете Apache, то перезагрузите его, дабы достучатся до mod_python.

Теперь создадим базу данных и пользователя для Trac:

  1. CREATE DATABASE trac DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
  2. CREATE USER tracuser IDENTIFIED BY 'password';
  3. GRANT ALL ON trac.* TO tracuser;
  4. FLUSH PRIVILEGES;

Не забудьте заменить пароль в запросе на придуманный вами.

Установка Subversion с поддержкой Python

  1. # cd /usr/ports/devel/subversion
  2. # make WITH_PYTHON=true WITH_BERKELEYDB=db42 WITH_MOD_DAV_SVN= install

Более подробно о ключах: http://trac.edgewall.org/wiki/TracFaq

Установка py-subversion

  1. # cd /usr/ports/devel/py-subversion
  2. # make FORCE_PKG_REGISTER= install clean

Более подробно о ключе: http://trac.edgewall.org/wiki/TracSubversion

Настройка Apache

Отредактируем конфиг Apache и добавим новый виртуальный хост:

  1. <virtualhost *:80>
  2.     DocumentRoot "/home/trac"
  3.     ServerName trac.example.com
  4.     <location / >
  5.         SetHandler mod_python
  6.         PythonInterpreter main_interpreter
  7.         PythonHandler trac.web.modpython_frontend
  8.         PythonOption TracEnv /home/trac/example.com
  9.         PythonOption TracUriRoot /
  10.         AuthType Basic
  11.         AuthName "Trac Server"
  12.         AuthUserFile /home/trac/example.com/.htpasswd
  13.         Require valid-user    
  14.     </location>
  15. </virtualhost>

Я делаю с обязательной авторизацией на Trac, дабы сторонние пользователи не заходили. Если вы хотите чтобы Trac был открыт на всеобщее обозрение, то можно эту часть:

  1. AuthType Basic
  2. AuthName "Trac Server"
  3. AuthUserFile /home/trac/example.com/.htpasswd
  4. Require valid-user

Вынести в отдельный <location>, например вот так получится в результате:

  1. <virtualhost *:80>
  2.     DocumentRoot "/home/trac"
  3.     ServerName trac.example.com
  4.     <location / >
  5.         SetHandler mod_python
  6.         PythonInterpreter main_interpreter
  7.         PythonHandler trac.web.modpython_frontend
  8.         PythonOption TracEnv /home/trac/example.com
  9.         PythonOption TracUriRoot /
  10.     </location>  
  11.     <location / >
  12.         AuthType Basic
  13.         AuthName "Trac Server"
  14.         AuthUserFile /home/trac/example.com/.htpasswd
  15.         Require valid-user
  16.     </location>    
  17. </virtualhost>

Также, я использую пароли от Subversion для авторизации, если посмотрите статью FreeBSD. Установка и настройка Subversion, то у нас был путь «/home/svn/svn-auth-file», вот его и будем использовать в качестве AuthUserFile:

  1. ...
  2. AuthUserFile /home/svn/svn-auth-file
  3. ...

Создание Trac-проекта

Для начала нам надо создать trac-проект и настроить его.

  1. # trac-admin /home/trac/example.com initenv

initenv — создание и использование интерактивного режима

Более подробно о командах trac-admin: http://trac.edgewall.org/wiki/TracAdmin

Далее, укажите имя проекта и адрес для соединения с MySQL

  1. mysql://tracuser:password@localhost:3306/trac

Тип используемого сервера контроля версия «svn» и путь до svn-репозитория вашего проекта

  1. /home/svn/repos/example.com

Подробнее http://trac.edgewall.org/wiki/TracEnvironment

Настройка Trac-проекта

Отредактируйте файл «/home/trac/example.com/conf/trac.ini» и измените следующие директивы:

  1. default_charset = utf-8
  2. base_url = http://trac.example.com

В конце файла добавляем активацию плагина «webadmin»:

  1. [components]
  2. webadmin.* = enabled

Подробнее по всем директивам http://trac.edgewall.org/wiki/TracIni

Если вы заходите на адрес «trac.example.com» и видите:

Permission denied: '/home/trac/example.com/.egg-cache'

то, настройте права на запись для каталога trac-проекта.

Назначаем права администратора одному из пользователей

  1. # trac-admin /home/trac/example.com permission add имя_пользователя TRAC_ADMIN

Синхронизацию trac-проекта с svn-проектом

  1. # trac-admin /home/trac/example.com resync

Автоматическое оповещения svn-изменений для trac-тикетов

И на последок, если вы используете svn-хуки, то добавьте эти строки в post-commit для оповещения trac-тикетов:

  1. TRAC_ENV="/home/trac/example.com"
  2. /usr/bin/python /usr/local/bin/trac-post-commit-hook -p "$TRAC_ENV" -r "$REV"

Похожие статьи

RSS Комментарии (6)

Оставить комментарий

  • gnezim написал 20 октября 2009, 16:41

    Очепятка:

    2.# ll | grep mod_python

    По всей видимости был упомянут ls

  • gnezim написал 20 октября 2009, 16:41

    Еще момент:
    «Для этого надо установить драйвер MySQL-python.»

    а зачем ставить из сырцов, если есть порт: databases/py-MySQLdb/

  • Дозморов Игорь написал 21 октября 2009, 16:41

    Нет, был использован именно ll

    ls has a large number of other options (see: man ls). It is a frequently used tool that provides an interface to the file system via the command line.
    On some systems (e.g. PCLinuxOS), ls has an alias of just l. Many systems also alias ls -l to ll.

    а вообще можно и ls

  • Дозморов Игорь написал 21 октября 2009, 16:41

    Откуда драйвер будет установлен – неважно )))

  • gnezim написал 21 октября 2009, 16:41

    По поводу ll понял :)
    позабыл про это, эххх память моя память..

    Про драйвер – ну как-то идеологически корректнее использовать дерево портов ;)

  • Дозморов Игорь написал 22 октября 2009, 16:41

    Согласен, думаю, ближе к выходным поправлю ))

Оставить комментарий