DTop CMS - система управления контентом
Текущая версия: 3.4.1



© 2002-2013

Статья опубликована: 2012.01.22

FreeBSD, установка, настройка subversion, создание репозитория и проекта в нем.


На этой страничке рассказывается как установить и настроить свой subversion сервер на компьютере под управлением FreeBSD. Также здесь описан процесс создания репозитория и одного проекта. В качестве фронтенда использован веб-сервер Apache с модулями mod_dav_svn и mod_authz_svn, доступ к репозиториям настроен через отдельный виртуалхост. Если у вас не установлен Apache, то можете использовать статьи "Установка и настройка веб-сервера Apache версии 2.2" и "Мультисайтовый веб-сервер на основе Apache". Apache из данной статьи работает с MPM itk, не обращайте внимания, если у вас используется другой MPM, здесь описаны только общие настройки виртуалхоста, директивы своего MPM можете добавить самостоятельно.

  • Использованные версии ПО:
    # uname -sr
    FreeBSD 8.2-STABLE
    
    # pkg_info | grep subversion
    subversion-1.7.2    Version control system
    
    # pkg_info | grep apache
    apache-itk-2.2.21   Version 2.2.x of Apache web server with itk MPM.
    

  • Apache

    Установка и настройка веб-сервера Apache версии 2.2
    Мультисайтовый веб-сервер на основе Apache

    Важно! Apache должен быть собран с модулем mod_dav:
    [X] DAV                   Enable mod_dav
    

  • Subversion

    - адрес сайта: http://svn.yourdomain.ru
    - директория репозитория: /home/user/svn
    - директория нашего проекта в репозитории: /home/user/svn/first_project
    - директория, где хранятся файлы проекта: /home/user/first_project_files

    Из соображений безопасности, мы даем доступ ко всему репозиторию через сеть только пользователям, логин и пароль которых есть в файле /home/user/svn/svn-auth-file. Также, мы можем задавать возможность чтения и записи файлов проектов для разных пользователей при помощи файла /home/user/svn/svn-access-file.

    Это набор для одного виртуалхоста. Проектов в репозитории может быть сколько угодно, с каждым можно работать отдельно.


  • Установка
    # cd /usr/ports/devel/subversion
    # make install clean
    
    В опциях выбираем:
    [X] P4_STYLE_MARKERS   Perforce-style conflict markers
    [X] ENHANCED_KEYWORD   Enhanced svn:keyword support
    [X] FREEBSD_TEMPLATE   FreeBSD Project log template
    [X] MOD_DAV_SVN        mod_dav_svn module for Apache 2.X
    [X] NEON               WebDAV/Delta-V repo access module (neon)
    [ ] SERF               WebDAV/Delta-V repo access module (serf)
    [ ] SASL               SASL2 authorization support
    [X] BDB                Berkeley DB (4 or 5) repository backend
    [ ] MAINTAINER_DEBUG   Build debug version
    [ ] SVNSERVE_WRAPPER   Enable svnserve wrapper
    [ ] SVNAUTHZ_VALIDATE  install svnauthz-validate
    [ ] STATIC             Build static version (no shared libs)
    [ ] GNOME_KEYRING      Build with GNOME Keyring auth support
    [ ] KDE_KWALLET        Build with KDE KWallet auth support
    [ ] BOOK               Install the Subversion Book
    

  • Создание репозитория и проекта

    создаем директорию репозитория:
    # mkdir -p /home/user/svn
    
    создаем проект:
    svnadmin create /home/user/svn/first_project
    
    добавляем в проект файлы:
    # cd /home/user/first_project_files
    # svn import ./ file:///home/user/svn/first_project --message 'Initial Layout'
    
    поменяйте владельца и группу для файлов и репозитория на пользователя и группу, под которыми работает виртуалхост, если это необходимо:
    # chown -R user:group /home/user/first_project_files
    # chown -R user:group /home/user/svn
    

  • Настройка виртуалхоста Apache

    Внимание! здесь даны только директивы для subversion, все остальное (логи, пользователь-группа под которыми работает виртуалхост и прочее) - добавляйте сами в зависимости от ваших конфигураций.
    <VirtualHost *:80>
            ServerName      svn.yourdomain.ru
            ServerAdmin     support@yourdomain.ru
    
            <Location />
                    DAV svn
                    SVNReposName            "Subversion Repository"
                    SVNParentPath           /home/user/svn/
                    SVNListParentPath       on
    
                    AuthzSVNAccessFile      /home/user/svn/svn-access-file
    
                    AuthType                Basic
                    AuthName                "Repository Area"
                    AuthUserFile            /home/user/svn/svn-auth-file
                    Require                 valid-user
    
                    Order allow,deny
                    Allow from all
            </Location>
    
    </VirtualHost>
    
    описание директив внутри <Location /> .. </Location>

    DAV svn - говорим апачу, что нужно использовать subversion
    SVNReposName - название репозитория
    SVNParentPath - корневая директория репозитория
    SVNListParentPath - позволяем просматривать список проектов из корневой директории через броузер

    AuthzSVNAccessFile - файл с правами доступа (read,write) к файлам проектов

    AuthType, AuthName, AuthUserFile, Require - стандартные директивы Apache для ограничения доступа
    Order allow,deny
    Allow from all
    
    обязательно добавьте этот блок, иначе при попытке доступа к репозиторию через сеть получите ошибку 403 - Forbidden!


  • /home/user/svn/svn-auth-file - файл для доступа через сеть

    первый пользователь:
    # htpasswd -cmb /home/user/svn-auth-file USERNAME PASSWORD
    
    добавление новых пользователей:
    # htpasswd -mb /home/user/svn-auth-file USERNAME PASSWORD
    

  • /home/user/svn/svn-auth-file - права доступа к файлам проектов
    [/]
    USER1 = rw
    USER2 = r
    
    USER1 и USER2 берутся из файла /home/user/svn-auth-file.
    [/] - доступ ко всем проектам репозитория
    r - пользователь может читать файлы
    rw - пользователь может читать и записывать файлы


  • Перезапуск Apache
    # /usr/local/etc/rc.d/apache22 restart
    

  • Проверяем:

    Через броузер: http://svn.yourdomain.ru - сайт попросит ввести пользователя и пароль, после чего вы увидите список директорий проектов репозитория (в нашем случае только first_project)