SVN или Subversion – централизованная система контроля версий, подробнее читайте на Википедии. Наибольшее распространение приобрела среди разработчиков для хранения версий программного кода, также я встречал применение для хранения версий конфигурационных файлов и документов (этот встречается крайне редко, существует специальное ПО для этого).
Давайте рассмотрим, как быстро развернуть данных сервер, прикрутить к нему WEB-интерфейс и создать репозиторий.
Как установить Web-сервер Apache и использовать виртуальные хосты (VirtualHost), я уже описывал ранее. Организовывать доступ к ВЕБ-интерфейсу SVN я буду для адреса: svn.exmpl.org.
1. Установка необходимых пакетов
cd /usr/ports/devel/subversion
make config
Нам необходимо отметить следующие пункты
│ │+[x] BDB Berkeley DB support │ │
│ │+[x] DOCS Build and/or install documentation │ │
│ │+[x] FREEBSD_TEMPLATE FreeBSD Project log template │ │
│ │+[ ] MAINTAINER_DEBUG Build debug version │ │
│ │+[x] NLS Native Language Support │ │
│ │+[ ] SASL SASL authentication support │ │
│ │+[x] SERF WebDAV/Delta-V (HTTP/HTTPS) repo access module │ │
│ │+[ ] STATIC Build static version (no shared libs) │ │
│ │+[x] SVNSERVE_WRAPPER Enable svnserve wrapper (umask setter) │ │
│ │+[ ] TEST Run subversion test suite │ │
│ │+[x] TOOLS Install several tools │ │
make install clean
cd /usr/ports/www/mod_dav_svn/
make install clean
2. Создание виртуального хоста в Apache
mkdir /data/www/vhosts/svn.exmpl.org/
mkdir /data/www/vhosts/svn.exmpl.org/www/
chown -R www:www /data/www/vhosts/svn.exmpl.org/
mkdir /var/log/apache24/svn.exmpl.org
Создаем файл конфигурации виртуального хоста
/usr/local/etc/apache24/Includes/svn.exmpl.org.conf
<VirtualHost *:80>
ServerAdmin admin@exmpl.org
DocumentRoot "/data/www/vhosts/svn.exmpl.org/www/"
ServerName svn.exmpl.org
ServerAlias www.svn.exmpl.org
ErrorLog "/var/log/apache24/svn.exmpl.org/error_log"
CustomLog "/var/log/apache24/svn.exmpl.org/access_log" common
#Загружаем необходимые для работы модуля Apache
LoadModule dav_module libexec/apache24/mod_dav.so
LoadModule dav_fs_module libexec/apache24/mod_dav_fs.so
LoadModule dav_svn_module libexec/apache24/mod_dav_svn.so
LoadModule authz_svn_module libexec/apache24/mod_authz_svn.so
#Если не добавить этот блок, будет засыпать ошибками
Redirect 404 /favicon.ico
<Location /favicon.ico>
ErrorDocument 404 "favicon does not exist"
</Location>
<location />
DAV svn
# разрешает выдавать перечень всех доступных хранилищ в папке SVNParentPath
SVNListParentPath on
SVNParentPath /data/svn/
# включение базовой аутентификации, т.е. имя_пользователя/пароль
AuthType Basic
AuthName "Subversion repository"
#Файл, где хранятся данные для авторизации
AuthUserFile /data/svn/svn-passwd
#Распределение привилегий пользователей
AuthzSVNAccessFile /data/svn/svn-access
# предписывает, что только пользователям, предоставившим правильные имя_пользователя/пароль,
# будет разрешён доступ к URL
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</location>
</VirtualHost>
3. Создание репозитория
Создаем пользователя svn
# adduser
Username: svn
Full name: SVN
Uid (Leave empty for default): 3690
Login group [svn]:
Login group is svn. Invite svn into other groups? []:
Login class [default]:
Shell (sh csh tcsh nologin) [sh]: nologin
Home directory [/home/svn]: /data/svn
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]: no
Username : svn
Password : <disabled>
Full Name : SVN
Uid : 3690
Class :
Groups : svn
Home : /data/svn
Home Mode :
Shell : /usr/sbin/nologin
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (svn) to the user database.
Add another user? (yes/no): no
Goodbye!
Собственно, создание репозитория
svnadmin create /data/svn/test_repos
Создаем пользователя для доступа к репозиторию
htpasswd -cm /data/svn/svn-passwd admin
New password:
Re-type new password:
Adding password for user admin
Для добавления новых пользователей используем команду htpasswd, без ключа -c (этот ключ указывает, что нужно создать новый файл, если он существует, старая версия будет удалена)
htpasswd -m /data/svn/svn-passwd user
Создаём файл с привилегиями пользователей для репозитория. /data/svn/svn-access
# блок, содержащий группы.
[groups]
# группы maingroup и testgroup перечисляем пользователей, которые в них входят
#перечисляем пользователей через запятую
maingroup = admin
testgroup = testuser1, testuser2
# корень нашего SVN сервера
[/]
# доступ для анонимных пользователей на чтение.
* = r
# директория проекта test_repos
[test_repos:/]
* = r
# группе maingroup глобально разрешено чтение/запись
@maingroup = rw
# директория maingroup
[test_repos:/maingroup]
# запрет для всех пользователей.
* =
# разрешён доступ на чтение/запись только группе maingroup
@devel = rw
#Директория для тестов
[test_repos:/test]
#Запрещаем анонимным пользователям все
* =
#Группе testgroup доступ на чтение/запись, а пользователю admin только на чтение
@testgroup = rw
admin = r
Перезагружаем конфигурацию Apache
/usr/local/etc/rc.d/apache24 reload
Если нигде не допущено ошибок, мы сможем зайти на наш сервер через веб-интерфейс: svn.exmpl.org и подключиться к нему через клиентские приложения, например, RapidSVN, или IDE, которыми вы пользуетесь.
В дальнейшем для создания новых репозиториев используйте команду
svnadmin create /data/svn/new_repos
И описывайте права доступа для в пользователей в файле /data/svn/svn-access
Наиболее полную информацию о конфигурации сервера можно получить
http://svnbook.red-bean.com/en/1.7/svn.serverconfig.httpd.html
и на официальном сайте проекта
https://subversion.apache.org/
Комментариев нет:
Отправить комментарий