Поюзав немного наш 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!!
Напоминаю всем копирующим мой контент о существовании закона "Об авторском праве".
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:
Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)
Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455
На данной странице нет комментариев, возможно они закрыты. Если Вы хотите оставить свой комментарий, перейдите на специально созданный раздел