@ Карта сайта News Автора!

Bog BOS: Trac - система управления заданиями

Последние изменения:
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL
2024.10.22: sysadmin: Монтирование файловых систем: bind, shared и OverlayFS

Последнее изменение файла: 2018.01.20
Скопировано с www.bog.pp.ru: 2024.11.21

Bog BOS: Trac - система управления заданиями

Trac - система с открытым кодом с использованием web-интерфейса, состоящая из модулей управления заданиями (task management), просмотра репозиториев и организации взаимодействия. Расширения позволяют превратить её в простенькую систему управления проектами (project management).

Следует учитывать, что система Trac разрабатывалась как развитие системы отслеживания ошибок bugzilla и представляет собой рабочий инструмент (управление процессом), используемый всеми участниками проекта для учёта ошибок, проблем и заданий, в отличие от системы управления проектами, которая представляет высокоуровневый взгляд на планы и текущее состояние проекта и используется администратором проекта при общении с заказчиком (управление результатом). Заказчику не нужна информация о "внутренней кухне" разработчиков из системы управления заданиями, а для разработчиков информация из системы управления проектами недостаточна, они не могут оценить трудозатраты и зависимости можду "большими" задачами из системы управления проектами. При этом системы управления задачами и проектами могут быть тесно связаны. Переводом с языка заказчика на язык разработчиков и занимается администратор проекта (ПМ, project manager), который разбивает "большую" задачу из системы управления проектами на сотню заданий для системы управления заданиями, назначает ответственных, контролирует состояние работ, делает оценку завершённости и вносит её в систему управления проектами.

Разрабатывается компанией Edgewall Software на python, до версии 0.9 под лицензией GPL, после - под лицензией BSD с модификациями.

Текущая версия - 0.12.2. Версия 0.13 предполагалась к декабрю 2010 (требуется python 2.5 или 2.6, которых в RHEL5 нет), при этом поддержка многих проектов отложена до версии 0.14.

Архитектура

Организация взаимодействия сотрудников обеспечивается встроенным движком wiki. Управление задачами осуществляется с помощью средств слежения за событиями (issue tracking), в которой заявки (ticket, карточки, требования) соотносятся с сообщениями об ошибках, запросами на изменение и задачами поддержки (список типов можно расширять). Каждой заявке назначается ответственный, который должен решить её сам или спихнуть на другого. Заявка содержит набор полей (описание, компонент, версия, веха, состояние, приоритет, серьёзность), которые можно редактировать, история изменений сохраняется. Версия - текущая версия проекта, к которой относится заявка. Веха (milestone, этап разработки) - будущая версия проекта, к которой заявку требуется удовлетворить. Диаграмму переходов состояний заявки (workflow) можно задать с версии 0.11. Модуль работы со стратегическим планом (roadmap, план работ) позволяет задать список вех с указанием назначенных дат выпуска, привязывать заявки к вехам и отслеживать готовность вех по проценту выполнения соответствующих заявок. Trac интегрируется с системой контроля версий subversion (только локальный репозиторий), а с помощью дополнений - с bazaar, git, mercurial (hg), monotone, darcs, perforce; Включает версионный броузер (история, разности, статистика). Начиная с версии 0.12 окружение trac может быть привязано к нескольким репозиториям разного типа. Модуль отчётов (хронология, timeline) позволяет посмотреть историю активности работы над проектом (редактирование wiki, создание и закрытие заявок, изменения репозитория subversion, выпуски версий). Поиск по ключевым словам и строкам в wiki (без вложенных файлов), заявках (без вложенных файлов) и метаданных ревизий. Извещения по SMTP или RSS. Локализация с версии 0.12.

Trac реализована в виде веб-сервера Apache 2 с модулями dav и dav_svn, со скриптами на Python 2.4. Поставляется свой веб-сервер tracd. Для хранения вложений (например, изображений) wiki и заявок используется WebDAV. Требуется MySQL, SQLite или PostgreSQL и соответствующий интерфейс с python: MySqlDb (пакет MySQL-python), python-sqlite[2]). Для интерфейса с subversion используется интерфейс для python (входит в пакет subversion). Для работы с шаблонами используется ClearSilver (до версии 0.11) или Genshi (от версии 0.11, самодельная).

В RHEL 5 имеется пакет trac 0.10.5 и trac-* с дополнениями (для систем управления версиями: bazaar-plugin, git-plugin, mercurial-plugin, monotone-plugin; управление: iniadmin-plugin, webadmin-plugin (встроен в версии 0.11); пакеты с расширениями: peerreview-plugin, privateticketsplugin, spamfilter-plugin, ticketdelete-plugin, xmlrpc-plugin. Более свежая версия RHEL5 имеется на rpmforge (0.12.2).

Сервер trac обслуживает только 1 проект, обещали доработать в версии 0.13 (перенесли в 0.14): смена масштаба/фильтра (все заявки/заявки текущего проекта/заявки группы проектов/поддерево проектов) при поиске, работе с заявками, просмотре истории; общая wiki. Сейчас можно поставить несколько серверов Trac и делать ссылки между проектами с помощью InterTrac (нет общего поиска, общих отчётов и т.п.) или поместить несколько проектов в одном Trac сервере (невозможно сфокусировать внимание на одном проекте). Можно привязать проект к нескольким репозиториям или привязать несколько проектов к одному репозиторию (подветвям репозитория).

Подсветка синтаксиса реализована с помощью Pygments (пакет python-pygments.noarch, что позволяет задать стиль - набор цветов - в персональных настройках; verilog будет в 1.4), GNU Enscript (пакет enscript, включить расширение tracopt.mimeview.enscript.*) или SilverCity (?, включить расширение tracopt.mimeview.php.*).

В базовой системе нет иерархии и зависимостей между заявками, нет работы с дублированными заявками (есть вариант закрытия заявки - по дублированию, но нет поиска). Однако, сторонними разработчиками написано более 500 расширений, включая дополнительные поля, иерархию, подсчёт затрат времени, контроль бюджета, простенькое управление проектом и пр..

Аутентификация производится с помощью cookies, поэтому для доступа из командной строки необходимо сохранять и загружать cookies:

wget --save-cookies имя-файла http://имя:пароль@имя-хоста/trac/имя-окружения/login
wget --load-cookies имя-файла http://имя-хоста/trac/имя-окружения/...

Хранение данных

Относящиеся к проекту trac данные и файлы настройки хранятся в отдельном каталоге (environment, окружение). Требуются права на запись для веб-сервера (Apache или tracd). Также требуется доступ на чтение к репозиториям subversion (и на запись, если репозиторий в формате BDB). Создаётся командой initenv утилиты trac-admin.

Структура файлов:

В качестве СУБД могут использоваться:

Подсистема wiki

Подсистема wiki позволяет просматривать, создавать и редактировать страницы текстов: иерархия страниц, свой язык форматирования, предпросмотр, хранение истории и откат изменений, индекс по имени и дате изменения, поиск. В качестве языка форматирования используется подмножество Wiki Creole. Тот же язык форматирования используется при работе с заявками, комментариями с ревизиям, этапам работ и отчётам, что позволяет единообразным способом форматировать текст и обеспечивать межмодульные ссылки. Для создания страницы необходимо создать ссылку на неё (если имя страницы в формате CamelCase, то достаточно поискать его), перейти по этой ссылке и отредактировать содержимое. Страницы могут быть созданы из шаблонов, имена которых показываются в открывающемся списке (шаблон - любая страница, имя которой начинается с "PageTemplates/"). Ссылки на ещё не существующие страницы выделяются серым цветом и знаком вопроса (отключается ignore_missing_pages в секции wiki trac.ini). При переименовании страницы предлагается создать ссылку на старом месте. Удаление страницы и удаление последней версии откатить нельзя (сведения о странице исчезают даже из хронологии). Рекомендуется выбирать имена страниц в формате CamelCase (склеивается несколько слов с прописными первыми буквами, допускаются латинские и русские буквы, символ '/'), ссылки на такие страницы создаются автоматически при вставке имени в текст (split_page_names в секции wiki trac.ini позволяет автоматически вставлять пробелы; не работает). Имена страниц могут содержать пробелы (необходимо заключать в кавычки).

Язык форматирования (квадратные скобки в этой главе являются частью синтаксиса):

Типы ссылок (можно явно указать версию страницы, добавив "@номер-версии"; можно сделать ссылку внутрь страницы, добавив "#имя-якоря"; если имя объекта в ссылке содержит пробелы, то его необходимо заключить в кавычки или апострофы, кроме ссылок в форматах с двойными квадратными скобками):

Текст ссылки можно указать в строке поиска для быстрого перехода к нужному объекту.

Можно создавать свои схемы (префиксы, InterWiki) для ссылок. Описания схем создаются на странице InterMapTxt в блоке внутри тройных фигурных скобок после горизонтальной строки. Каждая строка содержит имя схемы, описание и комментарий (начинается с символа '#'). Описание схемы задаёт правило преобразования тела ссылки в URI. В простейшем случае тело ссылки приписывается к URI справа. Если в описании используются вызовы позиционных параметров ($1, $2 и т.д.), то тело ссылки делится по разделителю ':' на позиционные параметры и производится подстановка. Параметры также подставляются в комментарии и образуют текст ссылки.

Описания и синонимы окружений trac добавляются в trac.ini в секцию intertrac. После регистрации (список зарегистрированных окружений доступен на странице InterTrac) можно вставлять ссылки на объекты в этих окружениях, добавляя к началу ссылки префикс требуемого окружения trac и двоеточие. Ссылки на заявки можно сокращать до "#ИмяокруженияНомерзаявки", ссылки на ревизии - до "[ИмяокруженияНомерревизии]", ссылки на журнал - до "[Имяокружения от:до]".

Макросы позволяет расширять Trac своими функциями на python. Вызов макро оформляется в виде имени макро внутри двойных квадратных скобок, за которым могут быть указаны параметры внутри круглых скобок. Результат расширения макро в момент вызова подставляется в выходной текст. Макросы из комплекта поставки:

Макросы можно разработать самому (файл с функцией на python положить в каталог окружение/plugins; после копирования файла необходимо перезапустить HTTP сервер; фактически это специализированное расширение, так что необходимо отслеживать совместимость с версией Trac) или взять с Trac Hacks, примеры в разделе расширений.

Макросы, предназначенные для обработки альтернативных языков форматирования, называются wiki-процессорами. Результат работы процессора в момент вызова подставляется вместо вызова процессора по имени, перед именем строка "{{{#!", далее параметры в формате ключ=значение, далее обрабатываемый текст, затем "}}}". Обрабатываемый текст также может содержать вызов процессора. Встроенные процессоры:

Работа с заявками (карточками)

Система trac позволяет создавать и отслеживать заявки 3 типов (расширяется и упорядочивается trac-admin или в админке): ошибки (defects, bug reports), заявки на улучшение (enhancements, feature requests) и задания (tasks). При создании заявка имеет состояние "new". Заявки можно редактировать (менять поля, описание, добавлять комментарии или файлы) и переводить в другое состояние в соответствии с имеющимися правами доступа. При этом "все ходы записываются". Комментарии и саму заявку можно удалить безвозвратно при наличии прав доступа. В описании и комментариях можно использовать wiki форматирование.

Поля заявки:

Поле будет скрыто, если список возможных значений пуст. Значения полей по умолчанию задаются в trac.ini или из строки запроса ("/trac/newticket?type=task&component=gui"). Можно добавлять свои поля в trac.ini (секция ticket-custom). При создании отчётов необходимо учитывать, что дополнительные поля помещаются в таблицу ticket_custom вместо таблицы ticket.

После настройки SMTP в trac.ini заявитель, ответственный и прочие пользователи (указываются в поле Cc:) будут получать извещения о создании и изменении относящихся к ним заявок. Шаблон тела письма задаётся в trac/ticket/templates/ticket_notify_email.txt, свою версию надо положить в каталог-проекта/templates/ticket_notify_email.txt. Разрешение посылать письма от httpd для SELinux: "setsebool -P httpd_can_sendmail 1".

Диаграмму переходов состояний заявки можно определить самостоятельно с версии 0.11 (модуль ConfigurableTicketWorkflow, секция ticket-workflow trac.ini): для каждого типа перехода (действия) необходимо задать список допустимых исходных состояний, список допустимых приходных состояний, действие (set_owner_to_self, leave_status, set_owner, del_owner, del_resolution, set_resolution) и права (TICKET_CREATE, TICKET_MODIFY). При переходе от версии 0.10 создаётся диаграмма переходов с состояниями new, assigned, closed и reopened. В поставке 0.11 задаются состояния: new (только что создана), assigned (назначен ответственный), accepted (он с этим согласился), reopened, closed. В примерах приводятся: добавление этапа тестирования, добавление этапа обзора кода, запрет закрывать неназначенную заявку, добавление состояния запроса дополнительной информации. После добавления новых состояний может потребоваться настроить группировку для плана работ (секция milestone-groups trac.ini).

Изменения отображаются в истории (timeline).

Используя один из предустановленных отчётов или составив свой отчёт или запрос можно получить список заявок, удовлетворяющих требуемым критериям. Отчёты составляются с помощью SQL SELECT (report). Запросы составляются фильтруя список заявок по требуемым значениям выбранных полей (имеются 'OR' и 'AND') и группируя результат (называется запросом, query). Предполагается полностью отказаться от отчётов в пользу запросов, однако отчёты позволяют извлекать данные не только о заявках. Отчёты без группировок или записи в группе могут быть отсортированы по любой колонке. Ссылки на запросы имеют формат в wiki вида "query:?status=assigned|reopened&order=priority". Кроме оператора совпадения можно использовать "~=" (содержит), "^=" (начинается с) и "$=" (заканчивается на). Перед оператором может стоять знак отрицания "!". Даты в интервалах дат разделяются ".." ("created=2007-01-01..2008-01-01"). Ссылки на отчёты имеют формат URL вида "reports/номер[?имя-параметра=значение]". Можно включать результат запроса в wiki, используя макро вида "[[TicketQuery(status=assigned∓order=priority)]]", вторым параметром которого может быть "compact" (без описания) или "count" (только количество). Можно включать результат запроса в wiki в виде таблицы, используя макро вида "[[TicketQuery(max=3,status=closed,order=id,desc=1,format=table,col=resolution|summary|owner|reporter)]]". Понравившийся отчёт или запрос можно сохранить для последующего использования (номер, автор, название, описание, команда запроса). Отчёт или запрос можно получить также в формате RSS (Really Simple Syndication) или текстовом (CSV или разделёние табуляциями).

Возможная последовательность обработки заявки (добавление функции или исправление ошибки):

  1. открыть заявку (если возникает вопрос, а нужна ли эта новая функция, то она не нужна), описание новой функции в виде ссылки на предварительное обсуждение на wiki; обработать информацию об ошибке (нет ли похожей, ошибка ли это, воспроизводима ли, тяжесть последствий, будем ли мы её исправлять)
  2. назначить веху
  3. назначить ответственного
  4. создать ветку (для улучшений - от HEAD, для ошибок - от нужной версии), имя ветки можно образовать из номера заявки
  5. внести изменения, оттестировать
  6. слить изменения в основной ствол, указав в журнале номер заявки, ветку можно удалить
  7. закрыть заявку, указав новер ревизии после слияния

Заявки могут быть импортированы из

Работа с этапами

Модуль работы со стратегическим планом (roadmap, план работ) позволяет задать список этапов разработки (milestone, веха) с указанием запланированных и получившихся дат выпуска, отслеживать готовность этапов по проценту выполнения соответствующих заявок, просматривать относящиеся к этапу заявки с сортировкой по требуемым критериям. Список этапов можно выгрузить в формате VCALENDAR (iCalendar) для Korganizer, Sunbird, Lightning, Evolution, Microsoft Outlook (только свои заявки для этапов со сроком окончания, требуется аутентификация в момент подписки).

Хронология

Данный модуль позволяет просмотреть недавние изменения в проекте (репозиторий, заявки, wiki, этапы). Можно фильтровать по типу объектов и изменения, репозиторию, датам и именам пользователей (список через пробел, знак '-' для отрицания). Обеспечиваются ссылки для получения более детальной информации. Возможно получение информации в формате RSS (Really Simple Syndication). В настройках trac.ini можно управлять объёмом информации об изменениях, слиянием похожих сообщений, показывать ли приложенные файлы и т.д..

Работа с репозиториями

Система trac может интегрироваться с системами управления версиями subversion, bazaar, git, mercurial и monotone, для чего при установке указывается адрес репозитория, с которым trac синхронизируется для ускорения работы. Это позволяет просматривать репозиторий с указанием требуемой ревизии, сравнивать ревизии и ветви проекта, подкаталогов и файлов: список изменённых файлов, построчное сравнение файлов, сравнение файлов "бок о бок" (выделяются различия внутри строки). Также можно посмотреть изменения в метаданных, журнал относящихся к файлу ревизий, список измененных в указанной ревизии файлов (цвета: зелёный - добавление, оранжевый - изменёние, синий - копирование, серый - перемещение) и сами файлы (поддерживается настраиваемая подсветка для большинства языков программирования и не только тремя различными библиотеками: enscript, pygments и SilverCity) последней или указанной ревизии. Задаётся начальная и конечная ревизии, с учётом и без учёта копирования, с учётом удалений файлов с тем же именем. Имеется сортировка по колонкам при просмотре фалов: имя файла, размер, ревизия, давность последних изменений (цветовая шкала: красные - свежие, синие - старые; настраивается), автор. Есть быстрые переходы к веткам и релизам. Показываются или поддерживаются метаданные: svn:needs-lock, svn:mergeinfo, svn:externals, svn:mime-type (например: "text/html;charset=utf-8"). Можно использовать клавиатурное управление (включить в настройках):

Начиная с версии 0.12 окружение trac может быть привязано к нескольким репозиториям разного типа (для subversion можно указать подкаталог), при просмотре выдаётся индекс репозиториев. После добавления репозитория его необходимо синхронизовать с trac командой resync утилиты trac-admin. До версии 0.12 при каждом обращении к trac производилась синхронизация с репозиторием. Начиная с версии 0.12 необходимо позаботиться о явной синхронизации при каждом изменении в репозитория с использованием скриптов post-commit и post-revprop-change в настройке subversion (процесс, вносящий изменения в subversion, должен иметь права на запись в окружение trac; не забыть про права на исполнение; необходимо отключить repository_sync_per_request в trac.ini):

post-commit:

#!/bin/sh
/usr/bin/trac-admin каталог-окружения changeset added "$1" "$2"

post-revprop-change:

#!/bin/sh
/usr/bin/trac-admin каталог-окружения changeset modified "$1" "$2"

Репозиторий может иметь следующие атрибуты:

Настройка репозиториев описывается в секции repositories файла trac.ini (в этом случае имена репозиториев приводятся к строчным буквам и нельзя использовать точку). Настройка репозитория по умолчанию описывается в секции trac переменными repository_*. Можно также настраивать репозитории средствами trac-admin и веб-интерфейса.

Можно обеспечить автоматические отметки в заявках (включая закрытие) при создании ревизии в репозитории:

Возможно получение журнала изменений в текстовом виде или в формате RSS (Really Simple Syndication) и настроить получение извещений RSS при изменении определённого файла или каталога.

Права доступа

Пользователи делятся на аутентифицированных (нажавших кнопку Login, входят в группу "authenticated") и прочих (им присваивается имя "anonymous" в группе "anonymous"). Можно создавать свои группы привилегий и включать в них пользователей и группы. Группа authenticated входит в группу anonymous. Добавление пользователя в группу добавляет привилегии группы к привилегиям пользователя. Созданные группы автоматически входят в группы anonymous и authenticated. Недоступные пользователю подсистемы не показываются. Редактирование прав доступа доступно с помощью trac-admin и веб-интерфейса (для обладателя привилегии TRAC_ADMIN).

Аутентификация пользователей производится внешними средствами (например, apache). Информация о пользователях хранится в БД trac в виде записей об активных сессиях (т.е. необходимо хотя бы раз аутентифицироваться - нажать кнопку Login/Войти - или добавить сессию с помощью trac-admin): имя пользователя trac, идентификатор сессии, полное имя, адрес email, персональные настройки.

Функциональные привилегии:

Для тонкой настройки прав доступа к различным частям БД (fine-grained permissions) необходимо

Файл с описанием прав доступа к trac имеет строчную структуру и делится на секции, секция начинается с имени секции в квадратных скобках, комментарии начинаются с символа '#', строка содержит имя параметра и значение через символ '='.

Имена секций задают шаблон описания ресурса trac, для которой определяются права доступа. Описание ресурса состоит из типа (wiki, ?), ":", шаблона имени, "@", шаблона ревизии, "/", тип уточнения (attachment), "/", шаблон имени (опущенное заменяется шаблоном "*"). Секции проверяются по порядку. В секции в качестве имени параметра указывается имя пользователя или имя группы (предваряется символом '@') или шаблон '*', в качестве значения - список привилегий через запятую или пусто (доступ запрещён). Символ '!' перед именем пользователя отнимает указанные привилегии. Права доступа для группы не перекрываются индивидульными правами доступа, а объединяются.

Для добавления своих привилегий используется расширение "tracopt.perm.config_perm_provider.*", которое читает из секции extra-permissions строки с именами метапривилегий и списком имён добавляемых привилегий.

Администрирование (trac-admin)

Формат: trac-admin каталог-окружения команда подкоманда опции. При отсутствии команды переходит в интерактивный режим. Настройки сохраняются в БД. Описания репозиториев из trac.ini редактировать нельзя. Команды:

Конфигурационный файл окружения trac (trac.ini)

Конфигурационный файл conf/trac.ini в каталоге проекта имеет строчную структуру и делится на секции, секция начинается с имени секции в квадратных скобках, комментарии начинаются с символа '#', строка содержит имя параметра (приводится к строчным буквам) и значение через символ '='. Изменения действуют немедленно, кроме секций logging и components (требуется перезапустить Apache). В версиях до 0.11 общие настройки проектов хранились в /etc/trac/trac.ini. В версии 0.11 и старше имя файла с общими настройками задаётся в секции inherit. Требуются права доступа на запись для веб-сервера. Секции:

Расширения

Имеет развитую систему расширений (plugin), часть из которых (tracopt.*) поставляется в комплекте. Часть модулей основного комплекта также можно отключать в настройках. Расширения собираются и систематизируются на сайте trac-hacks (сотни их!). Поставляются либо в виде отдельного .py файла или .egg пакета (требуется setuptools и права на запись в кеш egg; сборка egg: "[python ./setup.py compile_catalog -f;] python ./setup.py bdist_egg"), которые необходимо скопировать в каталог окружение/plugins и перезапустить HTTP сервер, возможно потребуется включить их из панели администратора и обновить БД: trac-admin каталог-окружения upgrade. Расширение должно быть адаптировано к версии Trac. Нельзя использовать разные версии расширений в разных проектах на одном сервере. Расширения можно устанавливать на уровне системы (с помощью easy_install [--always-unzip]). Удаление из системы: "easy_install -m имя-расширения"; удалить каталог /usr/lib/python2.4/site-packages/имя-расширения-версия.egg; перезапустить HTTP сервер. Например (0.12):

Автономный веб-сервер

В поставку входит автономный веб-сервер tracd (нет поддержки SSL), при запуске необходимо указать список каталогов окружения. Статические страницы помещаются в каталог-окружения/htdocs и доступны по URI-проекта/chrome/site/.... Ключи:

Настройка Apache для trac 0.12

Trac поддерживает следующие интерфейсы с Apache (команда deploy утилиты trac-admin генерирует набор скриптов для cgi-bin и дополнений в htdocs):

Задать правила аутентификации для папки, в данном случае Basic:

<LocationMatch "/trac/[^/]+/login">
    AuthType Basic
    AuthName "Trac Environment"
# можно совместить с аналогичным файлом apache для subversion, 
# но надо учитывать, что клиент svn хранит пароли в открытом виде
    AuthUserFile "файл с именами и паролями в формате htpasswd" 
    Require valid-user
</LocationMatch>

Настройка SELinux:

chcon -R -t  -h httpd_sys_content_t /data/trac

Установка trac 0.12 в CentOS 5.4

Установить и настроить subversion 1.6.12 (из пакетов от dag, FSFS).

Установить и настроить Apache 2.2.3 (из пакетов, mod_python.x86_64).

Заполнить репозиторий subversion.

Установить пакеты trac (/etc/httpd/conf.d/trac.conf, /usr/bin/trac-admin и trac-admin(1), веб сервер /usr/sbin/tracd и tracd(8), /usr/share/doc/trac-0.10.5/, /usr/share/trac/, /var/www/cgi-bin/trac.cgi, /var/www/cgi-bin/trac.fcgi) от dag (пересобрать на хосте с установленными пакетами python-setuptools, python-genshi (новая работа с шаблонами, 0.6 от dag), python-sqlite, pytz, babel и python-babel). Тянет python-setuptools, python-genshi (новая работа с шаблонами, 0.6 от dag), python-clearsilver (старая работа с шаблонами). Интерфейс python с subversion входит в пакет subversion. Для использования русского языка в меню требуются пакеты babel и python-babel. Для осмысленных имён часовых поясов требуется pytz. Для интерфейса с MySQL требуется MySQL-python (в RHEL5 версия 1.2.1, а требуется 1.2.2, не заработал). Для интерфейса с SQLite требуется python-sqlite (ошибочно тянется python-sqlite2). Для тонкой настройки прав доступа требуется python-configobj. Для подсветки синтаксиса требуются пакеты enscript (включить в секции mimeviewer и в настройке дополнений tracopt.mimeview.enscript.*) и python-pygments (для verilog: добавить из будущей версии hdl.py в lexers/, отредактировать lexers/_mapping.py; генерация байт-кода: "python -O /usr/lib64/python2.4/py_compile.py файл"), где взять SilverCity?

Для каждой подсистемы создать каталог, например: /data/svn для subversion, /data/trac для Trac (здесь хранятся вложения заявок и wiki). В каждом из них создать подкаталоги для каждого проекта.

Настроить trac для каждого проекта и установить полные права доступа для администратора:

trac-admin /data/trac/имя-проекта initenv
имя-проекта
sqlite:db/trac.db # соединение с СУБД

Настроить доступ к репозиториям в trac.ini

[trac]
repository_type = svn
repository_dir = каталог-svn1

[repositories]
имя1.dir = каталог-svn1
имя1.description = описание1
имя1.type = svn
имя1.url = http://имя-хоста1/svn/имя1
имя2.dir = каталог-svn2
имя2.description = описание2
имя2.type = svn
имя2.url = http://имя-хоста2/svn/имя2
.alias = имя1
.hidden = true

Настроить скрипты расширения subversion post-commit и post-revprop-change для всех репозиториев.

Определить на виртуальном хосте виртуальную папку /trac с указанием реального каталога, содержащего окружения trac (/etc/httpd/conf.d/trac.conf):

<Location "/trac">
  SetHandler mod_python
  PythonInterpreter main_interpreter
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir /data/trac
  PythonOption TracUriRoot /trac
  PythonOption TracLocale ru_RU.UTF8
  PythonOption PYTHON_EGG_CACHE /tmp/egg-cache
</Location>
<LocationMatch "/trac/[^/]+/login">
    AuthType Basic
    AuthName "Trac Environment"
    AuthUserFile "/etc/httpd/conf/svn.htpasswd"
    Require valid-user
</LocationMatch>

Настройка SELinux:

chcon -R -t  -h httpd_sys_content_t /data/trac

Добавить пользователей

htpasswd -c -m /etc/httpd/conf/svn.htpasswd имя-администратора

Установить полные права доступа для администратора:

trac-admin /data/trac/имя-проекта permission add имя-администратора TRAC_ADMIN

Добавить необходимые расширения в /data/trac/имя-проекта/plugins и обновить БД

trac-admin /data/trac/имя-проекта upgrade
trac-admin /data/trac/имя-проекта wiki upgrade

Настроить /data/trac/имя-проекта/conf/trac.ini

Установить права доступа к файлом с учётом настроек Apache (и svn).

Перезапустить Apache.

Установка trac 0.10.5 в CentOS 5.4

Установить и настроить subversion 1.6.12 (из пакетов от dag, FSFS).

Установить и настроить Apache 2.2.3 (из пакетов, mod_python.x86_64): загрузить модули dav_module и dav_fs_module

Заполнить репозиторий subversion.

Установить пакеты trac (/etc/httpd/conf.d/trac.conf, /usr/bin/trac-admin и trac-admin(1), веб сервер /usr/sbin/tracd и tracd(8), /usr/share/doc/trac-0.10.5/, /usr/share/trac/, /var/www/cgi-bin/trac.cgi, /var/www/cgi-bin/trac.fcgi), trac-iniadmin-plugin (редактирование конфигурационных файлов через API, не используется?), trac-peerreview-plugin, trac-privateticketsplugin, trac-ticketdelete-plugin, trac-webadmin (встроен в версии 0.11), MySQL-python. Тянет python-clearsilver (работа с шаблонами), python-setuptools (для trac-ticketdelete-plugin), python-sqlite[2], интерфейс python и subversion входит в пакет subversion.

Для каждой подсистемы создать каталог, например: /data/svn для subversion, /data/trac для Trac (здесь хранятся вложения), /data/files для WebDAV. В каждом из них создать подкаталоги для каждого проекта. В /data/files/имя-проекта создать подкаталоги public, private и images.

Настроить trac для каждого проекта (производится индексация репозитория - долго, но ни нагрузки на ЦП, ни ожидания в/в - блокировки SQLite?):

trac-admin /data/trac/имя-проекта initenv
имя-проекта
sqlite:db/trac.db # соединение с СУБД
svn # тип репозитория
/data/svn/имя-проекта # путь к репозиторию (локальный доступ)
/usr/share/trac/templates # каталог шаблонов

trac-admin /data/trac/имя-проекта
permission remove anonymous WIKI_CREATE WIKI_MODIFY BROWSER_VIEW
permission add authenticated WIKI_ADMIN BROWSER_VIEW MILESTONE_ADMIN
quit

Установить права доступа к файлом с учётом настроек Apache (и svn).

Определить на виртуальном хосте виртуальную папку trac (CGI) с указанием реального каталога:

ScriptAlias /trac /var/www/cgi-bin/trac.cgi
<Location "/trac">
    SetEnv TRAC_ENV_PARENT_DIR "/data/trac"
</Location>
<LocationMatch "/trac/[^/]+/login">
    AuthType Basic
    AuthName "Trac Environment"
    AuthUserFile "файл с именами и паролями от svn"
    Require valid-user
</LocationMatch>

Определить на виртуальном хосте виртуальную папку files (WebDAV):

Alias /files /data/files
<Location /files>
    DAV On
    AuthType Basic
    AuthName "Trac Files"
    AuthUserFile "файл с именами и паролями от svn"
    Require valid-user
</Location>
<LocationMatch ^/files/[^/]+/(images|public)/>
    <LimitExcept GET OPTIONS>
        Require valid-user
    >/LimitExcept>
</LocationMatch>

Перезапустить Apache.

trac-peerreview-plugin (/usr/share/doc/trac-peerreview-plugin-0.10/README.txt): добавить на панель навигации кнопку в trac.ini:

mainnav = wiki,timeline,roadmap,browser,peerReviewMain,tickets,newticket,search

Изменения

Ссылки

@ Карта сайта News Автора!

Bog BOS: Trac - система управления заданиями

Последние изменения:
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL
2024.10.22: sysadmin: Монтирование файловых систем: bind, shared и OverlayFS



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru