Установка trac + git + nginx в ОС Debian Jessie

Oct 10, 2016 22:38 · 422 words · 2 minute read git trac nginx

Ранее мы уже рассматривали процесс установки Trac в ОС Debian Jessie, тогда мы использовали связку с subversion и web-сервер Apache. Давайте разберемся с настройкой багтрекера Trac для git-репозитория!

В моем примере на сервере уже установлена и давно используется система контроля версий git, иначе мне пришлось бы ее установить командой:

aptitude install git

Установка trac и необходимых зависимостей:

aptitude install python-setuptools trac

Далее следует настроить сам git-репозиторий, в моем случае он уже настроен и находится по адресу /home/git/tftp.git.

Создадим каталог для trac-окружения и с помощью утилиты trac-admin настроим его:

mkdir /home/git/tftp_trac
trac-admin /home/git/tftp_trac initenv

Меняем владельца каталога с trac-окружением на www-data:

chown -R www-data:www-data /home/git/tftp_trac

Добавляем пользователя-администратора для trac:

trac-admin /home/git/tftp_trac/ permission add admin TRAC_ADMIN

Cоздадим файл .htpasswd, который будет использоваться для авторизации (и сразу добавим в него пользователя developer):

htpasswd -c /home/git/tftp_trac/.htpasswd developer

Установим необходимый для git-репозитория плагин:

easy_install http://github.com/hvr/trac-git-plugin/tarball/master

Правим конфигурационный файл /home/git/tftp_trac/conf/trac.ini, добавляя в него новые секции:

[components]
tracext.git.* = enabled
 
[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:

[trac]
...
repository_dir = /home/git/tftp.git
repository_type = git
...

В конфигурационный файл /etc/nginx/conf.d/default.conf добавляем следующее:

upstream trac {
    server 127.0.0.1:3050;
}
 
server {
    listen       80;
    server_name  trac.example.com;
 
    access_log          /var/log/nginx/trac.access.log main;
    error_log           /var/log/nginx/trac.error.log;
 
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
 
    root                /home/git/tftp_trac;
    index               index.html;
 
    location ~ /(.*?)/chrome/site/ {
        access_log      off;
        autoindex       off;
        expires         1d;
        rewrite         /(.*?)/chrome/site/(.*)     /$1/htdocs/$2   break;
    }
 
    location / {
        auth_basic              "Restricted Zone";
        auth_basic_user_file    /home/git/tftp_trac/.htpasswd;
        proxy_pass      http://trac;
    }
 
    location ~ /\. {
        deny            all;
        access_log      off;
        log_not_found   off;
    }
 
}

Примечание. Не забываем перечитать конфиг web-сервера Nginx для применения изменений.

Создаем init-скрипт для запуска trac:

touch /etc/init.d/tracd
chmod +x /etc/init.d/tracd

Содержимое скрипта следующее:

#!/bin/sh
  
### BEGIN INIT INFO
# Provides:          tracd
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the tracd web server
# Description:       starts tracd using start-stop-daemon
### END INIT INFO
  
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/tracd
NAME=tracd
DESC=tracd
  
HOST="127.0.0.1"
PORT=3050
ROOTDIR="/home/git/tftp_trac"
  
test -x $DAEMON || exit 0
  
set -e
  
. /lib/lsb/init-functions
  
case "$1" in
  start)
    echo -n "Starting $DESC: "
          $DAEMON -d --port=$PORT --hostname=$HOST --single-env $ROOTDIR --basic-auth="*,$ROOTDIR/.htpasswd,Trac"
    echo "OK"
    ;;
  
  stop)
    echo -n "Stopping $DESC: "
    killall $NAME
    echo "$NAME."
    ;;
esac
  
exit 0

Запускаем скрипт:

systemctl enable tracd
systemctl start tracd

Теперь в браузерe открываем trac.example.com, сначала будет запрошен логин и пароль, указанный в файле /home/git/tftp_trac/.htpasswd и далее вы попадете в интерфейс trac.

tweet Share