Trac – интегрированная среда управления проектом, включающая баг-трекер, страницы wiki, интерфейс к репозитарию Subversion.
Trac включает в себя консольную утилиту trac-admin для первоначального создания веб-окружения и последующей раздачи прав, добавления/удаления компонент и т.д. Веб-интерфейс доступен через CGI, FastCGI, mod_python или через отдельный сервер tracd.
Как отмечено в статье Php Fast CGI, существует много разных веб-серверов. Поэтому здесь будут даны настройки не только для Apache, но и для Nginx и Cherokee.
TODO: кто хочет, добавьте свой веб-сервер.
Далее предположим, что виртуальным путём к CGI-скрипту trac.cgi будет /trac-cgi/. Этот и другие скрипты кладутся в папку /usr/share/trac/cgi-bin/ (или в аналогичную, зависит от установки), а прочие статические документы (картинки и шаблоны) – в /usr/share/trac/htdocs/ – на эту папку должен ссылаться путь /trac/. Виртуальным путём к Fast CGI?-скрипту trac.fcgi и к обработчику mod_python будем считать /projects/.
Несомненный интерес представляет обслуживание при одних и тех же настройках как можно большего числа проектов. Поэтому будем располагать веб-окружения trac в под-дереве папки /var/lib/trac и сошлёмся на неё переменной TRAC_ENV_PARENT_DIR. Веб-серверу необходимы права на запись в окружения trac. Этого можно добиться, включив псевдо-пользователя, от имени которого запущен веб-сервер (или FastCGI-сервер), в группу tracadmin, и разрешив этой группе запись в /var/lib/trac и под-директории.
Пароли пользователей будем хранить в /etc/trac/htpasswd. Внимание Nginx поддерживает шифрование паролей лишь методом crypt.
Веб-сервер nginx не поддерживает непосредственное исполнение CGI-скриптов. Вместо этого рекомендуется пробрасывать запросы к ним на второй веб-сервер (backend), запущенный на той же машине или на другой. В приведённых настройках подразумевается, что nginx принимает соединения на localhost:8080 и передаёт запросы CGI на localhost:8081. Исправьте эти значения при необходимости.
На момент написания этой страницы nginx ещё не поддерживал дублирование всех настроек во вложенные секции location, поэтому их стоит самостоятельно повторить, а мы лишь добавим директивы авторизации, чтобы не занимать много места.
Аналогично CGI, nginx всего лишь пробрасывает запросы на отдельностоящий FastCGI-сервер.
Можно использовать одни и те же настройки location для протоколов HTTP и HTTPS, записав их в отдельный файл и включив директивой include. При этом, если HTTPS обслуживается другим портом, нежели 443, потребуется дополнительный параметр, явно указывающий на HTTPS (такова специфика trac).
Trac уже включает в себя поддержку FastCGI – скрипт trac.fcgi, но его ещё нужно «демонизировать». Для этих целей годится программа spawn-fcgi из lighttpd 1.4.10. Скомпилируем её и назовём trac-spawn-fcgi. Если lighttpd уже установлен в системе, разумеется, этого делать не нужно.
Для автоматического запуска trac.fcgi как сервиса, можно использовать конфигурационный файл /etc/sysconfig/trac-spawn-fcgi
и инит-скрипт /etc/init.d/trac-spawn-fcgi
TODO: описать тестирование проектов модулем python-module-bitten