Узелок на память про установку багтрекера trac + git-репозитория, раздача статики через nginx. Дело не хитрое, но со временем подзабывается последовательность действий. В качестве хранилище будет mysql, trac будет установлен в virtualenv под Ubuntu Server.
Создание БД и пользователя
# mysql -u root -p CREATE DATABASE trac DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; GRANT ALL ON trac.* TO trac@localhost IDENTIFIED BY '_PASSWORD_';
Строка подключения (DSN) для MySQL
mysql://trac:_PASSWORD_@localhost/trac
Установка pip и dev-файлов для MySQL
sudo apt-get install python-setuptools libmysqlclient-dev sudo easy_install pip
Установка trac и зависимостей (предполагается что virtualenv установлен и активировано рабочие окружение)
pip install babel docutils pygments pytz mysql-python pip install trac
Создадим директорию для будущих trac-окружений и тестовый проект. Утилита trac-admin спросит некоторые параметры, среди которых строка подключения к БД (DSN), пример для mysql приведен выше.
sudo mkdir /home/www/tracs/ sudo -uwww trac-admin /home/www/tracs/testproj initenv
Основной этап установки окончен. Детали настройки внешнего вида описаны в wiki, также доступны разные темы.
На этом этапе можно запустить встроенный в trac веб-сервер (без возможности залогинится в админку)
sudo -uwww tracd -p 8080 /home/www/tracs/testproj
Следующий этап - это настройка авторизации пользователей, подключение git-репозитория и раздача статики с помощью nginx.
Добавим admin'а для управления установленной версией trac'a
sudo trac-admin /home/www/tracs/testproj permission add proft TRAC_ADMIN
Для настройки digest-аутентификации сгенерируем пароль для пользователя с помощью одного из способов описанных в UsingAuthentication, я использовал приведенный python-скрипт (у меня не установлен apache)
# cd /home/www/tracs/ python trac-digest.py -u proft -p password >> testproj/conf/users.htdigest
Запустим сервер tracd с возможностью авторизации пользователей из файла users.htdigest
tracd -p 8000 -s --auth="testproj,/home/www/tracs/testproj/conf/users.htdigest,trac" /home/www/tracs/testproj
Проверим, зайдя на http://127.0.0.1:8000/login/.
Для авторизации можно использовать аккаунты из Django.
У меня git-репозитория настроен с помощью gitolite.
Установка дополнения для trac
pip install http://github.com/hvr/trac-git-plugin/tarball/master
Отредактируем trac.ini, обновив секцию trac и добавив две новых: components и git.
[components] tracext.git.* = enabled [trac] repository_dir = /home/git/repositories/testproj.git repository_type = git [git] cached_repository = true persistent_cache = true shortrev_len = 6 wiki_shortrev_len = 7 git_bin = /usr/bin/git git_fs_encoding = latin1 trac_user_rlookup = true use_committer_id = false use_committer_time = false
Запустим настроенное выше trac-окружение с помощью команды
tracd -d -p 3050 --protocol=http -s /home/www/tracs/testproj
Пример настроек для хоста под nginx'ом
upstream testproj_tracd { server 127.0.0.1:3050; } server { listen 127.0.0.1:80; server_name vb.local; access_log /var/log/nginx/testproj.access.log; error_log /var/log/nginx/testproj.error_log; location / { #auth_basic "Secure Login"; #auth_basic_user_file /home/www/tracs/testproj/conf/users.basic; proxy_pass http://testproj_tracd; include /etc/nginx/proxy_params; } location ~ (/.*)?/chrome/site/ { rewrite (/.*)?/chrome/site/(.*) /$1/htdocs/$2 break; root /home/www/tracs/testproj; } }