서브버전을 설치해 보아요.우분투에서 서브버전을 설치하고 svn+ssh 프로토콜로 접근하는 방법에 대해서 알아보아요.
먼저 서브버전을 설치하도록 해요.
sudo apt-get install subversion
완전 간단~! +_+ 이런게 우분투의 매력이네요. ^-^
사용자 그룹을 설정해요.서브버전을 svn+ssh 프로토콜로 접근하려면 먼저
사용자 그룹을 설정해야 해요.
subversion 이라는 그룹을 사용하도록 하죠.
subversion 그룹을 만들어 주어요.
sudo groupadd subversion
/etc/group 파일을 수정해주어요.
sudo vi /etc/group
다음과 같이 /etc/group 파일에서 subversion 그룹에 서브버전을 사용할 사용자 아이디를 추가하면 돼요.
kjunine 이라는 아이디를 추가할께요.
subversion:x:1001:kjunine
콤마(,)로 구분하면 여러 개의 아이디를 추가할 수 있어요.
서브버전 저장소를 만들어요.이젠 서브버전에서 사용할 저장소를 만들어야겠죠?
일단 저장소 디렉토리를 만들어 주어요.
/project/repository/source 라고 하죠.
sudo mkdir /project/repository/source -p
-p 옵션을 사용하면, 부모 디렉토리가 없으면 만들어 주네요.
저장소를
버클리 디비 방식으로 만들어주고, subversion 그룹이 접근할 수 있도록 권한을 바꿔주어요.
project라는 이름으로 저장소를 만든다고 하죠.
cd /project/repository/source
sudo svnadmin create --fs-type bdb project
sudo chgrp -R subversion project
sudo chmod -R g+w project
svn+ssh:// 프로토콜로 접속해 보아요.여기까지만 해도 서브버전에 접속할 수 있어요.
예를 들면, 다음 URL로 접속하면 되죠.
svn+ssh://user.id@server.ip/project/repository/source/project
사용자 아이디를 반드시 써주어야 해요.
그러나 클라이언트에서
요청 시마다 비밀번호를 입력해줘야 하는 문제점이 있어요!!
다음과 같은 방법으로 해결해야 해요.
서버부터 설정해 보죠.서브버전의
사용자마다 다음 단계를 수행해야 해요.
우선
SSH에서 사용할 개인키와 공개키를 만들어야죠.
키 이름을 kjunine으로 한다고 하죠.
cd ~/.ssh
ssh-keygen -b 1024 -f kjunine
암호를 입력하는 것이 나오는데.. 이 때 입력한 암호는 반드시 기억해야 해요!!
그럼
개인키 파일(kjunine)과
공개키 파일(kjunine.pub)이 만들어져요.
공개키는 ~/.ssh/authorized_keys 파일로 복사해 주어요.
cp kjunine.pub authorized_keys
개인키는 클라이언트에 다운로드 받아야 해요.
클라이언트도 설정해 보아요.PuTTY라는 프로그램을 이용해야 해요.
PuTTY에는 putty.exe 말고도 plink.exe, pagent.exe, puttygen.exe 등 여러 프로그램들이 있어요.
그 중에서
pagent.exe와
puttygen.exe를 사용할 거에요.
plink.exe 대신에 TortoiseSVN 의
tortoiseplink.exe라는 plink.exe의 변형 프로그램을 이용할 거에요.
plink.exe는 자꾸 콘솔창이 떠서 방해가 되거든요.
다운받은 개인키를
PuTTY에서 인식할 수 있는 형태로 변환해야 해요.
다음과 같이 하면 돼요.
puttygen.exe를 실행해요.
메뉴에서 Conversions > Import key를 실행해요.
다운받은 개인키를 지정해야 해요.
키 생성 시에 입력한 비밀번호를 입력해요.
Save private key 버튼을 클릭해서 개인키를 저장해요. (ppk 파일로 저장돼요.)
매번 비밀번호를 입력하지 않아도 되도록
pagent.exe를 항상 띄워 놓아야 해요.
C:\Documents and Settings\{사용자_이름}\Application Data\Subversion\config 파일 내용을 다음과 같이 수정해야 해요.
저는 클라이언트에도 Subversion을 설치해서 이 파일이 존재할지도 모르겠네요.
아니면 TortoiseSVN만 설치해도 위 파일이 존재하는 건가..?
[tunnels] 밑에 있는 다음 부분을..
# ssh = $SVN_SSH ssh
주석을 제거하고 다음과 같이 고쳐 주세요.
ssh = {TortoiseSVN_설치_경로}/bin/TortoisePlink.exe
위에서 경로 입력 시 디렉토리 구분은 반드시 슬래쉬(/)로 해야 해요!!
그리고
pagent.exe의 바로가기를 만들어요.
바로가기의 속성에서 대상(T) 항목 끝에 한 칸 띄우고 위 단계에서 저장한
PuTTY용 개인키(ppk 파일)의 위치를 써주세요. (파일 이름까지)
{PuTTY_설치_경로}\PAGEANT.EXE {개인키_파일_경로}
여러 개의 키를 입력할 때는 띄워쓰기로 구분해서 여러 개를 입력해 주면 되요.
바로가기를 실행하세요.
개인키의 비밀번호를 입력하세요.
이제 끝이에요. ^^
위의 URL로 다시 접속해 보아요. 비밀번호를 묻지 않아요.
그리고 이제부터는 PuTTY로 접속할 때도 비밀번호를 입력 안 해도 되네요.
방금 만든 바로가기를 시작프로그램에 등록해두면 편하게 사용할 수 있어요.
https:// 프로토콜로도 접속해 보아요.아파치와 서브버전을 연동하려면
libapache2-svn 패키지를 설치해 주어야 해요.
sudo apt-get install libapache2-svn
그리고 제한된 사용자만 접근할 수 있게 하려면 아파치에서 사용할 비밀번호 파일을 만들어 주어야 해요.
/etc/apache2/passwd 파일로 하도록 해요.
kjunine이라는 사용자를 만들어 보아요.
sudo htpasswd -c /etc/apache2/passwd kjunine
비밀번호 파일을 처음 만들 때에는 -c 옵션을 사용해야 해요.
그리고 적당한 곳에 다음에 나올 내용을 추가해 주면 되요.
https:// 로 접근하고자 하니까.. /etc/apache2/sites-available/ssl 파일을 수정해야 겠네요.
vi /etc/apache2/sites-available/ssl
<VirtualHost *:443>와 </VirtualHost> 사이 적당한 곳에 다음 내용을 넣죠.
- <Location /svn/project>
- DAV svn
- SVNPath /project/repository/source/project
- AuthType Basic
- AuthName "Subversion"
- AuthUserFile /etc/apache2/passwd
- Require valid-user
- </Location>
www-data 사용자를 서브버전 리포지토리의 소유 그룹에 추가해야 해요.
리포지토리 소유 그룹이 subversion이라고 하죠.
/etc/group 파일의 subversion 그룹에 www-data 사용자를 추가하도록 하죠.
sudo vi /etc/group
subversion:x:1001:kjunine,www-data
그리고 아파치를 새로 시작하면 돼요.
sudo apache2ctl restart
사용자별로 접근 권한을 다르게 설정해 보아요.특정 Location(svn/project)에 대하여 다음과 같이 사용자에 따라 접근 권한을 다르게 설정할 수 있어요.
등록된 사용자만이 읽고 쓸수 있게..
- <Location /svn/project>
- Require valid-user
- </Location>
아무나 읽을 수 있고 등록된 사용자만이 쓸 수 있게..
- <Location /svn/project>
- <LimitExcept GET PROPFIND OPTIONS REPORT>
- Require valid-user
- </LimitExcept>
- </Location>
등록된 사용자만이 읽을 수 있고 특정한 사용자(kjunine)만이 쓸 수 있게..
- <Location /svn/project>
- <Limit GET PROPFIND OPTIONS REPORT>
- Require valid-user
- </Limit>
- <LimitExcept GET PROPFIND OPTIONS REPORT>
- Require user kjunine
- </LimitExcept>
- </Location>
0