Установка 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/");
Обсуждение