Настройка Trac
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/. Виртуальным путём к FastCGI-скрипту
trac.fcgi и к обработчику mod_python будем считать
/projects/.
Несомненный интерес представляет обслуживание при одних и тех же настройках как можно большего числа проектов. Поэтому будем располагать веб-окружения trac в под-дереве папки
/var/lib/trac и сошлёмся на неё переменной
TRAC_ENV_PARENT_DIR. Веб-серверу необходимы права на запись в окружения trac. Этого можно добиться, включив псевдо-пользователя, от имени которого запущен веб-сервер (или FastCGI-сервер), в группу
tracadmin, и разрешив этой группе запись в
/var/lib/trac и под-директории.
Пароли пользователей будем хранить в
/etc/trac/htpasswd.
Внимание Nginx поддерживает шифрование паролей лишь методом
crypt.
CGI
Apache2
Nginx
Веб-сервер nginx не поддерживает непосредственное исполнение CGI-скриптов. Вместо этого рекомендуется пробрасывать запросы к ним на второй веб-сервер (
backend), запущенный на той же машине или на другой. В приведённых настройках подразумевается, что nginx принимает соединения на
localhost:8080 и передаёт запросы CGI на
localhost:8081. Исправьте эти значения при необходимости.
На момент написания этой страницы nginx ещё не поддерживал дублирование всех настроек во вложенные секции
location, поэтому их стоит самостоятельно повторить, а мы лишь добавим директивы авторизации, чтобы не занимать много места.
Cherokee
mod_python
Apache2
FastCGI
Nginx
Аналогично CGI, nginx всего лишь пробрасывает запросы на отдельностоящий FastCGI-сервер.
Можно использовать одни и те же настройки
location для протоколов HTTP и HTTPS, записав их в отдельный файл и включив директивой
include. При этом, если HTTPS обслуживается другим портом, нежели 443, потребуется дополнительный параметр, явно указывающий на HTTPS (такова специфика trac).
FastCGI-сервер
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