본문 바로가기

Linux/Ubuntu

우분투에 SVN 설치하기

우분투에서 서브버전을 설치해보자.
서 브버전은 버전 관리 시스템으로 흔히 svn이라고 불리는 녀석이다. 기존의 cvs를 대체하기 위해서 개발이 시작되었고, 많은 오픈소스 프로젝트에서 사용하고 있다. sourceforge.net 에서는 오픈소스 프로젝트를 위해서 서브버전을 호스팅하는 서비스를 제공하기도 한다. 어쨌든, 기존의 cvs보다 장점이 많은 것은 사실이다.

일단 다음의 한 줄을 입력하자.
sudo apt-get install subversion
자, 설치가 끝났다. 진짜로. 오늘은 여기서 이만, ...했으면 좋겠지만, 설치가 끝났다고 바로 써먹을 수는 없다.

사용자를 설정해줘야 하는데, 다양한 방법이 있지만 본인은 svn이라는 그룹을 하나 만들고, 이 그룹에 사용자를 추가시키는 방법을 택했다.
sudo addgroup svn
sudo adduser exist_user svn
이런 식으로 기존의 유저를 추가할 수 있다. 혹은 /etc/group 파일을 직접 편집해서 추가해줘도 좋다.

저장소를 만들자.
sudo mkdir /var/svn
cd /var/svn
sudo svnadmin create --fs-type fsfs sample

/var/svn 디렉토리 아래에 sample이라는 이름의 디렉토리가 생긴것을 확인할 수 있을 것이다. --fs-type은 저장소 종류를 설정하는 것인데, 위의 예처럼 파일 시스템을 사용할 수도 있고, fsfs대신 bdb를 써서 Berkeley DB형식으로 할 수도 있다.
sudo chgrp -R svn sample
sudo chmod -R g+w sample

이렇게 해서 권한도 주면 기본적인 접속을 할 수 있다.

svn으로 접속하는 방법은 3가지가 있다. svnserve를 사용하는 방법, ssh를 통하는 방법, 그리고 apache를 통하는 방법이다. 여기서는 apache를 통하는 방법을 사용하도록 한다.
install APM on Ubuntu 8.04를 참조하도록 하자.
먼저 다음과 같이 실행한다.
sudo apt-get install libapache2-svn

아파치와 서브버전을 연동하기 위한 모듈을 설치하는 것이다. 다음은 설정을 해주어야 한다.
sudo vi /etc/apache2/mods-available/dav_svn.conf

맨 아래쪽에 다음과 같이 추가를 한다.
<Location /svn/sample>
  DAV svn
  SVNPath /var/svn/sample
</Location>

그리고 모듈을 추가하고, 권한을 설정해 준다.
sudo a2enmod dav_svn
sudo adduser www-data svn
sudo /etc/init.d/apache2 restart

이제 http://(Subversion과 Apache를 설치한 IP주소 또는 도메인)/svn/sample 으로 접속해보면,
Revision 0: /

와 같은 화면을 보게 될 것이다. 그럼 이제 이 저장소에 아무나 접근해서 체크아웃이나 커밋을 할 수 있다.

이제 사용자 인증을 할 수 있도록 해보자.
먼저 사용자 패스워드파일을 만들어야 한다.
cd /etc/apache2
sudo htpasswd -c dav_passwd sampleuser
New password:
Re-type new password:

dav_passwd 란 파일이 생겼을 것이고 내용을 보면 sampleuser가 추가된 것을 알 수 있을 것이다. -c 옵션은 새로 생성하라는 뜻이고, 추가를 할 경우에는 -m 옵션을 사용하면 된다. htpasswd 명령으로 생성되는 패스워드 파일은 "사용자이름:암호화된패스워드" 형식으로 저장되므로, 쉘계정을 사용하는 사람들을 모두 추가하고 싶은 경우에는 /etc/shadow 파일을 가져다가 직접 작성해줘도 무방하다. 이제 아파치 설정을 해주자.
sudo vi /etc/apache2/mods-available/dav_svn.conf

<Location /svn/sample>
  DAV svn
  SVNPath /var/svn/sample
  AuthType Basic
  AuthName "sample repository"
  AuthUserFile /etc/apache2/dav_passwd
  Require valid-user
</Location>

아파치를 재시작하고 http://(Subversion과 Apache를 설치한 IP주소 또는 도메인)/svn/sample 으로 접속해보면 사용자이름과 패스워드를 물어볼 것이다. 특정 위치에 대해서 권한을 다르게 줄 수도 있다.

등록된 사용자만이 읽고 쓸 수 있게 하려면,
<Location /svn/project>
 Require valid-user
</Location>

아무나 읽을 수 있고 등록된 사용자만이 쓸 수 있게 하려면,
<Location /svn/project>
 <LimitExcept GET PROPFIND OPTIONS REPORT>
  Require valid-user
 </LimitExcept>
</Location>

등록된 사용자만이 읽을 수 있고, 특정한 사용자(sampleuser)만 쓸 수 있게 하려면,
<Location /svn/project>
 <Limit GET PROPFIND OPTIONS REPORT>
  Require valid-user
 </Limit>
 <LimitExcept GET PROPFIND OPTIONS REPORT>
  Require user sampleuser
 </LimitExcept>
</Location>

이런 식으로 mods-available/dav_svn.conf 파일을 수정해주면 되겠다.

svn을 이용하는 방법은 여러가지가 있으므로 다음에 포스팅하기로 하겠다.

# https://help.ubuntu.com/8.04/serverguide/C/subversion.html

'Linux > Ubuntu' 카테고리의 다른 글

.bash_profile에서 path 수정하기  (0) 2008.11.24
우분투에서 CVS 서버 설치  (0) 2008.10.09
우분투 한글 입력  (0) 2008.10.02
한/영 키 사용하기  (0) 2008.10.02
StarDict 사전 설치하고 사용하기  (0) 2008.09.18