Subversion Home: http://subversion.tigris.org/project_packages.html
참고자료:





[svn 구조]


사용자 삽입 이미지




[svn 설치]

먼저 subversion(svn)을 설치하자.

[root]$ yum install subversion

정상적으로 설치되었는지 확인하자.

사용자 삽입 이미지









[svn 설정 - 필수 설정]

사용자 계정 svn을 생성하고, svn 저장소를 생성하자.
아래의 경우 저장소(repository는 /svn 이다.

[root]$ mkdir /svn
[root]$ chown -R root:root /svn

그리고 프로젝트폴더를 생성하자. 아래의 경우 프로젝트 이름이 project 가 된다.

[root]$ svnadmin create --fs-type fsfs /svn/project

권한을 설정하자. /svn/project/conf/svnserve.conf 의 주석을 제외한 부분이 아래와 같아야 한다.,
realm 은 리파지토리의 도메인명(외부에서 볼 때의 이름)이라고 할 수 있다.

[general]
anon-access = none
auth-access = write
password-db = passwd
# authz-db = authz
realm = bage
[sasl]
# use-sasl = true
#min-encryption = 0
#max-encryption = 256

계정을 추가하자. /svn/project/conf/passwd 의 내용을 모두 지우고, 아래처럼 입력.
아래의 경우 id는 bage 이며, 암호는 xxxxx 가 된다.

[users]
bage= xxxxx

* 만약 개인용 서버가 아니라면 sasl을 이용하여 인증하는 방식을 이용하자. 왜냐햐면 passwd 방식(위 방식)은 암호를 누구나 확인할 수 있어서 내 리파지토리에 다른 사람이 접근할 가능성이 높기 때문이다.


[svn 설정 - 리눅스 서비스 등록]

/etc/sysconfig/subversion 을 아래 내용으로 만들자.
OPTIONS="--threads --root /svn"  에서 /svn은 저장소 위치이다.

# Configuration file for the Subversion service
#
# To pass additional options (for instace, -r root of directory to # server) to the svnserve binary at startup, set OPTIONS here.
#
#OPTIONS=
OPTIONS="--threads --root /svn"

/etc/init.d/subversion 를 만들자.
SYSCONFIG= 에 위에서 만든 파일의 경로를 적는다.

#!/bin/bash
#
#   /etc/rc.d/init.d/subversion
#
# Starts the Subversion Daemon
#
# chkconfig: 2345 90 10
# description: Subversion Daemon

# processname: svnserve

source /etc/rc.d/init.d/functions

[ -x /usr/bin/svnserve ] || exit 1

### Default variables
SYSCONFIG="/etc/sysconfig/subversion"

### Read configuration
[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"

RETVAL=0
prog="svnserve"
desc="Subversion Daemon"

start() {
        echo -n $"Starting $desc ($prog): "
   daemon $prog -d $OPTIONS
   RETVAL=$?
   [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
   echo
}

stop() {
   echo -n $"Shutting down $desc ($prog): "
   killproc $prog
   RETVAL=$?
   [ $RETVAL -eq 0 ] && success || failure
   echo
   [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
   return $RETVAL
}

case "$1" in
  start)
   start
   ;;
  stop)
   stop
   ;;
  restart)
   stop
   start
   RETVAL=$?
   ;;
  condrestart)
        [ -e /var/lock/subsys/$prog ] && restart
   RETVAL=$?
   ;;
  *)
   echo $"Usage: $0 {start|stop|restart|condrestart}"
   RETVAL=1
esac

exit $RETVAL

서비스로 등록하자.

[root]$ chmod +x etc/init.d/subversion
[root]$ cd /etc/init.d/
[root]$ chkconfig --add subversion && chkconfig subversion on

[svn 서버 시작(서비스모드)]
서비스를 시작하자.
[root]$ service subversion start

서비스상태와 등록 여부를 확인하자.
사용자 삽입 이미지

[svn 서버 시작(데몬모드)]
[root]$ svnserve -d -r /svn


[svn 접속 테스트]
클라이언트 접속 테스트를 하자.

[참고] 이클립스용 SVN 플러그인
subversive -> 추천(다음 이클립스에 포함될 예정)
subclipse -> 비추천(버그 많음)

[참고] 윈도우용 SVN 클라이언트
tortoiseSVN -> 추천(svn 폴더관리 및 cleanup에 유용함)


[svn 설정- sasl 인증 이용 (접속암호의 암호화)]
암호를 passwd 파일에 저정하는 것은 매우 위험하다.
sasl을 이용하여 암호화 하여 저장하는 방식을 이용해 보자.

/svn/project/conf/svnserve.conf 파일에서 아래 2줄을 찾아 passwd 부분은 주석을 sasl부분은 true로 변경하자.
[general]
anon-access = none
auth-access = write
# password-db = passwd
# authz-db = authz
realm = bages
[sasl]
use-sasl = true
#min-encryption = 0
#max-encryption = 256

sasldb에 계정을 추가해야 한다. 위와 같은 경우 아래처럼 한다.
도메인이 bages 에 소속되는 계정 bage을 생성하는 명령이다.
( 만약 아래 명령이 없다고 나오면, "yum install cyrus-sasl*" 명령을 통하여 관련 패키지를 먼저 설치하자.)
[root]$ saslpasswd2 -c -u bages bage
[root]$ sasldblistusers2
tomcat@tomcats: userPasswd

확실히 하기 위해 passwd 파일을 아예 지워버리자.
앞으로는 sasldb를 이용하므로. ^^
[root]$ rm -f /svn/project/conf/passwd

이제 서버 관리자도 암호를 확인할 수 없다.
마음 편하게 svn을 사용하자.

 


Posted by BAGE