본문 바로가기
운영체제/리눅스

리눅스 svn서버 설치 및 설정

by o테리o 2011. 5. 4.

[svn 구조]


사용자 삽입 이미지




[svn 설치]

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

[root]$ yum install subversion


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

사용자 삽입 이미지










[svn 설정 - 필수 설정]

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

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


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


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


권한을 설정하자. /svn/repos/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/repos/conf/passwd 의 내용을 모두 지우고, 아래처럼 입력. 


아래의 경우 id는 bage 이며, 암호는 xxxxx 가 된다.


[users]
bage= xxxxx


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


설정이 완료되고 svn checkout svn://(사용자 도메인)/repos 으로 접속하면 ID와 비밀번호를 입력하여 성공하면 "checked out revision 0" 이 나온다. 


#svn mkdir등 명령어를 사용하기 위해서 bash_profile 추가해야함

  맨 아래에 추가한다.

~]#vi .bash_profile


SVN_EDITOR=/usr/bin/vim

  export SVN_EDITOR


#source .bash_profile <-- 적용시킨다. 

아래와 같은 명령으로 : trunk, tags, brances 폴더를 만들어 준다. 

#svn mkdir svn://[ip]/repos/[mkdir]


A svn://195.168.152.25/repos/....

~

~

~

~

~


빠져나온다. :q

선택 : C 

루트계정 암호 , svn계정 , 암호 입력


SQLITE 어쩌구 에라가 난다면 svn버전과 sqlite버전이 맞지 않는 문제다. sqlite버전 업데이트 시켜죠야한다.

#yum install sqlite


list 명령으로 만든 폴더 확인 

#svn list svn://[ip]/repos/


여기서 잠깐!!!  [http://blog.jidolstar.com/82]지돌스타 

외부에서 우리가 설치한 SVN에 접근하기 위해서는 반드시 3690 포트가 열려 있어야 한다.

3690 포트가 열려있는지 확인하기 위해 다음과 같이 확인해보자

# nmap localhost -p1-9999
....(생략)
3690/tcp open  unknown
....(생략)
Nmap run completed -- 1 IP address (1 host up) scanned in 1.165 seconds

3690 포트가 없다면 방화벽을 의심해본다.

# vi /etc/oops-firewall/filter.conf
에서 TCP_ALLOWPORT에 3690을 추가한다.
그리고 firewall을 다시 실행한다.

# service oops-firewall restart


참고로 fedora 에서는 
방화벽설정 -> 그 외의 포트에서 3690포트 tcp프로토콜 svn서비스 추가하면 됨!

[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에 유용함)



윈도우에서 Linux SVN Server에 접속하고 사용해보자


Linux에서 SVN 서버를 구축했다. 

자신이 Linux에 SVN을 설치할 수 없어도 윈도우 상에서도 설치가 가능하다. 하지만 지금 주제와는 상관없는 이야기고, 일단 Linux에 SVN을 설치했으니 윈도우에서 접속해서 사용해보도록 한다. 

먼저 윈도우에서 SVN을 사용할 수 있도록 TortoiseSVN을 설치해야한다.

http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 
에 가면 쉽게 다운로드 받을 수 있다. 현재(2007-06-06) svn-1.4.3-setup.exe가 최신버전이다.

설치완료후 폴더를 하나 만들고 아래 그림과 같이 폴더를 선택후 오른쪽마우스를 선택하면 SVN 체크아웃이 나온다. 
사용자 삽입 이미지

체크아웃하고 아래와 같은 방법으로 저장소 URL을 입력한다. 그리고 확인 버튼을 누른다.
사용자 삽입 이미지

성공하면 아래와 같이 완료된다.

사용자 삽입 이미지

위에서 리비전:0이 나온것은 앞서 설명한 Linux SVN을 설치하고 만든 저장소가 최초의 것이기 때문이다. 앞으로 계속 커밋(commit)이 수행될 때 마다 리비전은 계속 증가한다. 

그럼 커밋(commit)을 수행해보자.
만든 폴더에 branches, tags, trunk 폴더(폴더에 대한 자세한 설명은 http://blog.naver.com/hbesthee/20031075569 를 참고)를 만든다.
그리고 아래 그림과 같이 TortoiseSVN에서 "+추가"를 선택한다.
사용자 삽입 이미지

그럼 메시지를 적는 란과 변경된 파일명이 뜬다. 메시지에는 변경되는 파일명에 대해 자세히 기록을 남긴다.

사용자 삽입 이미지

메시지를 적은뒤 확인을 누르면 사용자명과 암호를 입력하는 란이 나온다. 앞서 안녕리눅스에 SVN을 설치할 때 인증과정을 거치기 위해 conf설정에 대해 언급했다. 
사용자 삽입 이미지

정상적으로 인증과정을 거치면 아래와 같은 화면이 나오고, 리비전이 0에서 1로 바뀐다.

사용자 삽입 이미지