Установка Trac + git + PostgreSQL + nginx в Debian

Фактически эта статья является дополнением к статье про установку Django 1.5. Так как Trac является хорошим подспорьем при разработке чего либо позволяя управлять заявками (тикетами) и ходом всего проекта.

Так как мы хотим использовать софт посвежее, то воспользуемся бэкпортами от Debian 7.

Добавляем backports:

nano /etc/apt/sources.list
deb http://mirror.yandex.ru/debian-backports/ squeeze-backports main contrib non-free
apt-get update
apt-get install debian-backports-keyring

Устанавливаем git:

aptitude -t squeeze-backports install git

Устанавливаем библиотеки python:

aptitude -t squeeze-backports install python-babel
aptitude -t squeeze-backports install python-docutils
aptitude -t squeeze-backports install python-pygments

Устанавливаем инсталлятор:

aptitude -t squeeze-backports install python-setuptools

Устанавливаем последнюю разрабатываемую версию trac:

easy_install Trac==dev

Создаем пользователя и базу данных в PostgreSQL:

su postgres
createuser -U postgres -S -D -R -E -P trac

Будет запрошен пароль, сделайте его сложным.

createdb -U postgres -O trac -E UTF8 trac-git

Строка инициализации будет выглядеть примерно так:

postgres://trac:tracpass@localhost/trac-git

Создаем окружение для Trac:

mkdir /var/trac
trac-admin /var/trac initenv

Спросит имя проекта и строку инициализации базы данных.

Создался конфигурационный файл /var/trac/conf/trac.ini

###Trac is installed in /usr/share/pyshared/trac. Documentation is in /usr/share/doc/trac

У меня для прямого вызова trac-admin и tracd пришлось сделать символьные ссылки эти скриптов из директории /usr/local/bin в /usr/bin:

ln -s /usr/local/bin/trac-admin  /usr/bin/trac-admin
ln -s /usr/local/bin/tracd  /usr/bin/tracd

Протестировать работу Trac прямо из командной строки Debian можно запустив специальный сервер (с использованием утилиты screen, которую нужно ставить отдельно):

screen -d -m tracd --port 8000 /var/trac

Теперь с помощью текстового браузера links (ставится отдельно) можно зайти на него из командной строки:

links http://localhost:8000/trac

Устанавливаем права:

chown -R www-data:www-data /trac/

Генерируем скрипты для запуска fastcgi и статику:

trac-admin /var/trac/ deploy /var/www/trac/

Затем перемещаем в основную директорию:

mv /var/www/trac/* /var/trac/

Запустить trac через FastCGI и nginx не удалось. Нашелся способ через встроенный tracd (одна строка):

tracd -d -p 3050 --hostname=localhost --pidfile=/var/run/tracd.3050 --protocol=http -s /var/trac

В nginx в конфиге сайта пишем примерно следующее:

server {
       listen       80;
       server_name  domain.com;

       access_log   /var/log/nginx/trac.access.log;
       error_log    /var/log/nginx/trac.error_log info;

     location ~ /(.*?)/chrome/site/ {
             rewrite /(.*?)/chrome/site/(.*) /$1/htdocs/$2 break;
             root /var/trac;
     }

       location / {
               proxy_pass   http://127.0.0.1:3050;
               include      /etc/nginx/proxy.conf;
}
}

Перезапускаем nginx и открываем в браузере. Видим, что работает, но в систему не пускает.

Идем в директорию /var/trac/conf и создаем файл содержащий данные пользователей:

htdigest -c tracpw yourproject admin

Теперь необходимо перезапустить tracd с подключенной авторизацией:

tracd -d -p 3050 --hostname=localhost --pidfile=/var/run/tracd.3050 --protocol=http --auth="*,/var/trac/conf/tracpw,yourproject" -s /var/trac

Затем делаем пользователя с именем admin админитратором trac:

trac-admin /var/trac permission add admin TRAC_ADMIN

Проверяем, должно работать. Конечно, описан самый простой способ авторизации пользователей, но если у вас небольшой проект на несколько разработчиков, то этого вполне хватит. Если вы разрабатываете сайт на Django, то существует возможность настроить авторизацию пользователей Trac через базу Django.

Наверх

Опубликовано