Miscellaneous

Apache 웹서버 상에 SVN 설치

강철지그·2014년 5월 1일·조회 6,951

Apache 웹서버 상에 SVN(Subversion)을 설치하고 연동하는 방법입니다.

appsroot님의 /index.php/miscellaneous/29-os-x-apache-subversion-installation 자료를 조금 참고하였는데, 제 환경과 상황이 완전히 일치하지는 않았습니다.

환경 및 설치 절차

  • OS: CentOS 6.4
  • Apache 웹서버는 2.2.27이 이미 컴파일 설치되어 있었습니다.
  • SVN은 yum으로 패키지 설치했고, 1.6.x 버전 정도였던 것으로 기억합니다.
  • Apache 웹서버와 SVN 연동을 위한 mod_dav_svn도 yum으로 설치했습니다. (mod_dav_svn.x86_64)

Apache 설정

mod_dav_svn을 설치하면 다음 두 모듈 파일이 생성됩니다.

  • mod_dav_svn.so
  • mod_authz_svn.so

패키지로 설치한 경우 파일 위치는 환경마다 다를 수 있으므로, 필요하면 다음처럼 확인할 수 있습니다.

$ rpm -ql mod_dav_svn | grep '\.so$'

이 두 파일을 컴파일 설치한 Apache 웹서버의 modules 디렉터리에 복사합니다. 패키지 Apache를 사용 중이라면 복사하지 않고 기존 모듈 경로를 그대로 사용하는 방식도 가능합니다.

그리고 Apache 웹서버의 httpd.conf에 SVN 연동을 위한 별도 설정 파일을 include 합니다.

Include /conf/extra/httpd-vhosts-svn.conf

이후 httpd-vhosts-svn.conf 파일을 다음과 같이 생성합니다.

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

<VirtualHost *:80>
    ServerName   svn.jeeg.sarc.io
    ServerAlias  svn.jeeg.sarc.io
    DocumentRoot "/data/svn/htdocs"
    ServerAdmin  jeeg@sarc.io

    SetEnvIf Request_URI "\.(gif)|(jpg)|(swf)|(png)$" image_log

    CustomLog    "/logs/svn_access_log.log"       common env=!image_log
    CustomLog    "/logs/svn_access_image_log.log" common env=image_log
    ErrorLog     "/logs/svn_error_log.log"

    <Location /sarc>
        DAV                svn
        SVNPath             "/data/svn/repo/svn/sarc"
        AuthType           Basic
        AuthName           "OMS SVN Repository"
        AuthUserFile       "/data/svn/repo/svn/sarc/authz/passwd"
        AuthzSVNAccessFile "/data/svn/repo/svn/sarc/authz/authz"
        Require valid-user
    </Location>

    <Directory "/data/svn/htdocs">
        Options FollowSymLinks MultiViews
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from all
    </Directory>
</VirtualHost>

여기까지가 대략적인 Apache 웹서버 설정입니다. 설정을 변경한 뒤에는 문법 오류가 없는지 확인한 다음 Apache를 재시작하는 것이 좋습니다.

$ apachectl -t

SVN 저장소 생성

이제 SVN 저장소를 생성합니다. 예제에서는 저장소 경로를 /data/svn/repo/svn/sarc로 사용합니다.

$ cd /data/svn/repo/svn
$ svnadmin create sarc

저장소 디렉터리 내에 패스워드 및 인증 정보를 저장할 디렉터리인 authz를 만들고, htpasswd를 이용하여 SVN 계정을 생성합니다. 여기서는 admin 계정을 생성합니다.

패스워드 파일은 /data/svn/repo/svn/sarc/authz/passwd로 생성됩니다.

$ mkdir -p /data/svn/repo/svn/sarc/authz
$ htpasswd -c /data/svn/repo/svn/sarc/authz/passwd admin
New password:
Re-type new password:

다시 저장소의 authz 디렉터리 안에 권한 설정 파일인 authz 파일을 생성합니다.

$ vi /data/svn/repo/svn/sarc/authz/authz
[groups]
repo = admin

[sarc:/]
@repo = rw
* =

위 설정은 admin 사용자를 repo 그룹에 넣고, sarc 저장소의 루트 경로에 대해 읽기/쓰기 권한을 부여하는 예입니다. 마지막의 * =는 그 외 사용자에게는 권한을 주지 않겠다는 의미입니다.

접속 확인

Apache를 재시작한 뒤 브라우저에서 http://svn.jeeg.sarc.io/sarc 로 접속합니다. Basic 인증 창이 뜨면 위에서 생성한 admin 계정으로 로그인하면 됩니다.

브라우저 대신 SVN 클라이언트로도 간단히 확인할 수 있습니다.

$ svn list http://svn.jeeg.sarc.io/sarc

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.