우분투에 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 을 설치한다.
- sudo apt-get install apache2 subversion libapache2-svn
저장소 및 샘플 프로젝트 생성#
저장소 디렉토리 및 샘플 프로젝트 생성.
- cd /svn-data
- sudo svnadmin create --fs-type fsfs sample
--fs-type 뒤 fsfs 는 파일시스템을 의미하고 fsfs 대신 bdb 를 이용할 수 있다.(bdb는 버플리DB를 의미한다)
아직 bdb가 안정적으로 동작하지 못하기 때문에 fsfs 를 사용하도록 한다.
프로젝트에 접속할 계정 생성
- cd /svn-data
- sudo htpasswd -c svn_passwd guest
- ...
- sudo htpasswd -m svn_passwd manager
-c 옵션은 svn_passwd 파일을 최초 생성할 때 사용하고, 이후부턴 -m 옵션을 이용한다.
apache를 거쳐 접속 후 작업을 하기 때문에 프로젝트의 소유권(www-data)을 변경한다.
- cd /svn-data
- sudo chown -R ./*
chown 의 -R 옵션은 하위 디렉토리 포함이다.
apache 설정#
apache로 접근하기 위해 Location 정보를 등록한다.
- cd /etc/apache2/mods-available
- sudo vi subversion.conf
subversion.conf 내용
- <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 정보를 읽어들이도록 한다.
- cd /etc/apache2/mods-enabled
- sudo ln -s ../mods-available/subversion.conf subversion.conf
위에서 만든 Location 정보를 읽어 들이도록 심볼링 링크를 만들어 준다.
/etc/apache2/mods-available 엔 사용가능한 설정들을 담고, /etc/apache2/mods-enabled 에 있는 것만 로드한다.
apache 재시작
- sudo /etc/init.d/apache2 restart
SSL 설정(옵션)#
apache가 ssl 관련 모듈을 로드하도록 설정한다.
- sudo a2enmod ssl
/etc/apache2/mods-enabled/ 디렉토리에 ssl 관련 링크가 생성된다.
또는
- sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/
- sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/
비밀키와 인증서 생성
- cd /etc/apache2/ssl
- sudo openssl req -new -x509 -nodes -out server.crt -keyout server.key
아래처럼 적당한 값을 입력한다.
- ountry Name (2 letter code) [AU]:KR
- State or Province Name (full name) [Some-State]:<적당한 값>
- Locality Name (eg, city) []:Seoul
- Organization Name (eg, company) [Internet Widgits Pty Ltd]:<적당한 값>
- Organizational Unit Name (eg, section) []:<적당한 값>
- Common Name (eg, YOUR name) []:<완전한 URL ex) test.abc.com>
- Email Address []:<메일주소>
server.key -> 비밀키(private key) 파일
server.crt -> 인증서(public key를 포함) 파일
server.key의 권한 변경
- sudo chmod 600 server.key
VirtualHost를 이용해서 https를 설정한다.
- sudo vi /etc/apache2/sites-available/ssl
ssl 파일 내용
- NameVirtualHost *:443
- <VirtualHost *:443>
- DocumentRoot /var/www
SSLEngine On
- SSLProtocol -all +TLSv1 +SSLv3
- SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
- SSLOptions +StrictRequire
- SSLVerifyClient none
- SSLCertificateFile /etc/apache2/ssl/server.crt
- SSLCertificateKeyFile /etc/apache2/ssl/server.key
- </VirtualHost>
ssl 관련 설정 활성화
- sudo a2ensite ssl
또는
- sudo ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/
apache 재시작
- sudo /etc/init.d/apache2 restart
svn 클라이언트에서 생성된 샘플 디렉토리로 접근한다. 아래 주소를 이용해 subversion에 접속할 수 있다.
- http://localhost/svn/sample
SSL 관련 설정을 했다면, 아래와 같이 https 프로토콜을 이용해 접속할 수 있다.
- https://localhost/svn/sample
문제점해결#
참고문서#
https://help.ubuntu.com/community/Subversion
http://www.pyrasis.com/main/Subversion-HOWTO