S/W 개발 기반 시스템 구성 – 7. Subversion 설치
이 글은 S/W 개발에 가장 기본이 되는 이슈 추적(Issue Tracker), 버전 관리(Version Control), 빌드(Build), 지속적인 통합(CI) 시스템을 구성하는 방법에 대한 일련의 글 중 일곱 번째이다. 운영에 필요한 시스템은 지난글로 모두 마쳤다. 그런데 상황에 따라서는 이전에 설치한 Mercurial과 같은 분산형 버전 관리 시스템보다는 Subversion(서브버전)과 같은 중앙 집중형 버전 관리 시스템이 더 간편하고 적절할 때가 있다.
병합이 필요 없는 문서같은 바이너리 파일에 대해 버전 관리를 해야 하는 경우가 그렇다. 사실 버전 관리라기보다 이력을 기록하고 효율적으로 공유하는 목적이 강하므로 굳이 분산형 시스템에서 반드시 거쳐야 하는 저장소 동기화 과정(push, pull)은 약간 거추장스럽다. 또한 바이너리 파일 보관 방식도 Mercurial은 항상 전체를 저장하지만 Subversion은 차이(delta)만 저장해 더 효율적이다. 게다가 Subversion에서는 자신이 변경하는 동안 다른 이는 변경하지 못하도록 잠금 설정(lock)을 할 수 있다. 각각 장단점이 있으므로 프로그램 개발에는 Mercurial, 문서나 관리에 필요한 설비 리소스 정보 등은 Subversion을 사용하기로 했다.
1. 미리 준비해야 하는 것들
- Mercurial 설치와 마찬가지로 OpenLDAP, Apache 웹 서버, mod_wsgi가 필요하다. 관련 내용은 Mercurial 설치 글을 참고한다.
- Subversion은 여기에서 윈도용 설치 파일을 받아 간편하게 설치할 수 있다.
2. 설정
Subversion 설치는 설치 파일만 실행하면 되므로 넘어간다. 저장소 접근 권한을 설정하기 위해 D:\svn\web\svn_authz
파일을 만들고 다음을 추가한다.
1 2 3 |
# to allow everyone read/write access [/] * = rw |
인증만 통과하면 모든 Subversion 저장소를 읽고 쓸 수 있도록 했다.
Apache 웹 서버로 동작시킬 것이므로 httpd.conf 파일을 다음처럼 바꾸고 웹 서버를 정지 후 다시 실행한다.
1 2 3 |
LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module "C:\Program Files (x86)\Subversion\bin\mod_dav_svn.so" LoadModule authz_svn_module "C:\Program Files (x86)\Subversion\bin\mod_authz_svn.so" |
정상적으로 실행되면 다음처럼 DAV/2, SVN/1.6.17과 같은 내용을 볼 수 있다.
httpd-vhosts.conf
파일에 다음처럼 내용을 추가한다(Mercurial을 설정했으면 해당 <VirtualHost>
항목에 함께 적어도 된다).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<VirtualHost *:80> <Location "/svn"> DAV svn SVNParentPath "D:\Repos\svn" AuthzSVNAccessFile "D:\svnweb\svn_authz" AuthName "PLAB SVN Repositories" AuthType Basic AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthLDAPURL "ldap://localhost/ou=People,dc=plab,dc=net?uid?sub?(objectClass=*)" Require valid-user </Location> </VirtualHost> |
위 내용에 따라 Subversion 저장소는 D:\Repos\svn
에 두고 접근할 때는 주소에 /svn
을 붙인다. OpenLDAP 인증을 사용하므로 httpd.conf
에서 다음 내용이 있는지 확인하고 없으면 추가한다. Mercurial 설치 과정을 따랐으면 이미 되어 있다.
1 2 |
LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so |
시험용 저장소를 D:\Repos\svn\sandbox
로 만든다. Apache 웹 서버를 중지했다가 다시 실행한 후 http://plab.net/svn/sandbox
로 접속한다. 계정과 암호는 OpenLDAP 계정과 암호를 사용하면 된다.