더욱 자세한 사항은 http://www.pyrasis.com/main/Subversion-HOWTO 를 참고한다.
Apache로 말고 순수하게 svn:// 로 접속해서 사용할 수 있도록 만들고자 한다. svn://을 사용하면 Apache를 사용할때보다 더욱 빠르다고 한다.
먼저 SVN을 사용하기 위해서 저장소(Repository)를 만들어야 한다. 이 저장소는 프로젝트마다 하나씩 필요할 것이다. 난 /home/svn/에 저장소 root를 잡을려고 한다.
#mkdir /home/svn
그런 다음 만든 svn폴더로 가서 파일 시스템(버클리 DB를 사용할 수도 있다.)을 이용한 sample이라는 이름으로 저장소를 만든다.
#cd /home/svn
#svnadmin create --fs-type fsfs sample
/home/svn/sample/ 로 가서 ls를 하면 관련 파일들이 있으며 여기 있는 파일을 임의로 수정하게 되면 데이타를 다 잃어버릴 수도 있으니 주의하기 바란다.
이제 SVN을 실행한다. 실행하면 3690 포트가 열린다.
#svnserve -d -r /home/svn
테스트 하기 위해
#svn checkout svn://(서버 IP또는 도메인)/sample
checked out revision 0. 이 나오면 제대로 설정한 것이다. 현재상태는 누구나(Anonymous) 저장소에 접근해서 체크아웃, 커밋이 가능하다.
Svnserve에서 ID로 인증하기
Subversion 0.33.0 이후로 ID로 사용자 인증이 가능하게 되었다. 그래서 아까 만들어 놓은 저장소안에 /home/svn/sample/conf/svnserve.conf 파일을 찾아서 설정만 해주면 된다.
#vi /home/svn/sample/conf/svnserve.conf
### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository. (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)### Visit http://subversion.tigris.org/ for more information.
[general]### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
anon-access = none
auth-access = write
### The password-db option controls the location of the password
### database file. Unless you specify a path starting with a /,
### the file's location is relative to the conf directory.
### The format of the password database is similar to this file.
### It contains one section labelled [users]. The name and
### password for each user follow, one account per line. The
### format is
### USERNAME = PASSWORD
### Please note that both the user name and password are case
### sensitive. There is no default for the password file.
password-db = passwd
### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa. The default realm
### is repository's uuid.
realm = jidolstar's Repository
위
와 같이 설정하면 anon-access=none에 의해 아무나 read를 못하게 막는다. 만약 이부분이 read라면 아무나
들어와 읽을 수 있다. 그리고 auth-access=write는 ID로 인증된 사람만 쓰기 권한을 주게 된다.
password-db = passwd는 /home/svn/sample/conf/ 아래에 passwd 이름으로 ID를 만들 수 있다.
이것은 다음과 같이 만든다.
#vi /home/svn/sample/conf/passwd
[users]
sampleuser = password1234
설정이 완료되고 svn checkout svn://(사용자 도메인)/sample 으로 접속하면 ID와 비밀번호를 입력하여 성공하면 "checked out revision 0" 이 나온다.
여기서 잠깐!!!
외부에서 우리가 설치한 SVN에 접근하기 위해서는 반드시 3690 포트가 열려 있어야 한다.
3690 포트가 열려있는지 확인하기 위해 다음과 같이 확인해보자# nmap localhost -p1-9999
....(생략)
3690/tcp open unknown....(생략)
Nmap run completed -- 1 IP address (1 host up) scanned in 1.165 seconds3690 포트가 없다면 방화벽을 의심해본다.
# vi /etc/oops-firewall/filter.conf에서 TCP_ALLOWPORT에 3690을 추가한다.
그리고 firewall을 다시 실행한다.
# service oops-firewall restart