Trac - быстрый старт

Материал из 1GbWiki.

(Различия между версиями)
Перейти к: навигация, поиск
Версия 15:09, 13 апреля 2011 (править)
Renton (Обсуждение | вклад)
(Патч для создания правильных URI)
← К предыдущему изменению
Версия 18:06, 10 февраля 2013 (править) (отменить)
Renton (Обсуждение | вклад)
(Подготовка окружения)
К следующему изменению →
Строка 6: Строка 6:
== Подготовка окружения == == Подготовка окружения ==
-Создаем в корне домашнего каталога файл <code>.pydistutils.cfg</code> для настройки путей инсталляции модулей:+Данный этап установки ничем не отличается от инструкции по установке Django (Trac также работает только со 2-ой веткой python), поэтому обратитесь к статье [http://www.1gb.ru/wiki/index.php?title=Django_-_%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9_%D1%81%D1%82%D0%B0%D1%80%D1%82#.D0.9F.D0.BE.D0.B4.D0.B3.D0.BE.D1.82.D0.BE.D0.B2.D0.BA.D0.B0_.D0.BE.D0.BA.D1.80.D1.83.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F Django#Подготовка окружения] и выполните пункты 1 - 7, '''за исключением пункта 2'''.
- +Вместо пункта 2 из инструкции "установка Django" выполните такую команду:
- cat > ~/.pydistutils.cfg <<END+ $ mkdir -p ~/src ~/python/bin ~/python/lib64/${PYTHON_VERSION}/site-packages ~/trac ~/svn ~/http/chrome
- [install]+
- prefix = \$HOME/python+
- +
- [easy_install]+
- install_dir = \$HOME/python/lib64/python`python -c 'import sys; print sys.version[:3]'`/site-packages+
- END+
- +
-* Для настройки переменных <code>PATH</code>, <code>PYTHONPATH</code> и <code>alias</code>'ов добавьте строки в ваш <code>~/.bashrc</code>:+
- export PATH=$PATH:$HOME/python/bin:$HOME/python/lib64/python`python -c 'import sys; print sys.version[:3]'`/site-packages+
- export PYTHONPATH=$PYTHONPATH:$HOME/python/lib64/python`python -c 'import sys; print sys.version[:3]'`/site-packages+
- alias easy_install=$HOME/python/lib64/python`python -c 'import sys; print sys.version[:3]'`/site-packages/easy_install+
- +
-* Выполняем команду:+
- source ~/.bashrc+
-для того, чтобы сделанные изменения вступили в силу.+
- +
-* Создаем различные каталоги:+
- mkdir -p ~/src ~/python/lib64/python`python -c 'import sys; print sys.version[:3]'`/site-packages ~/trac ~/svn ~/http/chrome+
-* Симлинк:+
- cd ~/python; ln -s lib64 lib; cd+
== Установка компонентов == == Установка компонентов ==

Версия 18:06, 10 февраля 2013

Содержание

Общие сведения

Trac - бесплатное программное обеспечение написанное на языке Python, представляющие из себя прекрасный инструмент для автоматизированного управления проектами и системой отслеживания ошибок (bug tracker). Имеет простой wiki-подобный web-интерфейс.

На хостинге 1Gb.ru trac можно запустить в режиме UNIX/Apache/FastCGI, для этого убедитесь в разделе личного кабинета /Управление сайтами и серверами/ что у вас правильно выбран тип сервера.

Подготовка окружения

Данный этап установки ничем не отличается от инструкции по установке Django (Trac также работает только со 2-ой веткой python), поэтому обратитесь к статье Django#Подготовка окружения и выполните пункты 1 - 7, за исключением пункта 2. Вместо пункта 2 из инструкции "установка Django" выполните такую команду:

$ mkdir -p ~/src ~/python/bin ~/python/lib64/${PYTHON_VERSION}/site-packages ~/trac ~/svn ~/http/chrome

Установка компонентов

  • Смотрим версию Python, установленного на сервере:
$ python -V

С сайта http://pypi.python.org/pypi/setuptools берем setuptools соответствующий нашей версии. Пример комманд для Python 2.6.X:

$ cd ~/src && wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086
$ /bin/bash ./setuptools-0.6c11-py2.6.egg
  • Устанавливаем модуль flup, для работы Trac в FastCGI режиме:
$ easy_install flup
  • Ставим trac:
$ easy_install -Z trac
  • Также сразу ставим модуль WebAdmin для настройки trac через web-интерфейс:
$ easy_install http://svn.edgewall.org/repos/trac/plugins/0.10/webadmin/

Настройка trac

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

Если планируете использовать базу данных MySQL, надо установить mysql-python:

$ easy_install mysql-python
  • Создаем проект под именем demo_trac:
$ trac-admin ~/trac/demo_trac initenv

Для базы данных MySQL строка подключения будет выглядить так:

mysql://db_name:db_password@db_host:3306/db_name

Тип репозитория - svn. Остальные настройки проекта оставляем по-умолчанию, их потом можно будет изменить в файле trac.ini

Настройка FastCGI диспетчера и файла .htaccess

  • Переходим в каталог ~/http и делаем настройку FastCGI диспетчера и правил редиректа mod_rewrite:

Файл index.fcgi

#!/usr/bin/python

import sys, os, site

# Add a custom Python path.
PYTHON_CUSTOM_PATH = os.path.abspath (os.path.join (os.path.dirname (os.path.abspath (__file__)), \
                     '../python/lib64/pythonВАША_ВЕРСИЯ/site-packages'))
sys.path.insert (0, PYTHON_CUSTOM_PATH)
site.addsitedir (PYTHON_CUSTOM_PATH)

# Add a custom trac env path.
MY_TRAC_ENV_PATH = os.path.abspath (os.path.join (os.path.dirname (os.path.abspath (__file__)), \
                   '../trac/demo_trac'))

os.environ['TRAC_ENV'] = MY_TRAC_ENV_PATH

from trac.web.main import dispatch_request
from flup.server.fcgi import WSGIServer

WSGIServer(dispatch_request).run()

Для того, чтобы у нас заработала авторизация, обязательно скопируйте файл index.fcgi в файл admin.fcgi:

$ cd ~/http && cp index.fcgi admin.fcgi

и даем права доступа на исполнение:

$ cd ~/http && chmod 755 *.fcgi

Файл .htaccess (Секция Files не нужна, если вы хотите использовать более продвинутую (и удобную) авторизацию из плагинов (см.Официальные плагины))

DirectoryIndex index.fcgi

Options +FollowSymlinks

AddHandler fcgid-script .fcgi

RewriteEngine On
RewriteRule ^(index.fcgi/chrome/site/)(.*)$ ./chrome/site/$2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.fcgi/$1 [QSA,L]


<Files "admin.fcgi">
      AuthType Basic
      AuthUserFile /home/virtwww/имя_пользователя/trac/demo_trac/conf/trac.htpasswd
      AuthName "Trac Sign In"
      require valid-user
</Files>

RewriteRule ^index\.fcgi/login$ /admin.fcgi/login
RewriteRule ^admin\.fcgi/logout$ /index.fcgi/logout

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

$ cd ~/http/chrome && ln -sf ~/python/lib64/python`python -c 'import sys; print sys.version[:3]'`/site-packages/Trac-*.egg/trac/htdocs common
$ cd ~/http/chrome && ln -s ~/trac/название_вашего_проекта/htdocs site

Добавления пользователя admin и настройка авторизации

Здесь важно понимать, что при использовании связки SSH-SVN-Trac настройка авторизации происходит для каждого компонента в отдельности, т.е. один пользователь может работать только по SSH (с репозиторием SVN), другой по протоколу SVN, третий только с интерфейсом Trac, поэтому будьте внимательны, если вы хотите чтобы один и тот же пользователь работал со всеми интерфейсами.

  • Добавляем администратора в trac:
$ trac-admin ~/trac/demo_trac
/trac/demo_trac]> permission add любое_имя_пользователя TRAC_ADMIN
  • Назначаем пароль:
$ cd ~/trac/demo_trac/conf/ && /usr/local/sbin/htpasswd -c trac.htpasswd любое_имя_пользователя

таким образом данный пользователь будет являться администратором для системы Trac, например, он сможет через web-интерфейс Trac'а добавлять новых пользователей, изменить настройки Trac и т.п.


Примечание. Если вы хотите добавить еще одного пользователя, то опцию -c указывать не нужно.


О добавлении пользователей SVN, SSH речь пойдет ниже.

trac.ini

  • Включем WebAdmin, в конец файла добавляем строки:
[components]
webadmin.* = enabled

Остальные опции на ваше усмотрение.

Патч для создания правильных URI

  • Для создания "красивых" URI патчим файл ~/python/lib/pythonВАША_ВЕРСИЯ/site-packages/Trac-0.11.5-py2.5.egg/trac/web/api.py (ваш путь может немного отличаться).

для версии Trac 0.11

Строку:

base_path = property(fget=lambda self: self.environ.get('SCRIPT_NAME', ),

меняем на:

base_path = property(fget=lambda self: os.path.dirname(self.environ.get('SCRIPT_NAME', )),

для версии Trac 0.12

Строку:

return self.environ.get('SCRIPT_NAME', )

меняем на:

return os.path.dirname(self.environ.get('SCRIPT_NAME', ))
  • Если вы планируете использовать Trac не из корня сайта, а из какого-то подкаталога, например, из ~/http/trac, то в файле ~/python/lib/python2.5/site-packages/Trac-0.11.5-py2.5.egg/trac/web/api.py, строку:
if not req.path_info or req.path_info == '/':

меняем на:

if not req.path_info or req.path_info == '/' or req.path_info == '/trac/':

Это для того, чтобы при обращении к http://example.com/trac не происходило лишнего редиректа на http://example.com/trac/trac/, если кто-то знает другой способ, сообщите мне.

Настройка SVN

Обратитесь пожалуйста к этой статье: SVN - быстрый старт (профессиональная версия)

Интеграция с trac

  • В файле ~/trac/название_проекта/conf/trac.ini указываем путь к нашему репозиторию:
repository_dir = /home/virtwww/имя_пользователя/svn/название_репозитория

Демо trac

См. также

Ссылки

  • The Trac User and Administration Guide (англ.) - документация по Trac на сайте разработчиков.
  • The Trac User and Administration Guide (рус.) - документация по Trac на сайте разработчиков (частичный перевод).
  • Trac-Hacks (англ.) - популярный ресурс по Trac с большим количеством плагинов и модулей.
Личные инструменты