Trac + Subversion @ Ubuntu: Revisited
Задача
Установить на только что инсталлированный Ubuntu последнюю версию Trac, создать репозитории для нескольких проектов и настроить окружение соответственно. Структура проектов должна быть полностью корректной, установка максимально быстрой при минимальном количестве пакетов. Авторизация в репозитории и окружения Trac может быть общей, но позволяющей индивидуальную настройку для каждого проекта. Также, установка должна быть максимально независима от версий.
Дано
- Ubuntu 7.04 Feisty Fawn Herd
- Trac 0.11b2
- Subversion 1.4.3
- Два пользователя:
user1иuser2 - Два проекта:
Some ProjectиAnother Project - Требуется доступ в Trac и репозиторий по адресам
<host>/localProjectsи<host>/svnсоотвественно
Решение. Пункт 1. Установка базовых дистрибутивов, доступных в пакетах.
Для начала можно установить дистрибутивы, доступные в репозиториях Ubuntu в поддерживаемых версиях – на данный момент это Apache 2.2.3, Python 2.5.1 (необходим для работы trac), Subversion 1.4.3 и g++ 4.1.2 (необходим для сборки sqlite). Установим, предварительно обновив данные о пакетах:
sudo apt-get update
sudo apt-get install python
sudo apt-get install apache2
sudo apt-get install subversion
sudo apt-get install g++
Решение. Пункт 2. Установка sqlite.
Теперь необходимо собрать sqlite (легковесная база данных, в котрой будут хранится внутренние данные trac) — версия, находящая в репозитории (3.3.13) на данный момент меньше требуемой (3.3.4). Создадим каталог для временного хранения дистрибутивов и перейдём в него:
mkdir ~/distr
cd ~/distr
Скачаем последнюю версию sqlite и установим:
wget http://www.sqlite.org/sqlite-3.5.6.tar.gz
tar xvfz ./sqlite-3.5.6.tar.gz
mv ./sqlite-3.5.6 ./sqlite # чтобы следовать букве README-руководства
mkdir ./bld # временный каталог для скомилированных файлов
cd ./bld
../sqlite/configure
make
sudo make install
cd ..
rm -r ./bld
Решение. Пункт 3. Установка trac-related пакетов через easy_install.
Для Python существует утилита, облегчающая установку python-пакетов, называемых также яйцами (они имеют расширение *.egg). Установим её:
wget http://peak.telecommunity.com/dist/ez_setup.py
sudo python ./ez_setup.py
И засчёт неё установим последние версии Pygments (0.9) (инструмент для подсветки программного кода на Python), Genshi (0.4.4) (механизм шаблонов от создателей trac) и собственно самого trac (0.11b2):
sudo easy_install Pygments
sudo easy_install Genshi
sudo easy_install Trac
Решение. Пункт 4. Создание репозиториев.
Создадим репозитории для наших проектов и сделаем первые коммиты, содержащие отправные точки для их структур. Все репозитории будут находиться в каталоге /var/svn, полностью доступном для сервера, каждый в своём подкаталоге — такой метод удобен при наличии нескольких проектов и это будет заметно в следующем пункте, на этапе настройки авторизации.
sudo mkdir /var/svn
sudo mkdir /var/svn/someProject
sudo mkdir /var/svn/anotherProject
cd /tmp
sudo rm -rfR * # удалить все обычные файлы
sudo rm -rfR .* # удалить все скрытые/системные файлы
mkdir /tmp/someProject
mkdir /tmp/someProject/trunk
mkdir /tmp/someProject/tags
mkdir /tmp/someProject/branches
mkdir /tmp/anotherProject
mkdir /tmp/anotherProject/trunk
mkdir /tmp/anotherProject/tags
mkdir /tmp/anotherProject/branches
sudo svnadmin create /var/svn/someProject
sudo svn import ./someProject file:///var/svn/someProject
-m "Initial import"
sudo svnadmin create /var/svn/anotherProject
sudo svn import ./anotherProject file:///var/svn/anotherProject
-m "Initinal import"
sudo chown -R www-data:www-data /var/svn
Решение. Пункт 5. Связывание apache и subversion.
Необходимо настроить доступ извне для созданных репозиториев. Для этого нужно установить модуль dav_svn для apache2 и заодно, раз мы работаем с subversion, установим связку subversion c Python, для корректной работы trac с репозиториями:
sudo apt-get install libapache2-svn
sudo apt-get install python-subversion
Теперь нужно настроить установленный модуль (при установки он автоматически включается для apache, если нет — используйте a2enmod dav_svn по завершению настройки):
sudo vi /etc/apache2/mods-available/dav_svn.conf
Ниже приведено точное содержимое конфигурационного файла. При обращении на путь <host>/svn/... модуль авторизации apache будет обращаться к файлу /etc/apache2/dav_svn.passwd за списком пользователей, а затем давать права на доступ к соответствующему проекту из файла /etc/apache2/dav_svn.authz. Обратите также внимание на использование SVNParentPath вместо SVNPath — таким образом subversion-модуль поймёт, что мы используем мультипроектную структуру и будет обрабатывать путь не как один общий репозиторий, а как несколько внутренних:
<Location /svn>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
Require valid-user
</Location>
Создадим соответствующих пользователей в файлах авторизации. Используйте пароли попроще для проверки и не забудьте их потом поменять:
sudo htpasswd -c /etc/apache2/dav_svn.passwd user1
sudo htpasswd /etc/apache2/dav_svn.passwd user2
Создадим файл аутентификации:
sudo vi /etc/apache2/dav_svn.authz
В открытым файле опишем права доступа (на чтение — «r» и на запись — «w«) пользователей в соответствующие репозитории:
[/]
user1=r
user2=r
[/someProject]
user1=rw
user2=r
[/anotherProject]
user1=r
user2=rw
Решение. Пункт 6. Создание окружений trac.
Создадим каталог, в котором будут находиться окружения для соответствующих проектов.
sudo mkdir /var/trac
cd /var/trac
Теперь создадим для каждого из них, по очереди, окружение:
sudo trac-admin someProject initenv
sudo trac-admin anotherProject initenv
Имена проектов остаются на ваше усмотрение, тип репозиториев — по умолчанию svn (просто нажать Enter), путь к базе общий, по умолчанию (sqlite:db/trac.db, аналогично), пути к репозиториям: /var/svn/someProject и /var/svn/anotherProject соответственно.
Дадим права apache пользоваться этим каталогом.
sudo chown -R www-data:www-data /var/trac
Решение. Пункт 7. Связывание apache и trac.
Есть несколько вариантов такого связывания, мы остановимся на быстром, но надёжном способе — через mod_python (описания способов на сайте trac). Для этого модуль нужно установить (также, если он не включился после установки, по завершению настройки используйте a2enmod mod_python):
sudo apt-get install libapache2-mod-python
Настроим доступ к окружениям trac:
sudo vim /etc/apache2/sites-available/trac
Эта настройка специфична для использования mod_python (руководство на сайте trac, см. описания, если необходимы другие способы настройки). Обработчиком обращений по адресу <host>/localProjects выступит модуль, он будет рассматривать каталог /var/trac/ как корень нескольких проектов и содаст страницу с их списком (редактируемый шаблон можно найти внутри исходников trac), аналогично принципам SVNParentPath, URI передаётся в код trac. Запросы на вход будут обрабатываться по пользователям из того же passwd файла, из которого берёт их список читает subversion, а их права на действия в окружениях trac раздаются через trac-admin или в GUI-версии TracAdmin, доступной для аминистраторов окружений (будьте внимательны, пользователи создаваемые через интерфейс также добавляются в этот файл и доступны к использованию для настройки авторизации в subversion через authz-файл (по умолчанию у них нет никаких прав)) .
<Location /localProjects>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/trac
PythonOption TracUriRoot /localProjects
</Location>
<LocationMatch /localProjects/[^/]+/login>
AuthType Basic
AuthName "Local Projects"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</LocationMatch>
Теперь заменим сайт по умолчанию для apache на сайт trac:
sudo a2dissite default
sudo a2ensite trac
Дадим пользователям права администратов в окружениях trac, в соотвествии с правами на репозиторий, теперь у них, у каждого в своём проекте, будет веб-интерфейс для полной настройки trac.
sudo trac-admin someProject permission add user1 TRAC_ADMIN
sudo trac-admin anotherProject permission add user2 TRAC_ADMIN
Решение. Заключение.
Осталось перезагрузить сервер, (принудительная перезагрузка настроек: force-reload) и проверить адреса <host>/localProjects и <host>/svn/someProject и <host>/svn/anotherProject, попробовав авторизироваться разными пользователями.
sudo /etc/init.d/apache2 restart
Если при установке появились какие-либо проблемы и ничего не помогает, попробуйте ознакомиться с предыдущей статьёй (но она несколько более сумбурна и менее структурирована) или опишите проблему(-мы) в комментариях — постараюсь реагировать быстро.
Примечание A. О добавлении проектов.
Добавление проектов в будущем требует лишь нескольких шагов — создание базовой структуры первым коммитом в какой-либо подкаталог /var/svn, опциональное добавление новых пользователей в htpasswd-файл, настройка прав доступа в authz-файле, создание окружения trac в соответствующем подкталоге /var/trac через trac initenv, опциональная выдача trac-прав новым пользователям и проверка, что apache имеет доступ к созданным каталогам.



JackyFox сказал,
Пт, 21 Мар 2008 в 1442.54
Для меня пока все вышеизложенные манипуляции не постижимы и могут быть выполнены только в режиме «copy-paste», следовательно, респект автору.
Ну и когда же все это будет работать и доступно? :)
Trac + Subversion + Ubuntu - интересная забава на день « шаманские бредни сказал,
Сб, 22 Мар 2008 в 1844.04
[...] Upd.: Более структурированное и последовательное (правда менее повествовательное) руководство для Ubuntu Feisty находится здесь [...]
alexey сказал,
Вс, 18 Май 2008 в 1655.50
А почему не sudo apt-get install trac?
И зачем ставить sqlite из исходников, если можно из репозитариев?
shaman.sir сказал,
Ср, 21 Май 2008 в 1335.46
на тот момент в репозитариях не было последней версии trac’а и соответствующей необходимой версии sqlite — в статье об этом сказано.
да и некоторые вещи иногда полезнее делать тщательно контролируя процесс ;).
alex сказал,
Вт, 08 Июл 2008 в 1439.08
не работает эта статья
shaman.sir сказал,
Ср, 09 Июл 2008 в 1626.46
смешное замечание – она проверена несколько раз. потрудитесь пояснить, где именно, если можно.
MaroonOrg сказал,
Чт, 10 Июл 2008 в 1531.09
После выполнения всех вышеперечисленных действий (http://localhost/localProjects):
—
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
—-
Система: kubuntu
Что делать? о_О
shaman.sir сказал,
Чт, 10 Июл 2008 в 1552.26
вышлите логи и изменённые файлы конфигурации, будем разбираться
/etc/apache2/sites-available/trac
/etc/apache2/dav_svn.authz
проверьте права на файлах и версию апача.
MaroonOrg сказал,
Чт, 10 Июл 2008 в 1603.30
Выслал на почту
MaroonOrg сказал,
Чт, 10 Июл 2008 в 2342.45
Разобрался, все работает.
Путем соединения данной статьи и оф. руководства (http://trac.edgewall.org/wiki/0.11/TracOnUbuntu) был получен желаемый результат и даже немного больше =)
shaman.sir сказал,
Пт, 11 Июл 2008 в 1212.36
Замечательно :).
MaroonOrg сказал,
Сб, 12 Июл 2008 в 1657.19
Написал статью о том, как ставил систему используя оф. руководство и данную статью. Автор, если считаешь что ссылку надо удалить – удаляй, но руководство может помочь. Оставил ссылку на данную статью
http://maroonorg.wikidot.com/trac
shaman.sir сказал,
Вс, 13 Июл 2008 в 1134.49
Да нет, почему – ссылке здесь место. Если необходимая пользователю конфигурация ближе к вашей – он обратится к вашей статье.
Установка и настройка Subversion | obout.ru сказал,
Вт, 26 Авг 2008 в 1025.17
[...] Trac + Subversion @ Ubuntu: Revisited [...]
Антон сказал,
Ср, 24 Сен 2008 в 2039.39
Огромное спасибо, вот такие и должны быть посты в блогах. Большое спасибо :)
virens сказал,
Вт, 07 Окт 2008 в 1421.19
Большое спасибо за статью, очень хорошо описана установка trac – сейчас всё поставил и связал это дело с subversion. Класс!
r3code сказал,
Вс, 12 Окт 2008 в 0232.10
Не могу туту большой пост отправить, потому отписал у себя в жж замечания по поводу твоей статьи. http://r3code.livejournal.com/77730.html?view=128418#t128418
Посмотри я настраивал тоже самое под Windows, может тоже замечания будут или ошибку заметишь. Читаем тут Apache, Svn, Trac, Windows http://r3code.livejournal.com/77730.html
shaman.sir сказал,
Пн, 13 Окт 2008 в 1328.06
Спасибо за отзывы комментаторам. r3code, спасибо за замечания – дельные, исправлю. По поводу поста: замечательный – подробный и с картинками :) – под винду всё это большой труд налаживать – я как-то раз делал, и решил что больше ни за что не буду :) – к чему придраться пока не обнаружил :) .
Отлично, что разных /хороших/ статей на эту тему становится больше.
riden сказал,
Вс, 19 Окт 2008 в 0401.47
Спасибо за статью, особенно за пункт 3!
r3code сказал,
Пн, 27 Окт 2008 в 1049.17
Кстати если интернет нормальный и не тупит, то Trac и под Windows нормально ставиться через easy_install ;)
shaman.sir сказал,
Вт, 18 Ноя 2008 в 1759.14
Вместо
sudo viлучше использоватьsudoedit.кaппИ сказал,
Сб, 22 Авг 2009 в 0752.44
Большое спасибо за информацию, почитал с интересом
a2 сказал,
Вт, 08 Сен 2009 в 0024.15
Привет!
Спасибо за нормальное руководство по установке!!!
Я тут две недели с бубном прыгал вокруг англоязычных руководств по apache, trac и т.д. и т.п. Парням с edgewall.org руки бы поотрывать за такое руководство.
Сделал все как здесь описано. Заработало.
Кстати, можно статью себе на сайт закопипастить? Ссылки на страницу автора и т.д. и т.п. сохраню. Просто дусаю собрать все мануалы по установке того сего, чтобы после переустановки linux-а не приходилось опять весь инет перелопачивать….
Roma сказал,
Сб, 17 Окт 2009 в 0222.32
а зачем в пункте 4 чистить каталог tmp?
shaman.sir сказал,
Сб, 17 Окт 2009 в 1141.43
Да, a2, выложить конечно можете.
Roma, на всякий случай, чтобы не закоммитить/зачекаутить/скопировать ничего ненужного. И не путаться в структуре, чтобы не мешали на глазах лишние каталоги. А так необязательно, конечно.
Можно было создать специальный каталог и т.п., но возможно это была бы уже паранойя.
Иван Иванов сказал,
Вс, 18 Окт 2009 в 1754.42
Вот это да… Мне кажется, об этом пишут уже на каждом заборе :)
стоимость подготовительных курсов сказал,
Ср, 02 Дек 2009 в 0606.10
Идеально пишете. Вот решил рискнуть и поделится с вами также тем что интересует лично меня, а именно бесплатное обучение в чехии. Думаю посетителям вашего блога эта ссылка будет полезна…