Trac - быстрый старт
Материал из 1GbWiki.
Версия 12:08, 23 ноября 2009 (править) Renton (Обсуждение | вклад) (→Подготовка окружения) ← К предыдущему изменению |
Текущая версия (17:12, 28 августа 2013) (править) (отменить) Renton (Обсуждение | вклад) (→Установка компонентов) |
||
(43 промежуточные версии не показаны) | |||
Строка 1: | Строка 1: | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <table cellspacing="0"> | ||
+ | <tr style="background: #F7D9D9"> | ||
+ | <td width="850px" style="vertical-align:top; border-top: 1px solid #D63838; border-left: 1px solid #D63838; border-bottom: 1px solid #D63838; border-right: 1px solid #D63838; padding: 1em;"> | ||
+ | <span style="font-size: 16px; font-weight: bold;">Данная статья предназначена для технических специалистов.</span> | ||
+ | <p>Вы должны знать основы программирования, уметь пользоваться консольными программами и официальной документацией от разработчиков.</p> | ||
+ | |||
+ | В связи с тем, что на сервере могут обновиться версии программ, измениться конфигурация приложений, документация в статье может не соответствовать действительности, поэтому вы должны быть готовы разобраться с возможными проблемами <b>самостоятельно</b> или с помощью специалистов из платной поддержки http://1gbsup.ru/paidsu/, обычная поддержка хостинга <b>не оказывает</b> консультации по установке и отладке скриптов. | ||
+ | </td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | <br /> | ||
+ | <br /> | ||
== Общие сведения == | == Общие сведения == | ||
- | '''Trac''' - бесплатное программное обеспечение написанное на языке [http://www.python.org/ Python], представляющие из себя прекрасный | + | '''Trac''' - бесплатное программное обеспечение написанное на языке [http://www.python.org/ Python], представляющие из себя прекрасный инструмент для автоматизированного управления проектами и системой отслеживания ошибок (bug tracker). Имеет простой wiki-подобный web-интерфейс. |
- | На хостинге [http://www.1gb.ru 1Gb.ru] trac можно запустить в режиме <code>UNIX/Apache/FastCGI</code>, для этого убедитесь в разделе личного кабинета <code>/Управление сайтами и серверами/</code> | + | На хостинге [http://www.1gb.ru 1Gb.ru] trac можно запустить в режиме <code>UNIX/Apache/FastCGI</code>, для этого убедитесь, что в разделе личного кабинета <code>/Управление сайтами и серверами/</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" выполните такую команду: | |
- | + | $ mkdir -p ~/src ~/python/bin ~/python/lib64/${PYTHON_VERSION}/site-packages ~/trac ~/svn ~/http/chrome | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | mkdir -p ~/src ~/python/lib64/ | + | |
- | + | ||
- | + | ||
== Установка компонентов == | == Установка компонентов == | ||
- | + | '''1.''' С сайта http://pypi.python.org/pypi/setuptools берем <code>setuptools</code> соответствующий нашей версии python. Либо скачиваем нужную версию следующей командой: | |
- | $ cd ~/src && | + | |
- | | + | $ cd ~/src && <nowiki>lynx -source "https://pypi.python.org/pypi/setuptools/0.6c11" \ |
+ | | 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)}"</nowiki> | ||
+ | и устанавливаем: | ||
+ | $ /bin/bash ./setuptools*.egg | ||
- | + | '''2.''' Устанавливаем модуль flup, для работы Trac в FastCGI режиме: | |
$ easy_install flup | $ easy_install flup | ||
- | + | если установка заканчивается так: | |
- | | + | error: None |
- | + | то устанавливаем flup по прямой ссылке: | |
- | $ easy_install http:// | + | $ easy_install <nowiki>"http://pypi.python.org/packages/source/f/flup/flup-1.0.2.tar.gz#md5=24dad7edc5ada31dddd49456ee8d5254"</nowiki> |
+ | '''3.''' Ставим trac: | ||
+ | $ easy_install -Z trac | ||
== Настройка trac == | == Настройка trac == | ||
=== Создание проекта === | === Создание проекта === | ||
- | + | По умолчанию Trac использует базу SQLite, если планируете использовать базу данных MySQL, надо установить модуль mysql-python: | |
+ | $ easy_install mysql-python | ||
+ | и поменять кодировку базы данных: | ||
+ | $ DB='''DB_NAME'''; echo "ALTER DATABASE $DB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci" | mysql -h'''DB_HOST''' -u$DB -p'''DB_PASSWORD''' | ||
+ | |||
+ | '''1.''' Создаем проект под именем <code>demo_trac</code>: | ||
$ trac-admin ~/trac/demo_trac initenv | $ trac-admin ~/trac/demo_trac initenv | ||
- | + | Для базы данных MySQL строка подключения будет выглядить так: | |
- | mysql:// | + | mysql://'''DB_NAME''':'''DB_PASSWORD'''@'''DB_HOST''':3306/'''DB_NAME''' |
- | + | Все настройки проекта оставляем по умолчанию, их потом можно будет изменить в файле <code>trac.ini</code> | |
=== Настройка 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} |
import sys, os, site | import sys, os, site | ||
# 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) | ||
# Add a custom trac env path. | # Add a custom trac env path. | ||
- | MY_TRAC_ENV_PATH = os.path.abspath (os.path.join (os.path.dirname (os.path.abspath (__file__)), \ | + | MY_TRAC_ENV_PATH = os.path.abspath (os.path.join (os.path.dirname (os.path.abspath (__file__)), \\ |
'../trac/'''demo_trac'''')) | '../trac/'''demo_trac'''')) | ||
Строка 71: | Строка 80: | ||
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>: | ||
$ cd ~/http && cp index.fcgi admin.fcgi | $ cd ~/http && cp index.fcgi admin.fcgi | ||
+ | и даем права доступа на исполнение: | ||
+ | $ cd ~/http && chmod 755 *.fcgi | ||
- | Файл <code>.htaccess</code> | + | '''2.''' Файл <code>.htaccess</code> (секция Files не нужна, если вы хотите использовать более продвинутую (и удобную) авторизацию из плагинов (см.[http://trac.edgewall.org/wiki/PluginList Официальные плагины])) |
+ | $ cat > ~/http/.htaccess <<END | ||
DirectoryIndex index.fcgi | DirectoryIndex index.fcgi | ||
Строка 82: | Строка 95: | ||
AddHandler fcgid-script .fcgi | AddHandler fcgid-script .fcgi | ||
- | RewriteRule ^(index.fcgi/chrome/site/)(.*)$ ./chrome/site/$2 | + | RewriteEngine On |
+ | 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 | ||
Строка 96: | Строка 110: | ||
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.''' Копируем статический контент в свой проект: | ||
+ | $ trac-admin ~/trac/demo_trac deploy ~/trac/demo_trac/ | ||
- | + | '''4.''' Чтобы статические документы отдавались сразу веб-сервером, а не обрабатывались FastCGI приложением, делаем симлинки: | |
- | $ cd ~/http && ln - | + | $ cd ~/http/chrome && ln -sfv ~/trac/demo_trac/htdocs/common |
+ | $ cd ~/http/chrome && ln -sfv ~/trac/demo_trac/htdocs/site | ||
=== Добавления пользователя admin и настройка авторизации === | === Добавления пользователя admin и настройка авторизации === | ||
Строка 104: | Строка 123: | ||
Здесь важно понимать, что при использовании связки SSH-SVN-Trac настройка авторизации происходит для каждого компонента в отдельности, т.е. один пользователь может работать только по SSH (с репозиторием SVN), другой по протоколу SVN, третий только с интерфейсом Trac, поэтому будьте внимательны, если вы хотите чтобы один и тот же пользователь работал со всеми интерфейсами. | Здесь важно понимать, что при использовании связки SSH-SVN-Trac настройка авторизации происходит для каждого компонента в отдельности, т.е. один пользователь может работать только по SSH (с репозиторием SVN), другой по протоколу SVN, третий только с интерфейсом Trac, поэтому будьте внимательны, если вы хотите чтобы один и тот же пользователь работал со всеми интерфейсами. | ||
- | + | '''1.''' Добавляем администратора в trac: | |
$ trac-admin ~/trac/demo_trac | $ trac-admin ~/trac/demo_trac | ||
/trac/demo_trac]> permission add любое_имя_пользователя TRAC_ADMIN | /trac/demo_trac]> permission add любое_имя_пользователя TRAC_ADMIN | ||
- | + | '''2.''' Назначаем пароль: | |
$ cd ~/trac/demo_trac/conf/ && /usr/local/sbin/htpasswd -c trac.htpasswd любое_имя_пользователя | $ cd ~/trac/demo_trac/conf/ && /usr/local/sbin/htpasswd -c trac.htpasswd любое_имя_пользователя | ||
- | таким образом данный пользователь будет являться администратором для системы Trac, например, он сможет через web-интерфейс Trac'а добавлять новых пользователей, | + | таким образом данный пользователь будет являться администратором для системы Trac, например, он сможет через web-интерфейс Trac'а добавлять новых пользователей, изменять настройки Trac и т.п. |
---- | ---- | ||
Строка 118: | Строка 137: | ||
О добавлении пользователей SVN, SSH речь пойдет ниже. | О добавлении пользователей SVN, SSH речь пойдет ниже. | ||
- | === | + | === Патч для создания правильных URI === |
- | + | '''1.''' Для создания "красивых" URI патчим файл <code>~/python/lib/python'''ВАША_ВЕРСИЯ'''/site-packages/Trac-0.11.5-py2.5.egg/trac/web/api.py</code> (ваш путь может немного отличаться). | |
- | + | ||
- | + | ||
- | + | * '''для версии Trac 1.0'''<br /> | |
+ | Не требуется. | ||
+ | |||
+ | * '''для версии Trac 0.11''' | ||
- | === Патч для создания правильных 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: self.environ.get('SCRIPT_NAME', ), |
меняем на: | меняем на: | ||
- | base_path = property(fget=lambda self: os.path.dirname(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', '')) | |
- | + | ||
- | + | '''2.''' Если вы планируете использовать 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 === | === Интеграция с trac === | ||
* В файле <code>~/trac/название_проекта/conf/trac.ini</code> указываем путь к нашему репозиторию: | * В файле <code>~/trac/название_проекта/conf/trac.ini</code> указываем путь к нашему репозиторию: | ||
repository_dir = /home/virtwww/имя_пользователя/svn/название_репозитория | repository_dir = /home/virtwww/имя_пользователя/svn/название_репозитория | ||
- | |||
- | === Настройка клиентов, тестирование подключений === | ||
- | ==== Протокол SVN ==== | ||
- | Работа с репозиторием по протоколу SVN является наиболее быстрой и удобной, прекрасна реализована как в Windows, так и в UNIX системах. | ||
- | * UNIX, работа через консольный клиент <code>svn</code>: | ||
- | svn --username=имя_пользователя list svn://адрес_вашего_сайта:SVN_порт/название_репозитория | ||
- | |||
- | '''имя_пользователя''' - это имя из файла ~/svn/название_репозитория/conf/passwd<br /> | ||
- | '''адрес_вашего_сайта''' - сайт, на котором вы создали SVN-даемон;<br /> | ||
- | '''SVN_порт''' - порт, на котором работает SVN-даемон, указан в разделе кабинета /Хостинг HTTP служб/<br /> | ||
- | '''название_репозитория''' - имя, которое вы задавали в команде <code>svnadmin create</code><br /> | ||
- | |||
- | * Windows TortoiseSVN | ||
- | Пример ввода URL в Repository Browser: | ||
- | [[Изображение:Repo_browser_url_1.jpg|500px|thumb|left|Ввод URL]]<br clear="both" /> | ||
- | |||
- | Обзор репозитория: | ||
- | [[Изображение:Repo_browser.jpg|500px|thumb|left|Рабочее окно Repo-browser]]<br clear="both" /> | ||
- | |||
- | ==== Протокол SSH ==== | ||
- | * Работа из UNIX через консольный клиент <code>svn</code>. | ||
- | Прежде всего, у себя на локальной машине нужно сделать настройку svn клиента для работы по SSH-туннелю через специальный порт. Для этого в файле <code>~/.subversion/config</code> в секции <code>[tunnels]</code> добавьте строку: | ||
- | sshtunnel = ssh -p 2222 | ||
- | |||
- | Вообще тут возможны два варианта работы: авторизация по паролю, и авторизацию по ключу. | ||
- | |||
- | ''Первый способ'' безопасен, но требует постоянного ввода пароля при доступе к SVN-репозиторию, при этом не нужно делать никаких дополнительных настроек как на сервере, так и на клиенте. Работает так: | ||
- | $ svn list svn+sshtunnel://имя_пользователя@адрес_вашего_сайта/название_репозиторя | ||
- | Password: | ||
- | команда попросит вас ввести пароль, который вы указывали при создании дополнительного SSH/SVN пользователя в разделе кабинета /Дополнительные FTP логины/. | ||
- | |||
- | ''Второй способ'' заключается в настройке беспарольного доступа на основе авторизации по ключам. В Интернете масса информации по этому вопросу, поэтому мы остановимся только ньюансах. | ||
- | |||
- | '''Важное замечание.''' После того, как вы разместили публичный ключ на сервере в файл <code>~/.ssh/authorized_keys</code> '''обязательно''' добавьте в начало строки (до слов <code>ssh-rsa</code> или <code>ssh-dsa</code>) с ключем следующий код: | ||
- | command="[ ${USER} != имя_пользователя ] && exit" ssh-rsa AAAAB3N ... == user@hostname | ||
- | |||
- | '''имя_пользователя''' - имя пользователя из раздела кабинета /Дополнительные FTP логины/, соответственно это же имя должен использовать тот человек, чей ключ вы разместили на сервере. | ||
- | |||
- | В этом случае команда: | ||
- | $ svn list svn+sshtunnel://имя_пользователя@адрес_вашего_сайта/название_репозиторя | ||
- | не будет спрашивать про пароль. | ||
- | |||
- | ==== Туннель SSH ==== | ||
- | |||
- | Это наиболее быстрый и безопасный способ работы с репозиторием. Работа идет по протоколу SVN, но не с удаленным сервером, а с локальной машиной (портом), на которую проброшен по защищенному SSH-каналу порт с удаленной машины. | ||
- | |||
- | * Для UNIX систем достаточно сделать так: | ||
- | $ ssh -f -C -N -p 2222 -L 3690:адрес_вашего_сайта:SVN_порт имя_пользователя@адрес_вашего_сайта | ||
- | |||
- | '''имя_пользователя''' - это имя из файла <code>~/svn/название_репозитория/conf/passwd</code><br /> | ||
- | '''адрес_вашего_сайта''' - сайт, на котором вы создали SVN-даемон;<br /> | ||
- | '''SVN_порт''' - порт, на котором работает SVN-даемон, указан в разделе кабинета /Хостинг HTTP служб/<br /> | ||
- | |||
- | Тогда работать с SVN можно уже так: | ||
- | $ svn --username=имя_пользователя list svn://localhost/название_репозитория | ||
- | |||
- | * Для Windows: | ||
- | Основные настройки для доступа по SSH на сервер через PuTTY см. в статье [[Юникс шелл]], здесь будет только отмечена секция настройки туннелинга. | ||
- | [[Изображение:Putty_tunnel_svn_add_1.jpg|350px|thumb|left|Добавление опция туннеля]]<br clear="both" /> | ||
- | [[Изображение:Putty_tunnel_svn_add_done.jpg|350px|thumb|left|Окно конфигурирования туннелинга после добавления опций]]<br clear="both" /> | ||
- | |||
- | После соединения с сервером по SSH в TortoiseSVN можно использовать такие URL: | ||
- | |||
- | svn://localhost/название_репозитория | ||
== Демо trac == | == Демо trac == | ||
- | * http://test- | + | * http://test-l25-trac.1gb.ru/ - демо версия trac на хостинге 1Gb.ru |
- | + | ||
- | + | ||
== См. также == | == См. также == | ||
* [[Юникс шелл]] | * [[Юникс шелл]] | ||
+ | * [[SVN - быстрый старт (профессиональная версия)]] | ||
== Ссылки == | == Ссылки == | ||
Строка 250: | Строка 182: | ||
* [http://trac.edgewall.org/wiki/TranslationRu/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 с большим количеством плагинов и модулей. | * [http://www.trac-hacks.org/ Trac-Hacks] (англ.) - популярный ресурс по Trac с большим количеством плагинов и модулей. | ||
- | * [http://ru.wikipedia.org/wiki/Subversion Subversion] (рус.) - общая информация по Subversion на сайте wikipedia. | ||
- | * [http://svnbook.red-bean.com/index.ru.html Управление версиями в Subversion] (рус.) - официальная документация по Subversion. | ||
- | * [http://tortoisesvn.net/docs/release/TortoiseSVN_ru/ TortoiseSVN] (рус.) - документация по TortoiseSVN. | ||
[[Категория:Программирование]] | [[Категория:Программирование]] | ||
[[Категория:Python]] | [[Категория:Python]] |
Текущая версия
Данная статья предназначена для технических специалистов. Вы должны знать основы программирования, уметь пользоваться консольными программами и официальной документацией от разработчиков. В связи с тем, что на сервере могут обновиться версии программ, измениться конфигурация приложений, документация в статье может не соответствовать действительности, поэтому вы должны быть готовы разобраться с возможными проблемами самостоятельно или с помощью специалистов из платной поддержки http://1gbsup.ru/paidsu/, обычная поддержка хостинга не оказывает консультации по установке и отладке скриптов. |
Содержание |
[править] Общие сведения
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 "https://pypi.python.org/pypi/setuptools/0.6c11" \ | 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
[править] Создание проекта
По умолчанию Trac использует базу SQLite, если планируете использовать базу данных 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} 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. Копируем статический контент в свой проект:
$ trac-admin ~/trac/demo_trac deploy ~/trac/demo_trac/
4. Чтобы статические документы отдавались сразу веб-сервером, а не обрабатывались FastCGI приложением, делаем симлинки:
$ cd ~/http/chrome && ln -sfv ~/trac/demo_trac/htdocs/common $ cd ~/http/chrome && ln -sfv ~/trac/demo_trac/htdocs/site
[править] Добавления пользователя admin и настройка авторизации
Здесь важно понимать, что при использовании связки SSH-SVN-Trac настройка авторизации происходит для каждого компонента в отдельности, т.е. один пользователь может работать только по SSH (с репозиторием SVN), другой по протоколу SVN, третий только с интерфейсом Trac, поэтому будьте внимательны, если вы хотите чтобы один и тот же пользователь работал со всеми интерфейсами.
1. Добавляем администратора в trac:
$ trac-admin ~/trac/demo_trac /trac/demo_trac]> permission add любое_имя_пользователя TRAC_ADMIN
2. Назначаем пароль:
$ cd ~/trac/demo_trac/conf/ && /usr/local/sbin/htpasswd -c trac.htpasswd любое_имя_пользователя
таким образом данный пользователь будет являться администратором для системы Trac, например, он сможет через web-интерфейс Trac'а добавлять новых пользователей, изменять настройки Trac и т.п.
Примечание. Если вы хотите добавить еще одного пользователя, то опцию -c
указывать не нужно.
О добавлении пользователей SVN, SSH речь пойдет ниже.
[править] Патч для создания правильных URI
1. Для создания "красивых" URI патчим файл ~/python/lib/pythonВАША_ВЕРСИЯ/site-packages/Trac-0.11.5-py2.5.egg/trac/web/api.py
(ваш путь может немного отличаться).
- для версии Trac 1.0
Не требуется.
- для версии 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', ))
2. Если вы планируете использовать 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-l25-trac.1gb.ru/ - демо версия trac на хостинге 1Gb.ru
[править] См. также
[править] Ссылки
- The Trac User and Administration Guide (англ.) - документация по Trac на сайте разработчиков.
- The Trac User and Administration Guide (рус.) - документация по Trac на сайте разработчиков (частичный перевод).
- Trac-Hacks (англ.) - популярный ресурс по Trac с большим количеством плагинов и модулей.