[Linux] Ubuntu SVN 설정

SANG JONG CHOI·2023년 4월 23일
0

Ubuntu 22.0.4 LTS

목록 보기
9/9

SVN 설치

1. 패키지 업데이트

sudo apt update

2. svn 설치

sudo apt install subversion

3. 폴더 생성 및 repository 생성

폴더 경로는 본인이 생성하고 싶은 경로로 하며 필자는 /home/svn로 지정하여 진행하였다.

# svn 폴더 생성
sudo mkdir -p /home/svn

# repository 생성
sudo svnadmin create /home/svn/저장소명

4. repository 권한 설정

4-1. svn 그룹을 만들고 권한 설정을 한다.

sudo groupadd svn
sudo chgrp svn /home/svn/
sudo chmod g+w /home/svn/
sudo usermod -a -G svn 계정명

4-2. svn 프로토콜(svn://)을 사용하기 위해서 계정과 비밀번호 설정을 한다.

저장소를 생성 후 여러 디렉토리가 생성되는데
authz, passwd, svnserve.conf 파일은 저장소를 생성 후 conf에 위치한다.

4-3. authz 파일을 열어 계정과 사용 권한을 추가한다.

sudo vim /home/svn/저장소명/conf/authz
[/]
sangjong=rw
  • 경로에 대한 권한을 설정한다.

  • [/] 일경우 repository의 전체 경로에 대해 권한을 부여한다.

  • 계정과 권한은 계정명=rw 형식으로 추가한다.

  • r은 읽기, w는 쓰기이며 둘다 권한을 주려면 rw로 작성한다.

4-4. passwd 파일을 열어 계정 비밀번호를 추가한다.

sudo vim /home/svn/저장소명/conf/passwd
[users]
sangjong=1234

4-5. svnserve.conf vim 설정을 추가한다.

svn 기본 설정 중 아래 내용 주석을 찾아 제거 후 설정을 저장한다.

sudo vim /home/svn/저장소명/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

4-6. 설정한 svnserve을 적용한다.

sudo svnserve -d -r /home/svn/저장소명

5. SVN service 등록

서버가 재시작되거나 하면 수동으로 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

[출처] : https://dejavuqa.tistory.com/12

profile
No error, No gain

0개의 댓글