ubuntu-subversion+apache

목차


  1. 개요
  2. 설정
    1. apache2, subversion 설치
    2. 저장소 및 샘플 프로젝트 생성
    3. apache 설정
    4. SSL 설정(옵션)
  3. 사용
  4. 문제점해결
  5. 참고문서

개요#

우분투에 subversion+apache 설치하기.

apache 만 시작되면 HTTP URL로 접속 가능하다(http://localhost/svn/sample)

 

저장소 위치 : /svn-data

샘플 프로젝트 위치 : /svn-data/sample

svn 계정 파일 위치 : /svn-data/svn_passwd

접속 URL : http://localhost/svn/sample

 

설정#

필요한 서버를 설치하고, 프로젝트를 생성할 디렉토리를 새성한다.

apache2, subversion 설치#

apache 서버 및 subversion 을 설치한다.

  1. sudo apt-get install apache2 subversion libapache2-svn

 

저장소 및 샘플 프로젝트 생성#

저장소 디렉토리 및 샘플 프로젝트 생성.

  1. cd /svn-data
  2. sudo svnadmin create --fs-type fsfs sample

--fs-type 뒤 fsfs 는 파일시스템을 의미하고 fsfs 대신 bdb 를 이용할 수 있다.(bdb는 버플리DB를 의미한다)

아직 bdb가 안정적으로 동작하지 못하기 때문에 fsfs 를 사용하도록 한다.

 

프로젝트에 접속할 계정 생성

  1. cd /svn-data
  2. sudo htpasswd -c svn_passwd guest
  3. ...
  4. sudo htpasswd -m svn_passwd manager

-c 옵션은 svn_passwd 파일을 최초 생성할 때 사용하고, 이후부턴 -m 옵션을 이용한다.

 

apache를 거쳐 접속 후 작업을 하기 때문에 프로젝트의 소유권(www-data)을 변경한다.

  1. cd /svn-data
  2. sudo chown -R ./*

chown 의 -R 옵션은 하위 디렉토리 포함이다.

 

apache 설정#

apache로 접근하기 위해 Location 정보를 등록한다.

  1. cd /etc/apache2/mods-available
  2. sudo vi subversion.conf

 

subversion.conf 내용

  1. <Location /svn/sample>
        DAV svn
        SVNPath /svn-data/sample

        AuthType        Basic
        AuthName        "subversion"
        AuthUserFile    /svn-data/svn_passwd

        #등록된 사용자만 읽기 가능.
        <Limit GET PROPFIND OPTIONS REPORT>
            Require     valid-user
        </Limit>

        #등록된 사용자중 특정 사용자만 쓰기 가능토록 설정.
        <LimitExcept GET PROPFIND OPTIONS REPORT>
            Require     user    manager
        </LimitExcept>
    </Location>

 

apache 시작시 subversion Location 정보를 읽어들이도록 한다.

  1. cd /etc/apache2/mods-enabled
  2. sudo ln -s ../mods-available/subversion.conf subversion.conf

위에서 만든 Location 정보를 읽어 들이도록 심볼링 링크를 만들어 준다.

/etc/apache2/mods-available 엔 사용가능한 설정들을 담고, /etc/apache2/mods-enabled 에 있는 것만 로드한다.

 

apache 재시작

  1. sudo /etc/init.d/apache2 restart

 

SSL 설정(옵션)#

apache가 ssl 관련 모듈을 로드하도록 설정한다.

  1. sudo a2enmod ssl

/etc/apache2/mods-enabled/ 디렉토리에 ssl 관련 링크가 생성된다.

또는

  1. sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/
  2. sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/

 

비밀키와 인증서 생성

  1. cd /etc/apache2/ssl
  2. sudo openssl req -new -x509 -nodes -out server.crt -keyout server.key

아래처럼 적당한 값을 입력한다.

  1. ountry Name (2 letter code) [AU]:KR
  2. State or Province Name (full name) [Some-State]:<적당한 값>
  3. Locality Name (eg, city) []:Seoul
  4. Organization Name (eg, company) [Internet Widgits Pty Ltd]:<적당한 값>
  5. Organizational Unit Name (eg, section) []:<적당한 값>
  6. Common Name (eg, YOUR name) []:<완전한 URL ex) test.abc.com>
  7. Email Address []:<메일주소>

server.key -> 비밀키(private key) 파일

server.crt -> 인증서(public key를 포함) 파일

 

server.key의 권한 변경

  1. sudo chmod 600 server.key

 

VirtualHost를 이용해서 https를 설정한다.

  1. sudo vi /etc/apache2/sites-available/ssl

ssl 파일 내용

  1. NameVirtualHost *:443
  2. <VirtualHost *:443>
  3.     DocumentRoot /var/www

  4.     SSLEngine On
  5.     SSLProtocol -all +TLSv1 +SSLv3
  6.     SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
  7.     SSLOptions +StrictRequire
  8.     SSLVerifyClient none
  9.     SSLCertificateFile    /etc/apache2/ssl/server.crt
  10.     SSLCertificateKeyFile /etc/apache2/ssl/server.key
  11. </VirtualHost>

 

ssl 관련 설정 활성화

  1. sudo a2ensite ssl

또는

  1. sudo ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/

 

apache 재시작

  1. sudo /etc/init.d/apache2 restart

 

사용#

svn 클라이언트에서 생성된 샘플 디렉토리로 접근한다. 아래 주소를 이용해 subversion에 접속할 수 있다.

  1. http://localhost/svn/sample

 

SSL 관련 설정을 했다면, 아래와 같이 https 프로토콜을 이용해 접속할 수 있다.

  1. https://localhost/svn/sample

 

문제점해결#

 

참고문서#

https://help.ubuntu.com/community/Subversion

http://www.pyrasis.com/main/Subversion-HOWTO