[[Установка Subversion на Ubuntu Server 8.10]]

Ubuntu

Установка Subversion на Ubuntu Server 8.10

Установка пакета

sudo apt-get install subversion

Создание директории для svn репозиторий

sudo mkdir /home/svn

Создание пользователя subversion и назначение прав

sudo useradd subversion
sudo usermod -s /bin/false subversion
sudo passwd -l subversion
sudo chown subversion:subversion -R /home/svn/
sudo chmod 750 /home/svn/

Создание тестового репозитория test

sudo -u subversion mkdir /home/svn/test
sudo -u subversion svnadmin create /home/svn/test/
Команда svnadmin create - создаст в папке test необходимые конфигурационные файлы

Настройка доступа по SVN протоколу

При использовании svn протокола, используется собственный сервер svnserve
Настройка прав доступа

sudo nano /home/svn/test/conf/svnserve.conf

В минимальном варианте настроек

svnserve.conf

### Права для не авторизованных пользователей
#anon-access = none
anon-access = read
### Права для авторизованных
auth-access = write

### Файл с пользователями
### По умолчанию в той же директории
password-db = passwd

Настройка пользователей. Пользователь user1 с паролем 123

sudo nano /home/svn/test/conf/passwd

passwd

[users]
user1 = 123

В данных конфигах не допускается наличие пробелов в начале строки перед параметром

Запуск сервера (можно добавить в автозагрузку для запуска вместе с системой)

sudo -u subversion /usr/bin/svnserve -d -r /home/apache/prostor/svn/
  • d : в режиме демона
  • r : указывает root директорию для svnserve




Настройка доступа по HTTP протоколу

Активируем модуль

sudo a2enmod dav

Установка mod_svn

sudo apt-get install libapache2-svn

Рестарт

sudo /etc/init.d/apache2 restart

После благополучного рестарта создаем хост

sudo nano /etc/apache2/sites-available/svn-host

Пример 1

svn-host

<VirtualHost *:80>
        ServerAdmin admin@mydomen.ru
        ServerName  svn.mydomen.ru
        CustomLog /home/apache/logs/svn.access.log common
        ErrorLog  /home/apache/logs/svn.error.log

 <Location />
        DAV svn
        SVNPath /home/svn/
        AuthType Basic
        AuthName "SVN Repositories"
        AuthUserFile /home/svn/.auth


        Require valid-user
        # Если хотим открыть гостевой доступ для чтения
        # заменить на:
        # <LimitExcept GET PROPFIND OPTIONS REPORT>
        # Require valid-user
        # </LimitExcept>
 </Location>
</VirtualHost>

Пример 2

С расширенной настройкой прав.
Предположим в репозитории есть папка в которую имеет доступ только пользователь admin, так же разрешен гостевой доступ

svn-host

<VirtualHost *:80>
        ServerAdmin admin@mydomen.ru
        ServerName  svn.mydomen.ru
        CustomLog /home/apache/logs/svn.access.log common
        ErrorLog  /home/apache/logs/svn.error.log

 <Location />
        DAV svn
        SVNPath /home/svn/
        AuthType Basic
        AuthName "SVN Repositories"
        AuthUserFile /home/svn/.auth

        <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
        </LimitExcept>

        AuthzSVNAccessFile /home/svn/conf/authz

 </Location>
</VirtualHost>
Редактируем файл с описанием прав доступа,

sudo nano /home/svn/test/conf/authz

authz

...
# Права на корневую директорию
[/]
# Всем доступ для чтения
* = r
# Полный доступ админу
admin = rw
[/admin-folder]
# Нужно запретить всем доступ, иначе папка унаследует права от родителя
* =
# и разрешить доступ админу, так как предыдущей строкой мы закрыли всем доступ
admin = rw

...

Прочие параметры

Параметр Описание
SVNIndexXSLT "/svnindex.xsl" Подключить таблицу стилей (для визуального оформления)
SVNParentPath /home/svn Указывает папку где искать репозитории
SVNListParentPath off Запретить обзор репозиториев если они указаны через SVNParentPath


Активируем хост

sudo a2ensite svn-host

Рестарт

sudo /etc/init.d/apache2 restart

Создаем файл с пользователями

sudo htpasswd -cm /home/svn/.auth admin

Для добавления последующих

sudo htpasswd -m /home/svn/.auth user1 

Теперь svn доступен по адресу svn.mydomen.ru.
Главное - для возможности записи в репозитории дать права apache на директорию /home/svn/

Установка WebSVN

WebSVN - это php веб менеджер для subversion

Установка основного пакета

sudo apt-get install websvn

Нажимаем yes в диалоговом окне и производим несложную настройку (после указания корневой директории для svn, в следующим окне предлагают указать путь для конкретного репозитория, если в этом нет необходимости лучше указать пустую сроку)
Далее идет настройка веб сервера.
Содержимое файла /etc/apache2/conf.d/websvn нужно закомментировать.
Что касается прав, в начале установки на домашнюю директорию были установлены права chown subversion:subversion -R /home/svn/
поэтому для доступа апача к этим файлам я использую apache2 с модулем apache2-mpm-itk, создаю файл для виртуального хоста с записью AssignUserId для пользователя и группы subversion

sudo nano /etc/apache2/sites-available/websvn 

websvn

<VirtualHost *:80>
       DocumentRoot /usr/share/websvn
       ServerName websvn.lan
       AssignUserId subversion subversion
 <Directory /usr/share/websvn>
        DirectoryIndex index.php
        Options FollowSymLinks
        Order allow,deny
        Allow from all
  <IfModule mod_php4.c>
        php_flag magic_quotes_gpc Off
        php_flag track_vars On
  </IfModule>
 </Directory>
</VirtualHost>

sudo chgrp subversion /etc/websvn/svn_deb_conf.inc


Вход по адресу http://websvn.lan

Для добавления репозиторий не находящейся в корневой директории, дописываются конфиги в файл /etc/websvn/svn_deb_conf.inc
$config->addRepository("Название", "file:///home/root/test2/");




Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
118 -3 = ?
 
howto/ubuntu/svn-ubuntu-8.10.txt · Последние изменения: 2012/06/03 21:52 (внешнее изменение)
Gentoo Linux Driven by DokuWiki