sudo apt update
sudo apt install subversion
폴더 경로는 본인이 생성하고 싶은 경로로 하며 필자는 /home/svn
로 지정하여 진행하였다.
# svn 폴더 생성
sudo mkdir -p /home/svn
# repository 생성
sudo svnadmin create /home/svn/저장소명
sudo groupadd svn
sudo chgrp svn /home/svn/
sudo chmod g+w /home/svn/
sudo usermod -a -G svn 계정명
저장소를 생성 후 여러 디렉토리가 생성되는데
authz, passwd, svnserve.conf 파일은 저장소를 생성 후 conf에 위치한다.
authz
파일을 열어 계정과 사용 권한을 추가한다.sudo vim /home/svn/저장소명/conf/authz
[/]
sangjong=rw
경로에 대한 권한을 설정한다.
[/] 일경우 repository의 전체 경로에 대해 권한을 부여한다.
계정과 권한은 계정명=rw
형식으로 추가한다.
r은 읽기, w는 쓰기이며 둘다 권한을 주려면 rw로 작성한다.
passwd
파일을 열어 계정 비밀번호를 추가한다.sudo vim /home/svn/저장소명/conf/passwd
[users]
sangjong=1234
svnserve.conf
vim 설정을 추가한다.svn 기본 설정 중 아래 내용 주석을 찾아 제거 후 설정을 저장한다.
sudo vim /home/svn/저장소명/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
sudo svnserve -d -r /home/svn/저장소명
서버가 재시작되거나 하면 수동으로 svn을 시작해야 하는 불편하므로
initialization script를 작성하여 적용한다.
/etc/init.d
로 가서 svnserve라는 파일을 서비스로 등록한다.
sudo vim /etc/ini.d/svnserve
아래 해당 내용을 복사 후 붙여넣는다.
#! /bin/sh
### BEGIN INIT INFO
# Provides: svnserve
# Required-Start: $local_fs $syslog $remote_fs
# Required-Stop: $local_fs $syslog $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start svnserve
### END INIT INFO
# Author: Michal Wojciechowski <odyniec@odyniec.net>
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="svnserve"
NAME=svnserve
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-d -r /home/svn/"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
[ -x "$DAEMON" ] || exit 0
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
. /lib/init/vars.sh
. /lib/lsb/init-functions
do_start()
{
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
}
do_stop()
{
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
rm -f $PIDFILE
return "$RETVAL"
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
restart|force-reload)
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
exit 0
위 파일에서
DAEMON_ARGS="-d -r /home/svn/"
항목을
본인이 레포지토리를 생성한 폴더 경로로 작성하여 esc
,wq!
저장 한다.
svnserve파일이 작성 완료했으면 권한 설정과 서버 재시작 후 자동 실행하도록 설정한다.
sudo chmod +x /etc/init.d/svnserve
sudo update-rc.d svnserve defaults
아래 명령어를 통해 service를 등록한 명령어를 갱신한다.
sudo systemctl daemon-reload
이제 svn을 시작하거나 중지시킬때 아래 명령으로 사용할 수 있다.
sudo /etc/init.d/svnserve start
or
#시작
sudo systemctl start svnserve.service
#상태확인
sudo systemctl status svnserve.service
#중지
sudo systemctl stop svnserve.service
#재시작
sudo systemctl restart svnserve.service