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

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

(Различия между версиями)
Перейти к: навигация, поиск
Версия 19:40, 31 мая 2010 (править)
77.239.235.129 (Обсуждение)
(Содержимое страницы заменено на «http://1gb.ru/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D...»)
← К предыдущему изменению
Версия 20:00, 31 мая 2010 (править) (отменить)
Dmih (Обсуждение | вклад)
м (Правки 77.239.235.129 (обсуждение) откачены к версии 109.233.224.22)
К следующему изменению →
Строка 1: Строка 1:
-http://1gb.ru/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0+== Общие сведения ==
 + 
 +'''Trac''' - бесплатное программное обеспечение написанное на языке [http://www.python.org/ Python], представляющие из себя прекрасный инструмент для автоматизированного управления проектами и системой отслеживания ошибок (bug tracker). Имеет простой wiki-подобный web-интерфейс.
 + 
 +На хостинге [http://www.1gb.ru 1Gb.ru] trac можно запустить в режиме <code>UNIX/Apache/FastCGI</code>, для этого убедитесь в разделе личного кабинета <code>/Управление сайтами и серверами/</code> что у вас правильно выбран тип сервера.
 + 
 +== Подготовка окружения ==
 +Создаем в корне домашнего каталога файл <code>.pydistutils.cfg</code> для настройки путей инсталляции модулей:
 + [install]
 + prefix = $HOME/python
 +
 + [easy_install]
 + install_dir = $HOME/python/lib64/python2.5/site-packages
 +* Для настройки переменных <code>PATH</code>, <code>PYTHONPATH</code> и <code>alias</code>'ов добавьте строки в ваш <code>~/.bashrc</code>:
 + export PATH=$PATH:$HOME/python/bin:$HOME/python/lib64/python2.5/site-packages
 + export PYTHONPATH=$PYTHONPATH:$HOME/python/lib64/python2.5/site-packages
 + alias easy_install=$HOME/python/lib64/python2.5/site-packages/easy_install
 + 
 +* Выполняем команду:
 + source ~/.bashrc
 +для того, чтобы сделанные изменения вступили в силу.
 + 
 +* Создаем различные каталоги:
 + mkdir -p ~/src ~/python/lib64/python2.5/site-packages ~/trac ~/svn ~/http/chrome
 +* Симлинк:
 + cd ~/python; ln -s lib64 lib; cd
 + 
 +== Установка компонентов ==
 + 
 +* Установим свой <code>easy_install</code>:
 + $ cd ~/src && wget http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c11-py2.5.egg#md5=64c94f3bf7a72a13ec83e0b24f2749b2
 + $ /bin/bash ./setuptools-0.6c11-py2.5.egg
 + 
 +* Устанавливаем модуль flup, для работы Trac в FastCGI режиме:
 + $ easy_install flup
 +* Ставим trac:
 + $ easy_install trac
 +* Также сразу ставим модуль WebAdmin для настройки trac через web-интерфейс:
 + $ easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin/
 + 
 +== Настройка trac ==
 +=== Создание проекта ===
 +* Создаем проект под именем <code>demo_trac</code>:
 + $ trac-admin ~/trac/demo_trac initenv
 +Рекомендую использовать базу данных MySQL, строка подключения для нее будет выглядить так:
 + mysql://db_name:db_password@db_host:3306/db_name
 +Тип репозитория - <code>svn</code>. Остальные настройки проекта оставляем по-умолчанию, из потом можно будет изменить через файл <code>trac.ini</code>
 + 
 +=== Настройка FastCGI диспетчера и файла <code>.htaccess</code> ===
 +* Переходим в каталог ~/http и делаем настройку FastCGI диспетчера и правил редиректа mod_rewrite:
 +Файл <code>index.fcgi</code>
 + 
 + #!/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/python2.5/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()
 + 
 +Для того, чтобы у нас заработала авторизация, обязательно скопируйте файл <code>index.fcgi</code> в файл <code>admin.fcgi</code>:
 + $ cd ~/http && cp index.fcgi admin.fcgi
 + 
 +Файл <code>.htaccess</code>
 + 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 -s ~/python/lib64/python2.5/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 и т.п.
 + 
 +----
 +'''''Примечание.''''' Если вы хотите добавить еще одного пользователя, то опцию <code>-c</code> указывать не нужно.
 +----
 + 
 +О добавлении пользователей SVN, SSH речь пойдет ниже.
 + 
 +=== trac.ini ===
 +* Включем WebAdmin, в конец файла добавляем строки:
 + [components]
 + webadmin.* = enabled
 + 
 +Остальные опции на ваше усмотрение.
 + 
 +=== Патч для создания правильных URI ===
 +* Для создания "красивых" URI патчим файл <code>~/python/lib/python2.5/site-packages/Trac-0.11.5-py2.5.egg/trac/web/api.py</code> (ваш путь может немного отличаться).
 +Строку:
 + 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 не из корня сайта, а из какого-то подкаталога, например, из <code>~/http/trac</code>, то в файле <code>~/python/lib/python2.5/site-packages/Trac-0.11.5-py2.5.egg/trac/web/api.py</code>, строку:
 + if not req.path_info or req.path_info == '/':
 +меняем на:
 + if not req.path_info or req.path_info == '/' or req.path_info == '/trac/':
 + 
 +Это для того, чтобы при обращении к <code><nowiki>http://example.com/trac</nowiki></code> не происходило лишнего редиректа на <code><nowiki>http://example.com/trac/trac/</nowiki></code>, если кто-то знает другой способ, сообщите мне.
 + 
 +== Настройка SVN ==
 +Обратитесь пожалуйста к этой статье: [[SVN - быстрый старт (профессиональная версия)]]
 + 
 +=== Интеграция с trac ===
 +* В файле <code>~/trac/название_проекта/conf/trac.ini</code> указываем путь к нашему репозиторию:
 + repository_dir = /home/virtwww/имя_пользователя/svn/название_репозитория
 + 
 +== Демо trac ==
 +* http://test-l7-trac.1gb.ru/ - демо версия trac на хостинге 1Gb.ru
 + 
 +== См. также ==
 +* [[Юникс шелл]]
 +* [[SVN - быстрый старт (профессиональная версия)]]
 + 
 +== Ссылки ==
 +* [http://trac.edgewall.org/wiki/TracGuide The Trac User and Administration Guide] (англ.) - документация по Trac на сайте разработчиков.
 +* [http://trac.edgewall.org/wiki/TranslationRu/TracGuide The Trac User and Administration Guide] (рус.) - документация по Trac на сайте разработчиков (частичный перевод).
 +* [http://www.trac-hacks.org/ Trac-Hacks] (англ.) - популярный ресурс по Trac с большим количеством плагинов и модулей.
 +[[Категория:Программирование]]
 +[[Категория:Python]]

Версия 20:00, 31 мая 2010

Содержание

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

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

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

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

Создаем в корне домашнего каталога файл .pydistutils.cfg для настройки путей инсталляции модулей:

[install]
prefix = $HOME/python

[easy_install]
install_dir = $HOME/python/lib64/python2.5/site-packages
  • Для настройки переменных PATH, PYTHONPATH и alias'ов добавьте строки в ваш ~/.bashrc:
export PATH=$PATH:$HOME/python/bin:$HOME/python/lib64/python2.5/site-packages
export PYTHONPATH=$PYTHONPATH:$HOME/python/lib64/python2.5/site-packages
alias easy_install=$HOME/python/lib64/python2.5/site-packages/easy_install
  • Выполняем команду:
source ~/.bashrc

для того, чтобы сделанные изменения вступили в силу.

  • Создаем различные каталоги:
mkdir -p ~/src ~/python/lib64/python2.5/site-packages ~/trac ~/svn ~/http/chrome
  • Симлинк:
cd ~/python; ln -s lib64 lib; cd

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

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

Настройка trac

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

  • Создаем проект под именем 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/python2.5/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

Файл .htaccess

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 -s ~/python/lib64/python2.5/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/python2.5/site-packages/Trac-0.11.5-py2.5.egg/trac/web/api.py (ваш путь может немного отличаться).

Строку:

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 не из корня сайта, а из какого-то подкаталога, например, из ~/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 с большим количеством плагинов и модулей.
Личные инструменты