Нам потребуется установить svn сервер.
sudo apt-get install subversion libapache2-svn
Поясню:
- subversion – svn сервер
- libapache2-svn – библиотека, которая добавляет модуль апача для его интеграции с svn
И на всякий случай уточню, что sudo означает, что команда запускается с права root’а. Вы можете в консоли предвариетльно просто написать su, ввести пароль и потом выполнять эту и последующие аналогичные команды без приставки sudo.
Теперь добавляем нового пользователя и группу SVN
sudo groupadd svn
sudo useradd -m -d /srv/svn/ -g svn svn
Тут первой строкой мы создали группу svn. А второй строкой мы создали пользователя svn и сразу добавили его в группу svn. Поясню про флаги команды useradd:
- -m -d /srv/svn – автоматическое создание домашнего каталога (флаг -m) и установка этого каталога как базового (-d) . В эту папку мы позже положим конфиги svn и репозитории так же будем тут размещать.
- -g svn— добавить нового пользователя в группу svn
- svn – имя пользователя
su – svn
mkdir /srv/svn/repositories/
mkdir /srv/svn/repositories/firstproject/
svnadmin create /srv/svn/repositories/firstproject/
Первой строкой мы перелогинились под пользователя svn. Затем создаём папку repositories. В этой папке будут храниться наши репозитории. Далее создали папку для нашего первого проекта. И наконец командой svnadmin create /srv/svn/repositories/firstproject/ мы создаём новый пустой репозиторий для нашего проекта по указанному пути.
Теперь создаём конфиги для нашего SVN сервера.
su – svn
mkdir /srv/svn/conf/
cd /srv/svn/conf/
touch apache.conftouch users-access-file
При помощи команды touch мы просто создаём новый пустой файл.
Теперь содержимое этих файлов:
/srv/svn/conf/apache.conf
<Location /svn/>
Allow from all
DAV svn
SVNParentPath /srv/svn/repositories/
# our access control policy
AuthzSVNAccessFile /srv/svn/conf/users-access-file
#try anonymous access first, resort to real
#authentication if necessary.
Satisfy Any
Require valid-user
# how to authenticate a user
AuthType Basic
AuthName «Subversion repository on yas-desktop»
AuthUserFile /srv/svn/conf/passwd
</Location>
Вкратце по директивам.
- SVNParentPath /srv/svn/repositories/ – указываем путь к репозиториям
- AuthzSVNAccessFile /srv/svn/conf/users-access-file – путь к файлу, в котором указывается какого пользователя к какому проекту и с какими правами пускать (ниже будет чуть подробнее)
- AuthUserFile /srv/svn/conf/passwd – в этом файле хранятся зашифрованные пароли пользователей. Этот файл мы чуть ниже создадим при помощи утилитки htpasswd.
/srv/svn/conf/users-access-file
[/]
* =
[firstproject:/]
yas = rw
Первыми двумя строками мы запрещаем доступ анонимам к репозиториям. Т.е. мы как быговорим: «всем (*) доступ к корню репозиториев ([/]) пустой (т.к. после знака равно мы ничего не указали. А если бы там было r, то это означает чтение; w – запись)».
А затем мы даём для пользователя yas доступ на чтение и запись к репозиторию.Подробнее про то, как можно задавать различные права для разных пользователей и как создавать для удобства группы пользователей читайте тут
Идём дальше. Чтобы пользователь yas получил туда доступ, ему будети предложено авторизоваться. Для этого надо установить для него пароль. А для этого мы создадим файл /srv/svn/passwd (мы указывали этот файл в apache.conf для авторизации) при помощи утилиты htpasswd
Создаём /srv/svn/conf/passwd
su svn
htpasswd -c -m /srv/svn/conf/passwd yas
по флагам:
- -m – метод криптования будт использован MD5
- -c – означает, что файл надо создать. Используйте этот флагш только для того, чтобы создать этот файл впервые. Далее для добавления пользхователей используйте команду
htpasswd -m /srv/svn/conf/passwd newusername
- /srv/svn/conf/passwd – путь к файлу, куда сохранять пароль
- yas – имя пользователя
После ввода этой команды вам будет предложено ввести два раза пароль для вашего пользователя.
Теперь нам надо, чтобы апач загрузил к себе наш конфиг apache.conf . Для этого в конфиг apache (как правило этого/etc/apache2/httpd.conf) добавляем строчку
Include /srv/svn/conf/apache.conf
Теперь делаем reload для apache:
sudo /etc/init.d/apache2 reload
На этом всё. Если всё сделано правильно, то ваши репозитории будут доступны по адресу http://localhost/svn/имя_репозитория/ Например http://localhost/svn/firstproject/ Ну и по сети соответственно ваши репозитории тоже могут быть доступны теперь.