Установка 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
В минимальном варианте настроек
### Права для не авторизованных пользователей #anon-access = none anon-access = read ### Права для авторизованных auth-access = write ### Файл с пользователями ### По умолчанию в той же директории password-db = passwd
Настройка пользователей. Пользователь user1 с паролем 123
sudo nano /home/svn/test/conf/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
<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, так же разрешен гостевой доступ
<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
... # Права на корневую директорию [/] # Всем доступ для чтения * = 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
<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/");
Обсуждение