System/OS

SVN(Subversion) 설치와 설정 (sasl 인증 적용 포함)

by hooni posted Sep 11, 2014
?

Shortcut

PrevPrev Article

NextNext Article

ESCClose

Larger Font Smaller Font Up Down Go comment Print

#SVN 구조

svn.gif




#SVN 설치


- svn(subversion) 설치 명령

[root@localhost ~]# yum install subversion


- 설치 확인 명령

[root@localhost ~]# yum list subversion


svn01.jpg




#SVN 설정

저장소와 프로젝트 디렉토리를 생성한다.


1. svn 저장소 생성 (예 /home/svn 경로의 저장소)

[root@localhost ~]# mkdir /home/svn

[root@localhost ~]# chown -R root:root /home/svn




2. 프로젝트 디렉토리 생성

[root@localhost ~]# svnadmin create --fs-type fsfs /home/svn/cocoball




3. 기본 권한 설정과 계정 추가

설정 파일(/home/svn/cocoball/conf/svnserve.conf)을 아래 내용처럼 수정한다.

[general]
anon-access = none
auth-access = write
password-db = passwd
# authz-db = authz
realm = cocoball

[sasl]
# use-sasl = true
#min-encryption = 0
#max-encryption = 256


계정 관리 파일(/home/svn/cocoball/conf/passwd)의 내용을 아래 내용처럼 수정한다.

[users]
picomax=haha123

개인용 서버일 경우 위의 예제처럼 passwd 파일에서 계정=암호 를 추가해서 사용해도 되지만,

그렇지 않은 경우 sasl을 이용하여 암호를 DB에서 관리하는 것이 좋다.

passwd 파일에 접근하여 계정 정보를 악용할 수 있기 때문이다.




4. SASL 인증을 이용한 계정 관리

계정 정보(암호)를 passwd 파일에 저장하는 것은 매우 위험하다.

설정 파일(/home/svn/cocoball/svnserve.conf)에서,

아래와 같이 passwd 부분은 주석(또는 삭제) 처리 하고 sasl 부분을 true 로 변경한다.

[general]
anon-access = none
auth-access = write
# password-db = passwd
# authz-db = authz
realm = cocoball

[sasl]
use-sasl = true
#min-encryption = 0
#max-encryption = 256

이제 sasldb에 계정을 추가해야 한다.

saslpasswd2 명령어로 계정을 추가/수정/삭제 하고, sasldblistuser2 명령어로 계정 정보를 확인 한다.

[root@localhost ~]# saslpasswd2 -c -u cocoball picomax

... (패스워드 설정 화면 생략) ...


[root@localhost ~]# sasldblistuser2

picomax@cocoball : userPasswd




5. 서비스(데몬) 실행 파일


1) 옵션 파일

서비스가 실행될 때 변수를 읽어오는 파일로 /etc/sysconfig 디렉토리에 명령파일과 같은 이름으로..

/etc/sysconfig/subversion 파일을 생성

# 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 /home/svn"


2) 서비스 실행 파일

#!/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


3) 서비스 등록

서비스로 등록하기 위해 아래와 같이 실행 권한을 적용한다.

[root@localhost ~]# chmod +x /etc/init.d/subversion

[root@localhost ~]# cd /etc/init.d/

[root@localhost ~]# chkconfig --add subversion && chkconfig subversion on


4) 서비스 시작

- 서비스 모드

[root@localhost ~]# service subversion start


- 데몬 모드

[root@localhost ~]# svnserve -d -r /home/svn


- 동작 확인

svn02.jpg




6. 접속 확인

# list 명령어로 확인

svn list svn://(IP or Domain)/cocoball/


[참고] 이클립스용 SVN 플러그인 

subversive -> 추천(다음 이클립스에 포함될 예정)

subclipse -> 비추천(버그 많음)


[참고] 윈도우용 SVN 클라이언트

tortoiseSVN -> 추천(svn 폴더관리 및 cleanup에 유용함)




7. 완료

완료 후 콘솔에서 trunk, tags, branches 디렉토리를 생성하고 체크아웃 하여 동작을 확인 한다.


# create trunk

svn mkdir svn://(IP or Domain)/cocoball/trunk


# create tags

svn mkdir svn://(IP or Domain)/cocoball/tags


# create branches

svn mkdir svn://(IP or Domain)/cocoball/branches


# checkout

svn checkout svn://(IP or Domain)/cocoball




8. 기타

콘솔에서 svn 명령을 사용하는 경우 에디터에 대한 환경변수를 지정해야 한다.

계정의 .bash_profile 파일에 아래 내용을 추가하면 VIM 을 사용하여 로그를 작성할 수 있다.

SVN_EDITOR=/usr/bin/vim
export SVN_EDITOR

바로 적용하기 위해 아래 명령을 실행하거나 로그아웃 후 다시 로그인 하면 된다.

[picomax@localhost ~]$ source .bash_profile



외부에서 SVN에 접근이 되지 않을 경우 3690 포트가 열려 있는지 확인해야 한다.

[root@localhost ~]# nmap localhost -p1-9999

....(생략)

3690/tcp open  unknown

....(생략)

Nmap run completed -- 1 IP address (1 host up) scanned in 1.165 seconds


3690 포트가 열려 있지 않다면 방화벽을 확인한다.

/etc/oops-firewall/filter.conf 파일에서

TCP_ALLOWPORT에 3690을 추가하고

firewall 을 다시 실행한다.


[root@localhost ~]# service oops-firewall restart


참고로 Fedora 에서는

방화벽설정 -> 그 외의 포트에서 3690 포트 tcp 프로토콜 svn 서비스 추가하면 된다.


[출처] http://projectresearch.co.kr/2007/06/04/centos-50%EC%97%90-subversionsvn-%EC%84%A4%EC%B9%98/