Windows 에 Subversion Server 설치하기

Posted at 2008. 7. 6. 14:37 // in S/W개발 // by 김윤수


이 글은 Repository 라던지, Checkout/Commit 등과 같은 기본적인 소스 코드 관리 개념과 Subversion 이 소스 코드를 관리를 위한 툴이라는 기본적인 개념에 대해서는 이미 익숙해져 있다고 가정하고 Windows 에서 Subversion Server 를 설치하는 방법에 대해서만 다루도록 하겠습니다.

다운로드할 프로그램

우선 다음 위치에서 Subversion Windows 버전을 다운로드 받으십시오.

http://www.collab.net/downloads/subversion/

세 가지 종류의 다운로드가 있는데, 그 중에 저희는 Subversion Server 를 설치할 예정이므로 제일 위에 있는 CollabNet Subversion Server and Client v1.5.0 를 다운받으세요. 다운받으시려면 회원 가입을 하셔야 합니다.

그리고, ViewVC 를 사용하실 생각이시라면 다음 위치에서 ActivePython 도 다운로드 받으시기 바랍니다.

http://www.activestate.com/store/download.aspx?prdGUID=b08b04e0-6872-4d9d-a722-7a0c2dea2758

참고로 ViewVC는 웹블라우저로 다음 그림처럼 소스 코드 Repository 를 볼 수 있도록 해주는 프로그램입니다. Python 으로 구현되어 있기 때문에 Python 을 설치하셔야 합니다.

Subversion 소스 코드를 ViewVC로 본 화면

Subversion 소스 코드를 ViewVC로 본 화면

Subversion Server 를 설치하시기 전에 먼저 ActivePython 을 설치하시고, 어느 디렉토리에 설치해 놓았는지는 메모해 두시기 바랍니다.

프로그램 설치

그리고 설치하는 중에는 다음 링크에 있는 문서를 열어 놓거나, 인쇄해 놓고 단계를 밟아가면서 설치하시면 됩니다.

CollabNet Subversion Server and Client Installer for Windows

Choose Component -> svnserve Configuration -> Apache Configuration -> ViewVC Configuration -> Choose Install Location

순으로 설치 옵션을 조정한 후에 설치할 수 있습니다.

저는 다른 옵션은 조정하지 않고, Apache Configuration 에서 Enable ViewVC flag 만 켜주었습니다.

subversion apache configuration

subversion apache configuration

그리고, Repository Location Prefix 는 나중에 SVN URL에 포함되는 정보이므로 꼭 기억해 두시기 바랍니다. 만약 /svn 이라고 하셨다면, SVN URL 은 다음과 같은 형태가 될 것입니다.

http://localhost/svn/your_repo_name

설치 옵션에서 보셨듯이 CollabNet 의 Subversion Server Package 에는 Apache 도 이미 포함되어 있고, SSL도 이미 포함되어 있습니다. 그러니 따로 다운로드 받아서 설치하실 필요가 없습니다. 대신 이미 Apache 나 OpenSSL을 따로 설치해서 쓰고 계셨던 분들은 CollabNet Subversion Server Installer 가 자동으로 Apache Configuration 파일을 생성해 준 걸 나중에 따로 자신의 Apache Configuration 에 복사해 주어야겠지요. 따로 따로 설치하실 생각이시라면 다음 문서를 참고하시는 게 좋을 것 같습니다.

윈도우에서 Subversion 서버 운영하기

어쨌든 저는 Apache, OpenSSL 등을 모두 설치해 놓고 있지 않았기 때문에 편하게 Installer 에게 맡겨 놓았지요. 아! 그리고 CollabNet Subversion Server Package에 포함된 Subversion 1.5.0 은 Apache 2.2.8 에 맞춰서 Packaging 된 것 같더군요. Apache 2.0.X 대 버전을 사용하시던 분은 이전 버전의 패키지를 다운받아서 설치하셔야할 것 같습니다. 다음 링크에서 Apache 2.0.X 용 subversion 을 구하실 수 있습니다(이 패키지에는 apache 2.0.X 는 포함되어 있지 않습니다)

http://subversion.tigris.org/files/documents/15/43067/svn-win32-1.5.0.zip

설치하신 다음에는 바로 한 번 리부팅해주시는 게 좋을 것 같습니다. 저는 리부팅하지 않았더니 자꾸 Apache 가 실행될 때 에러가 발생하면서 뜨질 않더군요.

Apache Configuration

그럼 일단 재부팅하셨다고 생각하고 설치후 과정에 대해 간략히 설명드립니다.

우선, Apache Configuration 을 약간 조정해야 합니다. 아마 설치 직후에는 다음과 같이 설정되어 있을 것입니다(Apache Configuration 파일은 D:\Program Files\CollabNet Subversion Server\httpd\conf\httpd.conf 입니다).

<Location /svn>
   DAV svn
   SVNParentPath C:\svn_repository
   SVNListParentPath On
</Location>

이 상태로는 사용자 인증없이 누구라도 repository 에서 checkout/commit 을 할 수 있습니다. 혼자 쓰실 생각이시라면 문제 없지만 팀내에서 공동으로 사용할 subversion server 라면 인증을 거치도록 해야겠지요. 인증 방법은 여러 가지가 있겠지만 여기서는 Apache의 Basic authentication 을 사용해서 인증을 하도록 하겠습니다. 이 정도면 회사내의 소규모 팀이 사용하기에는 충분하니까요. 먼저 Apache 에 포함되어 있는 htpasswd 프로그램을 이용해서 password 파일을 생성합니다. 다음 명령을 실행하세요. (htpasswd 프로그램이 있는 디렉토리로 가서 실행하시던지 아니면 htpasswd 프로그램 위치를 정확히 지정해 주셔야겠지요)

htpasswd -cm c:\svn_repository\passwd username

쉽게 예상하실 수 있는대로 위 명령을 실행하면 암호를 두 번 묻습니다. 적당한 암호를 입력하시고, 메모해 두시기 바랍니다. 그리고 나서 Apache Configuration 을 다음과 같이 조정합니다.

<Location /svn>
   DAV svn
   SVNParentPath C:\svn_repository
   SVNListParentPath On
   Require valid-user
   AuthType Basic
   AuthName "Subversion repository"
   AuthUserFile C:\svn_repository\passwd
</Location>

다음 단계로는 apache 를 멈췄다가 다시 시작해야 합니다. 다음 명령을 순서대로 실행하세요.

> net stop apache2.2
> net start apache2.2

CollabNet Subversion Server and Client Installer for Windows 문서에서는 Apache 를 멈췄더가 실행할 때 apache2.2 가 아니라 apache 로 되어 있는데, Apache 2.2.X 버전이 되면서 서비스 이름이 apache 2.2로 바뀐 것 같더군요. 주의하시기 바랍니다.

위와 같이 하면 authentication 을 거치게 됩니다. authentication 은 이 방법 말고도 https 를 이용하는 방법도 있지만, 상당히 복잡한 과정을 거치므로 여기에서는 소개하지 않겠습니다.

윈도우 방화벽 해제

가장 마지막 단계로는 윈도우 방화벽 설정에서 apache 를 예외로 지정해 주셔야 외부에서 subversion 서버로 접속할 수 있습니다.

시작 -> 제어판 -> 보안센터 -> Windows 방화벽 -> 예외탭 선택

까지 가면 다음과 같은 화면이 보입니다.

윈도우 방화벽 해제

윈도우 방화벽 해제

프로그램 추가를 누르신 후 httpd.exe 를 찾아서 등록해 주시면 됩니다. httpd.exe \Program Files\CollabNet Subversion Server\httpd\bin 에 있습니다.

잘 작동하는지 확인

Subversion 서버가 잘 설치됐는지 확인하려면 web browser 에서 다음 URL을 입력해보시기 바랍니다.

http://localhost/svn

이렇게 입력하면 사용자ID, 암호를 묻고 맞는 ID/암호를 입력하면 Repository 목록을 보여줍니다. 만약 ViewVC도 설치를 하셨다면 다음 URL을 입력해 보시기 바랍니다.

http://localhost/viewvc

이렇게 입력하면 사용자ID, 암호를 묻지 않고 바로 Repository 목록을 보여줍니다. ViewVC는 Browsing 을 위한 패키지라서 기본 Subversion web browser 보다는 훨씬 편한 UI를 통해 Repository를 browsing 할 수 있도록 해줍니다.

Repository 생성하기

Repository 를 생성하시려면 다음 명령을 사용하세요.

svnadmin create c:\svn_repository\your_test_repo

your_test_repo는 여러분이 원하시는 이름대로 지으시면 됩니다. Repository 생성은 Server 가 실행되는 곳에서 꼭 실행해야 한다는 건 당연히 이해하실 수 있겠죠 ? svnadmin 은 이미 CollabNet Subversion Installer 가 환경 변수에 등록해주므로 위치를 찾으려고 헤메실 필요는 없습니다. ^^

checkout 하기

다음 명령을 이용해서 checkout 하실 수 있습니다(svn 도 svnadmin 과 마찬가지로 환경 변수에 이미 Path 가 잡히게 됩니다). checkout 은 보통 개발자들이 자신의 개발 PC에서 수행하는 작업입니다.

svn checkout http://localhost/svn/your_test_repo

각 개발자들은 다음 링크에서 구할 수 있는 client 전용 command line 패키지를 설치해서 subversion 을 사용할 수 있습니다. 다운받으시려면 회원 가입을 하셔야 합니다.

http://www.collab.net/downloads/subversion/

command line 패키지 외에도 TortoiseSVN, RapidSVN 등의 GUI Client 와 Eclipse Plugin 으로 작동하는 Subclipse, Subversive 등도 있고, Visual Studio Plugin 으로 작동하는 AnkhSVN(Visual Studio 2005 까지 지원), VisualSVN(상용) 등이 있으니 필요에 따라 사용하시기 바랍니다.

기존 소스 import 하기

일단 기존 소스가 path/to/the/source 에 있다고 가정하면, 다음 명령을 이용해서 import 하실 수 있습니다.

svn import path/to/the/source http://localhost/svn/your_test_repo -m "initial import"

마지막 -m 옵션은 로그 메시지를 기록하기 위한 것입니다. -m 옵션으로 로그 메시지를 주지 않으면 다음과 같은 에러 메시지를 출력하면서 import 가 되지 않습니다.

svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and
 no 'editor-cmd' run-time configuration option was found

물론, 위에서 말하는 환경 변수를 설정해 주셔도 됩니다.

이 정도가 되면 subversion 을 쓰기 위한 준비가 다 됐다고 할 수 있습니다. subversion 을 이용해서 성공적인 프로젝트 수행하시기 바랍니다.

마지막으로 제가 설치를 위해 다운 받았던 파일들을 첨부합니다. 필요하신 분은 여기서 다운 받아서 설치하시기 바랍니다.

ActivePython 2.5.2.2



CollabNet Subversion Server(Apache, OpenSSL, Subversion Client 포함)



VisualSVN Server(Visual SVN에서 제공하는 Server 패키지, Windows 와 좀 더 잘 통합됨)


CollabNet Subversion Client


TortoiseSVN Client(Explorer 와 잘 통합된 SVN GUI Client)




RapidSVN(Cross Platform SVN GUI Client)


제 글이 유익하셨다면 오른쪽 버튼을 눌러 제 블로그를 구독하세요. ->
블로그를 구독하는 방법을 잘 모르시는 분은 2. RSS 활용을 클릭하세요.
RSS에 대해 잘 모르시는 분은 1. RSS란 무엇인가를 클릭하세요.