Установка trac + git + nginx в ОС Debian Jessie
Oct 10, 2016 22:38 · 422 words · 2 minute read
Ранее мы уже рассматривали процесс установки 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
.