Trac - быстрый старт
Материал из 1GbWiki.
Версия 12:17, 11 февраля 2013 (править) Renton (Обсуждение | вклад) (→Создание проекта) ← К предыдущему изменению |
Версия 12:28, 11 февраля 2013 (править) (отменить) Renton (Обсуждение | вклад) (→Настройка FastCGI диспетчера и файла <code>.htaccess</code>) К следующему изменению → |
||
Строка 43: | Строка 43: | ||
=== Настройка FastCGI диспетчера и файла <code>.htaccess</code> === | === Настройка FastCGI диспетчера и файла <code>.htaccess</code> === | ||
- | + | '''1.''' Переходим в каталог ~/http и делаем настройку FastCGI диспетчера и правил редиректа mod_rewrite: | |
Файл <code>index.fcgi</code> | Файл <code>index.fcgi</code> | ||
- | + | $ cat > ~/http/index.fcgi <<END | |
- | #!/usr/bin/ | + | #!/usr/bin/${PYTHON_VERSION} -OO |
import sys, os, site | import sys, os, site | ||
Строка 52: | Строка 52: | ||
# Add a custom Python path. | # Add a custom Python path. | ||
PYTHON_CUSTOM_PATH = os.path.abspath (os.path.join (os.path.dirname (os.path.abspath (__file__)), \ | PYTHON_CUSTOM_PATH = os.path.abspath (os.path.join (os.path.dirname (os.path.abspath (__file__)), \ | ||
- | '../python/lib64/ | + | '../python/lib64/${PYTHON_VERSION}/site-packages')) |
sys.path.insert (0, PYTHON_CUSTOM_PATH) | sys.path.insert (0, PYTHON_CUSTOM_PATH) | ||
site.addsitedir (PYTHON_CUSTOM_PATH) | site.addsitedir (PYTHON_CUSTOM_PATH) | ||
Строка 66: | Строка 66: | ||
WSGIServer(dispatch_request).run() | WSGIServer(dispatch_request).run() | ||
+ | END | ||
Для того, чтобы у нас заработала авторизация, обязательно скопируйте файл <code>index.fcgi</code> в файл <code>admin.fcgi</code>: | Для того, чтобы у нас заработала авторизация, обязательно скопируйте файл <code>index.fcgi</code> в файл <code>admin.fcgi</code>: | ||
Строка 72: | Строка 73: | ||
$ cd ~/http && chmod 755 *.fcgi | $ cd ~/http && chmod 755 *.fcgi | ||
- | Файл <code>.htaccess</code> (Секция Files не нужна, если вы хотите использовать более продвинутую (и удобную) авторизацию из плагинов (см.[http://trac.edgewall.org/wiki/PluginList Официальные плагины])) | + | '''2.''' Файл <code>.htaccess</code> (Секция Files не нужна, если вы хотите использовать более продвинутую (и удобную) авторизацию из плагинов (см.[http://trac.edgewall.org/wiki/PluginList Официальные плагины])) |
+ | $ cat > ~/http/.htaccess <<END | ||
DirectoryIndex index.fcgi | DirectoryIndex index.fcgi | ||
Строка 80: | Строка 82: | ||
RewriteEngine On | RewriteEngine On | ||
- | RewriteRule ^(index.fcgi/chrome/site/)(.*)$ ./chrome/site/$2 | + | RewriteRule ^(index.fcgi/chrome/site/)(.*)$ ./chrome/site/\$2 |
RewriteCond %{REQUEST_FILENAME} !-f | RewriteCond %{REQUEST_FILENAME} !-f | ||
RewriteCond %{REQUEST_FILENAME} !-d | RewriteCond %{REQUEST_FILENAME} !-d | ||
- | RewriteRule ^(.*)$ index.fcgi/$1 [QSA,L] | + | RewriteRule ^(.*)$ index.fcgi/\$1 [QSA,L] |
- | + | ||
- | + | ||
<Files "admin.fcgi"> | <Files "admin.fcgi"> | ||
AuthType Basic | AuthType Basic | ||
- | AuthUserFile /home/virtwww/ | + | AuthUserFile /home/virtwww/$(whoami)/trac/'''demo_trac'''/conf/trac.htpasswd |
AuthName "Trac Sign In" | AuthName "Trac Sign In" | ||
require valid-user | require valid-user | ||
Строка 95: | Строка 96: | ||
RewriteRule ^index\.fcgi/login$ /admin.fcgi/login | RewriteRule ^index\.fcgi/login$ /admin.fcgi/login | ||
RewriteRule ^admin\.fcgi/logout$ /index.fcgi/logout | RewriteRule ^admin\.fcgi/logout$ /index.fcgi/logout | ||
+ | END | ||
- | Для работы статики создаем симлинки: | + | '''3.''' Для работы статики создаем симлинки: |
- | $ cd ~/http/chrome && ln -sf ~/python/lib64/ | + | $ cd ~/http/chrome && ln -sf ~/python/lib64/${PYTHON_VERSION}/site-packages/Trac-*.egg/trac/htdocs common |
$ cd ~/http/chrome && ln -s ~/trac/'''название_вашего_проекта'''/htdocs site | $ cd ~/http/chrome && ln -s ~/trac/'''название_вашего_проекта'''/htdocs site | ||
Версия 12:28, 11 февраля 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
Установка компонентов
1. С сайта http://pypi.python.org/pypi/setuptools берем setuptools
соответствующий нашей версии python. Либо скачиваем нужную версию следующей командой:
$ cd ~/src && lynx -source "http://pypi.python.org/pypi/setuptools#downloads" \ | awk "/py$(echo $PYTHON_VERSION | tr -d python).egg#md5/ {url = gensub(/.*<a href=\"(.*)\">s.*\.egg<.*/,\"\\\\1\",\"\"); \ f = gensub(/.*\/([\.a-z\-0-9]+)#.*/,\"\\\\1\",\"\",url); system (\"wget -O \"f\" \"url)}"
и устанавливаем:
$ /bin/bash ./setuptools*.egg
2. Устанавливаем модуль flup, для работы Trac в FastCGI режиме:
$ easy_install flup
если установка заканчивается так:
error: None
то устанавливаем flup по прямой ссылке:
$ easy_install "http://pypi.python.org/packages/source/f/flup/flup-1.0.2.tar.gz#md5=24dad7edc5ada31dddd49456ee8d5254"
3. Ставим trac:
$ easy_install -Z trac
Настройка trac
Создание проекта
Если планируете использовать базу данных MySQL, надо установить mysql-python:
$ easy_install mysql-python
и поменять кодировку базы данных:
$ DB=DB_NAME; echo "ALTER DATABASE $DB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci" | mysql -hDB_HOST -u$DB -pDB_PASSWORD
1. Создаем проект под именем demo_trac
:
$ trac-admin ~/trac/demo_trac initenv
Для базы данных MySQL строка подключения будет выглядить так:
mysql://DB_NAME:DB_PASSWORD@DB_HOST:3306/DB_NAME
Все настройки проекта оставляем по умолчанию, их потом можно будет изменить в файле trac.ini
Настройка FastCGI диспетчера и файла .htaccess
1. Переходим в каталог ~/http и делаем настройку FastCGI диспетчера и правил редиректа mod_rewrite:
Файл index.fcgi
$ cat > ~/http/index.fcgi <<END #!/usr/bin/${PYTHON_VERSION} -OO 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_VERSION}/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() END
Для того, чтобы у нас заработала авторизация, обязательно скопируйте файл index.fcgi
в файл admin.fcgi
:
$ cd ~/http && cp index.fcgi admin.fcgi
и даем права доступа на исполнение:
$ cd ~/http && chmod 755 *.fcgi
2. Файл .htaccess
(Секция Files не нужна, если вы хотите использовать более продвинутую (и удобную) авторизацию из плагинов (см.Официальные плагины))
$ cat > ~/http/.htaccess <<END 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/$(whoami)/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 END
3. Для работы статики создаем симлинки:
$ cd ~/http/chrome && ln -sf ~/python/lib64/${PYTHON_VERSION}/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
- 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 с большим количеством плагинов и модулей.