Установка 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.
Опубликовано