Subversion은 자체 프로토콜인 svn://(svnsever)를 사용할 수 있지만 Apache와 연동하여 http://, https:// 프로토콜을 사용할 수도 있다. 우리의 목적인 Trac과 Subversion을 연동하여 CI 환경을 구성하려면 Trac과 Subversion 사이에 사용자 계정을 공유해야 하고 그러려면 Subversion을 Apache와 연동해야 한다. svn:// 방식은 passwd 파일로 사용자 ID를 관리하기 때문에 Trac과 사용자 정보를 공유할 수 없다.
PrerequisitesApache 설치
Subversion 설치
Apache 2.2용 Subversion 모듈 설치httpd.conf 파일 수정
mod_dav.so 부분의 주석을 제거
LoadModule dav_module modules/mod_dav.so
다음 두 줄을 추가
LoadModule dav_svn_module "C:\Program Files\Subversion\bin\mod_dav_svn.so"
LoadModule authz_svn_module "C:\Program Files\Subversion\bin\mod_authz_svn.so"
httpd.conf를 저장하고 Apache를 stop, start 한다.
정상적으로 설정이 되었다면, Apache Service Monitor 화면의 상태표시줄에 "Apache/2.2.11 (Win32) SVN/1.6.2 DAV/2"라고 표시되는 것을 볼 수 있다.
Apache htpasswd를 이용하여 사용자 관리하기htpasswd 파일을 루트 저장소 디렉토리에 만든다.
cd d:\RootRepos
"C:\Program Files\Apache Software Foundation\Apache2.2\bin\htpasswd.exe" -c htpasswd agileuser
새 사용자를 추가하려면 "-c" 옵션 없이 사용자 ID를 입력하면 된다.
"C:\Program Files\Apache Software Foundation\Apache2.2\bin\htpasswd.exe" -c htpasswd icarian
루트 저장소에 authz를 만들어 사용자 권한을 설정한다.(옵션)
[asiavant:/]
agileuser = rw
* = r
Apache에서는 authz_svn_module을 통해서 authz를 관리한다.
웹브라우저를 통해서 SVN 접근하기 위한 설정httpd.conf를 열어 다음을 맨 끝에 추가한다.
NameVirtualHost *:80
<VirtualHost *:80>
<Location /svn>
DAV svn
SVNParentPath "D:\RootRepos"
AuthzSVNAccessFile "D:\RootRepos\authz"
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile "D:\RootRepos\htpasswd"
Require valid-user
</Location>
</VirtualHost>
- SVNParentPath: Root Repository 경로
- AuthzSVNAccessFile: authz 파일 경로(옵션)
- AuthType: Basic으로 설정하면 htpasswd 파일을 사용한다는 의미
- AuthName: 웹 브라우저, Subversion 클라이언트에서 접속했을 때 표시되는 저장소 이름
- AuthUserFile: htpasswd 파일의 경로
- Requre: 로그인한 사용자만 볼 수 있도록 valid-user로 설정
만약 커밋은 지정한 사용자만 하고 체크인/체크아웃은 아무나 가능하게 하려면
<LimitExcept GET PROPFIND OPTIONS REPORT> Requre valid-user </LimitExcept>로 설정한다.
httpd.conf를 저장하고 Apache를 다시 시작한다.
svnserve을 실행시켜놨다면 이제 필요 없으니 svnserve를 종료한다.
웹 브라우저를 실행하여 주소 창에 "http://localhost/svn/asiavant"를 입력하고 사용자 인증을 거치면 asiavant 프로젝트 저장소의 소스 폴더를 볼 수 있다.