Поюзав немного наш svn сервер командами, поняли что хочется какой-то красоты и порядка. Вот решили погуглить на эту тему, кто что пишет..
Вау!! Вариантов море, что же выбрать? В виду того что на сервере уже есть Apache, php, python, mysql то наш вариант проста и доступность — svn + apache + (какая-то web-морда, например: trac).
Задумали, значит нужно реализовать то самое «задуманное» 😉

прежде всего пришлось перепроверить и пересобрать apache с такими вот модулями:


THREADS
BDB
DAV
DAV_FS

Для тех кто не знает как это сделать, набросаю ниже.

pin# cd /usr/ports/www/apache22
pin# make config

выставляем флаги,

pin# make reinstall clean

если не переставилось, тогда

pin# make deinstall && make install clean

пересобираем subversion с модулями:

MOD_DAV_SVN
NEON
BDB

ставим морду «trac», mod_python и всё что понадобится для корректной работы морды с базой:

pin# cd /usr/ports/devel/py-subversion
pin# make install clean
pin# cd /usr/ports/www/mod_python3
pin# make install clean
pin# cd /usr/ports/www/trac
pin# make install clean
pin# cd /usr/ports/databases/py-MySQLdb
pin# make install clean

После сборки всего этого в тарелку (тоесть сервер), нужно вкусно приготовить 🙂 (тоесть сконфигурить). Так сказать: берём нож, колбасу, хлеб, масло… Брррр, задумался… Это!! Короче нужно всё скрестить в единное целое, как ежа со змеёй, что бы получился метр живой и колючей проволки 🙂

Подкрепился…. Поехали дальше 😉
Наливаем чашку кофе и садимся за комп, продолжаем енергично попивая кофе конфигурять демоны и модули 😉

Apache:

pin# cat /usr/local/etc/apache22/httpd.conf | grep svn
должно показать отакое:

LoadModule dav_svn_module libexec/apache22/mod_dav_svn.so
LoadModule authz_svn_module libexec/apache22/mod_authz_svn.so

Если это не так, нужно добавить недостающее в конфиг apacha.

pin# cat cat /usr/local/etc/apache22/httpd.conf | grep python

LoadModule python_module libexec/apache22/mod_python.so

Дальше, дело на любителя.. Одни делают всё в глобальном конфиге, другие же выностя в includs файлы, а также виртуальные хосты можно использовать, а можно и без них обойтись. Я предпочитаю для упрошения читабельности всё по отдельности — мухи отдельно, катлеты отдельно.

Я раскоментил в конфиге данные строки, разрешив виртуальные хосты: (хотя на самом деле, у меня уже это было сделано немного ранее)

Include etc/apache22/extra/httpd-autoindex.conf
Include etc/apache22/extra/httpd-vhosts.conf
Include etc/apache22/extra/httpd-manual.conf
Include etc/apache22/extra/httpd-default.conf

приступим к правке хостов:

pin# edit /usr/local/etc/apache22/extra/httpd-vhosts.conf

<VirtualHost *:80>
ServerName svn.domain.com
ErrorLog «/usr/local/www/svn/errors/svn-error.log»
CustomLog «/usr/local/www/svn/errors/svn-access.log» common
Alias /manage /usr/local/www/svn/trac/
<Directory /usr/local/www/svn/trac/>
<Location />
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /usr/local/www/svn/trac/
PythonOption TracUriRoot /
</Location>
<Location /login>
AuthType Basic
AuthName «Trac Auth»
AuthUserFile /usr/local/etc/access/svn-passwd
Require valid-user
</Location>
</Directory>

<Location />
DAV svn
SVNListParentPath on
SVNParentPath /usr/local/www/svn/repositories
AuthType Basic
AuthName «SVN Server»
AuthUserFile /usr/local/etc/access/svn-passwd
AuthzSVNAccessFile /usr/local/etc/eccess/svn-access
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
</VirtualHost>

Хост svn.domain.com, естественно был предварительно добавлен в DNS.

Конфигурирация mysql:

pin# mysql -uroot -p
mysql> CREATE DATABASE trac DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> GRANT ALL PRIVILEGES ON trac.* TO trac@localhost IDENTIFIED BY ‘указать_пароль’;

Теперь, если ещё не создали, досоздаём используемые директрории, о которых говорилось в конфиге apache и рестартуем apache и svn. В результате мы получаем управление проэктами через веб морду и доступ к нашему svn серверу с авторизацией.

PS. В процессе юзания и испытания выявил некоторые глюки, связанные с правами UNIX пользователя, даже создавал запуск виртуального хоста от имени svn:svn, в результате всё равно на некоторые файлы при выполнении неких операций — сервер ругался, поэтому пришлось сделать так:
pin# chown -R www:www /usr/local/www/svn
pin# cd /usr/local/www/svn/
pin# chmod 777 /usr/local/www/svn/repositories
Потом, снова испытывая возможности этой связки, открыл в консоли лог хоста svn и просматривал появившиеся ошибки, соответственно держа в руках напильник 😉

pin# tail -f /usr/local/www/svn/errors/svn-error.log

Итак, собственно что мы получили??

зайдя по ссылке: http://svn.domain.com, авторизуемся и получаем доступ к нашему репозиторию, а зайдя по ссылке: http://svn.domain.com/manage, получаем управление им же, через web.

Приятной вам работы с SUBVERSION!!

Напоминаю всем копирующим мой контент о существовании закона "Об авторском праве".
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:

http://noted.org.ua/?p=45


Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)

Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455

На данной странице нет комментариев, возможно они закрыты. Если Вы хотите оставить свой комментарий, перейдите на специально созданный раздел

Add your comment now

You must be logged in to post a comment.