서론

이전부터 eclipse 를 많이 써 왔었는데 여기에 subversion 을 연동하게 되면 정말 강력한 개발 환경이 된다. 여기에 subversion 서버만 가지고 있다면 어디서든 eclipse 만 있다면 subversion 에 의해 내가 작업하던 환경을 빠르게 구축 할 수 있게 된다. 또한 이런 svnserver 를 아파치와 연동시키는 것이 가능한데 연동을 하게되면 웹에서 저장소를 직접 접근 할 수 있게 된다. 여기서는 apache 와 svnserver 를 연동하는 법을 알아보도록 하자

 

본론

1. subversion 설치

내 서버는 gentoo 이기 때문에 아래 명령어로 subversion 을 설치한다.

emerge subversion

2. subversion 저장소 생성

subversion 저장소는 repository 라고 불리우며 이 저장소에 소스가 저장되게 된다. 아래와같은 명령으로 생성하게 된다. 여기서 중요한것은 apache 로 접근해야 하기때문에 그룹을 apache 로 바꾸어 줘야 한다는것이다. 또한 apache 가 변경 할 수도 있기 때문에 그룹쓰기 권한을 추가해 준다.

svnadmin create cranix

chown –R root.apache cranix

chmod –R g+w cranix

3. 비밀번호파일 만들기

apache 에서 아무나 접근하지 못하도록 하기 위해서 apache 에서 제공하는 authn_file 모듈을 이용해 비밀번호를 걸어놓도록 하자. 아래와같은 명령으로 비밀번호 파일을 생성할수 있는데 적절한 위치에 위치시키자

htpasswd –c [패스워드파일이름] [유저아이디]

4. apache 설정 변경

apache 와 svn 이 연동하기 위해서는 모듈 파일의 로드가 필요한데 아래와같은 명령으로 로드 할수 있다. svn 말고도 위에서 만든 비밀번호를 인증하는 모듈도 필요한데 그것도 같이 로드시키자 물론 이미 로드되어있다면 건너뛰어도 무방하다.

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

LoadModule authn_file_module modules/mod_authn_file.so

내 서버에서는 svn.cranix.net 으로 접근하면 svn 에 접근할 수 있게 되는데 그에대한 가상호스트 설정은 아래와 같다. SVNPath 에다가 자신이 생성한 svn 저장소의 위치를 적어주고 AuthUserFile 에다가 생성한 비밀번호 파일의 위치를 적어주면 된다. SVNPath 말고 SVNParentPath 를 사용할 수도 있는데 이것은 여러 저장소에 접근할때 쓰는방법으로 저장소의 상위 디렉토리의 위치를 적어주고 웹에서는 http://svn.cranix.net/cranix 와 같은 형태로 접근하면 된다.

<VirtualHost svn.cranix.net:80>
        ServerName svn.cranix.net
        <Location "/">
                DAV svn
                #SVNParentPath /home/users/admins/svnroot
                SVNPath /home/users/admins/svnroot/cranix
                AuthType Basic
                AuthName "cranix repository"
                AuthUserFile /home/users/admins/svnroot/cranix/conf/htusers
                Require valid-user
                Order Deny,Allow
                Allow from all
        </Location>
</VirtualHost>

5. 테스트

모든 셋팅이 끝났다면 apache 를 재시작 한 다음에 http://svn.cranix.net 으로 접근해 보면 아래와같이 인증화면이 나오게되고 인증을 거치면 저장소가 보여지게 된다.

결론

svn 은 원래 팀 작업을 위해 있는 도구이다. 그러나 개인적으로 간단한 자료실로만 사용해도 훌륭한 도구가 될 수 있다. 이제는 어떤 작업을해도 svn 에 소스를 커밋 하기 전에는 불안하다. 이건 svn 증후군인가…

신고
by cranix 2009.08.07 16:42