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/ | + | == Общие сведения == |
+ | |||
+ | '''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
- http://test-l7-trac.1gb.ru/ - демо версия trac на хостинге 1Gb.ru
См. также
Ссылки
- The Trac User and Administration Guide (англ.) - документация по Trac на сайте разработчиков.
- The Trac User and Administration Guide (рус.) - документация по Trac на сайте разработчиков (частичный перевод).
- Trac-Hacks (англ.) - популярный ресурс по Trac с большим количеством плагинов и модулей.