Доки, маны, напоминалки

Установка связки trac+SVN на Debian Lenny+ISPManager

Posted on Январь 10, 2011

Дано: Виртуальный выделенный сервер c установленным на нем Debian Lenny, Apache 2.2, Nginx 0.6, а также с предустановленной на нем панелью управления ISP Manager Lite. Задача - установить на все это дело связку SVN+Trac.

Процесс установки покажем на примере домена trac.example.com. Первоначально добавляем данный домен в ISP Manager Lite. В настройках домена подключаем возможность обработки PHP, а также исполнение CGI-скриптов. После этого ISP Manager добавит необходимые настройки в конфигурационные файлы apache и nginx и перезапустит их.

Далее, приступаем к установке Subversion.
1).Устанавливаем его из репозиториев:
sudo apt-get install subversion.

2). Создаем группу subversion и добавляем в нее нужных пользователей:
sudo groupadd subversion
sudo addgroup some_user subversion

3). Создаем собственно  svn-репозиторий:
sudo mkdir /var/svn-repos/
sudo svnadmin create --fs-type fsfs /var/svn-repos/repo_1
Здесь каталог repo_1 - собственно корневой каталог вновь созданного репозитория.

4). Теперь нужно ограничить доступ к репозиторию:
sudo chown -R www-data:subversion /var/svn-repos/*
sudo chmod -R 770 /var/svn-repos/*

ВНИМАНИЕ!!!! Помните, что рассматривается взаимодействие с репозиторием svn по http(s)! Соответственно, пользователю www-data дается право на чтение/запись фалйлов, а ткже просморт/модификацию каталогов. Будьте внимательны, если Вы будете далее устанавливать Trac, необходимо четко разграничить права доступа пользователей к репозиторию через веб-интерфейс!

5). Настраиваем авторизацию для доступа к svn-репозиторию:
nano -w /etc/apache2/mods-available/dav_svn.conf
В данный файл нужно прописать следующие строки:
<Location /svn>
DAV svn
SVNParentPath /var/svn-repos
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
Require valid-user
</Location>

6).Создадим соответствующего пользователя в файле авторизации:
sudo htpasswd -c /etc/apache2/dav_svn.passwd some_user

7). Теперь выдадим права пользователю, который прошел аутентификацию, на определенные действия с репозиторием:
nano -w /etc/apache2/dav_svn.authz

В открытым файле опишем права доступа (на чтение — “<tt>r</tt>” и на запись —  “<tt>w</tt>“) пользователей в соответствующие репозитории:
[/]
some_user=rw

[/repo_1]
some_user=rw

Теперь устанавливаем Trac.
1).Скачиваем и устанавливаем Trac из официального репозитория Debian:
sudo apt-get install trac
При этом будут установлено довольно много зависимостей, необходимых для корректной работы данного пакета.

2). Создаем каталог, где будет храниться описания проектов Trac:
sudo mkdir /var/trac

3). Создаем сам проект:
sudo trac-admin /var/trac/trac.example.com initenv
При этом Вам необходимо будет ответить на несколько вопросов:
а). Необходимо будет ввести имя проекта (My Project по умолчанию).
б). Строка подключения к базе данных (по умолчанию подключение к Sqlite).
в). Тип репозитория. к которому нужно получать доступ через Trac (по умолчанию svn).
г). Полный путь до подключаемого репозитория (если доступ к репозиторию из Trac не требуется, просто нажмите Enter).

4). Ограничиваем доступ к Trac:
sudo chown -R www-data:subversion /var/trac
sudo chmod -R 770 /var/trac

5). Добавление пользователя с правами администратора в Trac (нужно же завести хотя бы одного пользователя с администраторскими правами):
sudo trac-admin /var/trac/trac.example.com/ permission add some_user TRAC_ADMIN

Теперь следует настроить Apache для отображения Trac через браузер (помним, что в нашем случае Apache работает в связке с Nginx, причем Nginx работает как фронтенд сервер на 80-м порту, Apache - как бэкенд сервер на порту 8080).
1). Устанавливаем mod_python для Apache:
sudo apt-get install libapache2-mod-python

2). Настраиваем виртуальный хост для доступа к Trac через домен trac.example.com:
sudo nano -w /etc/apache2/sites-available/trac

Примерное содержание конфигурационного файла:

<VirtualHost Ваш_IP:8080>
DocumentRoot "/var/trac"
ServerName trac.example.com
<Location />
# настройка окружения для Trac
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /var/trac/trac.example.com
PythonOption TracUriRoot /
</Location>
<LocationMatch /login>
# ограничение доступа к Trac (паролируем доступ стандартными средствами Apache. Также #обратите внимание, что для авторизации в системе Trac используется отдельный файл, вместо #файла авторизации для доступа к svn, хотя это не принципиально и можно было бы указать один и #тот же файл. Здесь нужно руководствоваться исключительно соображениями безопасности, а #также политикой распределения прав для пользователей)
AuthType Basic
AuthName "Trac Server on Debian Lenny"
AuthUserFile /etc/apache2/trac.passwd
Require valid-user
</LocationMatch>
</VirtualHost>

3). Создаем пользователей, имеющих доступ к Trac через браузер:
sudo htpasswd -c /etc/apache2/trac.passwd some_user
sudo htpasswd /etc/apache2/trac.passwd some_user2

4). В файле /etc/apache2/apache2.conf комментируем строки, относящиеся к виртуальному хосту trac.example.com.

5). Подключаем виртуальный хост с Trac и перезапускаем Apache:
sudo a2ensite trac
sudo /etc/init.d/apache2 restart

После проделывания вышеописанных манипуляций Trac будет доступен по адресу http://trac.example.com. Доступ к svn-репозитрию будет осуществляться по адресу http://trac.example.com/svn/repo_1. Не забудьте только, что вместо example.com везде следует подставлять имя своего домена 2-го уровня.

Да, и напоследок: при загрузке данных в репозиторий Subversion через модуль WebDAV некоторые файлы(как правило, имеющие расширения, показывающие, что это архив или изображение) при загрузке могут вызвать появление ошибки 405. Эту проблему должна решить замена протокола http на https при работе с репозиторием.

отсюда

Комментарии (0) Пинги (0)

Пока нет комментариев.


Leave a comment

 

Trackbacks are disabled.