Trac и автозапуск в FreeBSD

May 24, 2009 19:12

До сего момента я использовал для своего проекта такую связку программ:
  • subversion - система контроля версий
  • websvn - веб-морда к subversion
  • mediawiki - просто wiki для документации и прочего мусора
  • bugzilla - собственно система отслеживания ошибок
Не могу сказать ничего плохого ни про одну из них, однако от трёх из них можно избавиться, имея всего одну, что называется "в одном флаконе", плюс получить дополнительные возможности. Присмотрелся я недавно к Trac...

У Trac на сегодняшний день лишь одна проблема - он разговаривает исключительно на английском. Но эта преграда нас не останавливает, так что я рванул в путь =) Пробежался по Google в поисках описания установки и подводных камней. Везде пугали что ставится она сложно и люди убивали чуть ли не несколько дней до приведения её чувства. Ну, думаю, напарюсь я с ней...
Лезу в порты, набираю заветное make install clean и через десяток минут имею свежеустановленный Trac, с которым что-то надо делать...
Первый шаг - создание рабочего окружения (Environment). По документации всё ясно и проблем не вызывает. Собственно дальнейшая настройка и натравливание Trac на subversion тоже действия элементарные.
Из доментации узнаю что есть несколько вариантов запуска:
  • под web-сервером (в трёх вариантах - CGI, FastCGI и mod_python)
  • как Standalone Server
Первый (в каждом из трёх вариантов) как-то не очень устроили, а вот второй показался соблазнительным (думаю попозже я его повешу за фронтендом nginx и получится совершенно неотличимо от обычного web-сервера).
Однако, если CGI и mod_python не требуют особых телодвижений, то FastCGI и Standalone Server требуют запуска демона. А вот тут как раз облом - порт не предоставляет средств автоматического запуска. Ну что же засучили рукава и вперёд на баррикады! Получился такой rc-скрипт:

#!/bin/sh
#
# PROVIDE: trac
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf to enable trac:
#  trac_enable="YES"
#
# and optional:
#  trac_data="/usr/local/www/trac"
#  trac_user="trac"
#  trac_group="trac"
#  trac_passfile="/usr/local/www/trac/.htpasswd"
#  trac_envname="'*'"
#  trac_port="8000"
#  trac_host="127.0.0.1"

. "/etc/rc.subr"

# Set some defaults
trac_enable=${trac_enable:-"NO"}
trac_data=${trac_data:-"/path/trac"}
trac_user=${trac_user:-"trac"}
trac_group=${trac_group:-"trac"}
trac_passfile=${trac_passfile:-"/usr/local/www/trac/.htpasswd"}
trac_envname=${trac_envname:-"'*'"}
trac_port=${trac_port:-"8000"}
trac_host=${trac_host:-"127.0.0.1"}

name=trac
rcvar=`set_rcvar`

start_precmd="trac_env"

load_rc_config $name

pidfile="${trac_data}/${name}.pid"

trac_flags="-d -p ${trac_port} -b ${trac_host} --pidfile=${pidfile} --basic-auth=${trac_envname},${trac_passfile},${trac_data} ${trac_data}"

command="/usr/local/bin/tracd"
command_interpreter="/usr/local/bin/python2.5"

trac_env()
{
    eval "export PYTHON_EGG_CACHE=${trac_data}/.python-eggs"
}

run_rc_command "$1"
По нему же кстати видно, что используется basic аутентификация, что надо учеть при настройке.
Кому понадобиться - пользуйтесь на здоровье ;)

Кстати, в дистрибутиве Trac имеется утилита для переноса данных из Bugzilla. Очень удобно, однако =)

Итак что же мы получили:
  • отказались от Bugzilla, MediaWiki, websvn в пользу одного программного продукта, заодно разгрузили SQL сервер, т.к. Trac может использовать sqlite в качастве собственной БД, чем я и воспользовался;
  • получили инструмент, который сам отслеживает roadmap'ы проекта;
  • доустановив модули получили в комплект еще и блог для разработчиков.
Однако кое-чего и лишились:
  • Trac по умолчанию не поддерживает блокировку одного бага другим, но это решается установкой плагина TracMasterTickets. А вот рисовать дерево зависимостей он не может, что обидно. У Bagzilla это удобная фишка;
  • И до сих пор не решена проблема с переносом данных из MediaWiki базирующейся на PostgreSQL.
Так что если есть советы по этим проблемам - с радостью приму.

freebsd, trac

Previous post Next post
Up