#SVN 구조
#SVN 설치
- svn(subversion) 설치 명령
[root@localhost ~]# yum install subversion
- 설치 확인 명령
[root@localhost ~]# yum list subversion
#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
- 동작 확인
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/