Настройка SVN сервера на примере Ubuntu
В этой статье мы установим и настроим SVN сервер на OC Ubuntu 12.10 server Все действия в данной статье необходимо выполнять от пользователя root, для этого необходимо получит привилегии суперпользователя:
sudo su -
либо перед каждой командой писать:
sudo
Установка
apt-get install subversion
Создадим папку, в которой будет располагаться репозиторий:
mkdir -p /srv/svn/repo
Создадим сам репозиторий:
svnadmin create /srv/svn/repo
Добавим пользователя - владельца репозитория и от этого пользователя будет запущен даемон:
useradd subversion --create-home --home-dir /srv/svn --shell /sbin/nologin
Назначим ему права на папку репозитория:
chown -R subversion:subversion /srv/svn chmod -R ug+rw /srv/svn
При установке не создается стартовый скрипт SVN сервера, создаем его:
cat > /etc/init.d/svnserve << "EOF"
#!/bin/sh -e
# svnserve - brings up the svn server so anonymous users
# can access svn
# Get LSB functions
. /lib/lsb/init-functions
. /etc/default/rcS
SVNSERVE=/usr/bin/svnserve
SVN_USER=subversion
SVN_GROUP=subversion
SVN_REPO_PATH=/srv/svn
# Check that the package is still installed
[ -x $SVNSERVE ] || exit 0;
case "$1" in
start)
log_begin_msg "Starting svnserve..."
umask 002
if start-stop-daemon --start \
--chuid $SVN_USER:$SVN_GROUP \
--exec $SVNSERVE \
-- -d -r $SVN_REPO_PATH; then
log_end_msg 0
else
log_end_msg $?
fi
;;
stop)
log_begin_msg "Stopping svnserve..."
if start-stop-daemon --stop --exec $SVNSERVE; then
log_end_msg 0
else
log_end_msg $?
fi
;;
restart|force-reload)
"$0" stop && "$0" start
;;
*)
echo "Usage: /etc/init.d/svnserve {start|stop|restart|force-reload}"
exit 1
;;
esac
exit 0
EOF
Делаем его исполняемым:
chmod a+x /etc/init.d/svnserve
и добавляем в автозагрузку:
update-rc.d svnserve defaults
Настройка
Конфигурационный файл и файлы с пользователями и настройками доступа хранятся в папке conf в корне репозитория (в нашем примере это /srv/svn/conf)
Основной конфигурационный файл /srv/svn/conf/svnserve.conf:
[general]
# Доступ c анонимным доступом ("write", "read" или "none")
anon-access = none
# Доступ для авторизованых пользователей:("write", "read" или "none")
auth-access = write
# Имя файла с пользователями
password-db = passwd
# Имя файла с правами
authz-db = authz
Файл содержащий пользователей и пароли (пароли хранятся в открытом виде) /srv/svn/conf/passwd:
[users] user1 = password1 user2 = password2
Файл содержащий группы пользователей и права на репозиторий или на часть его /srv/svn/conf/athz:
# Группы [groups] group1 = user1,user2 # Права на корень # группе group1 только для чтения # пользователю user2 полный доступ # всем остальным запретить доступ [/] @group1 = r &user2 = rw * =
На этом настройка закончена, запустите cервис SVN для работы:
/etc/init.d/svnserve start
SVN сервер использует порт TCP 3690 - не забудьте открыть его на фаерволе.