2010년 7월 23일 금요일

Trac, Apache, SVN 연동하기

프로젝트의 운영관리에서 이슈관리, 버전관리, 배포관리를 위한 관리 툴 SVN 과 Trac의 연동을 해보자.

SVNTrac은 설치에서 사용 및 응용이 쉽다. 때문에 빠르게 전파되어 지금은 많은 개발자들이 사용하는 관리 툴이 아닌가 한다. 간단하게 설명하고 바로 설치 및 연동을 해보기로 한다.


Python으로 작성된 오픈소스로 웹기반의 프로젝트 관리 및 버그 추적 툴.
Trac은 버전관리 프로그램(SVN)의 웹 인터페이스
개선점 및 버그와 같은 각종 이슈의 트래킹
위키 커뮤니티를 통한 문서의 관리 기능을 제공.





서버-클라이언트 모델로 서버와 클라이언트는 http, https, svn, svn+ssh의 규약으로 통신한다.
단위 등록이 가능하므로, 다른 사용자의 등록과 엉키지 않는다.
이름을 변경, 복사, 삭제시에도 리버전 기록을 유지한다.
파일의 저장 후 변경될 경우 차이점만 저장하기 때문에 저장소의 효율이 높다.
디렉토리도 버전관리 할 수 있다.
디렉토리 전체를 빠르게 이동, 복사 가능하며, 리버전 기록도 그대로 유지한다.
저장소의 크기에 상관 없이 일정 시간안에 branching, tagging 할 수 있다.
저장소의 접근이 최적화 되어 있어, 네트워크 트래픽을 줄일 수 있다.




 
Apache + SVN + Trac 연동
3가지의 소프트웨어를 연동하게 되면 보다 쉽게 프로그램의 컨트롤이 가능하다.
Apache와 SVN을 연동하여 http통신 규약으로 SVN 컨트롤이 가능하다.
SVN과 Trac을 연동하여 Trac을 통한 SVN저장소의 조회/관리가 가능하다.
또한 Trac을 통하여 SVN으로 관리되고 있는 소프트웨어 및 소스코드를 배포 할 수 있다.
이제 순서에 따라 프로그램의 설치 및 연동설정을 해보자.



Download Program:다운로드 프로그램
  1. SVN: Setup-Subversion-1.6.5.msi
    (Apache 2.2 버전과 연동하기 위해 Apache 2.2 버전용 파일을 다운로드 받는다.)

    2009년 10월 27일 Setup-Subversion-1.6.5.msi(Apache 2.2.x)다운로드 URL
  2. SVN Client Gui Tool: TortoiseSVN-1.6.6.17493-win32-svn-1.6.6.msi
    (일명 거북이(TortoiseSVN)를 다운로드 받는다.)

    2009년 10월 27일 다운로드 URL
  3. Apache(아파치): apache_2.2.9-win32-x86-no_ssl-r2.msi
    (Apache 2.2.x 버전을 다운로드 받는다. ssl을 사용할 경우 openssl 포함 버전을 받는다.)

    2009년 10월 27일 2.2.14 no ssl 버전 다운로드 URL
    2009년 10월 27일 2.2.14 openssl 버전 다운로드 URL
  4. Python(파이슨): python-2.5.msi
    (Python 2.5 버전을 다운로드 받는다. 현재 2.6 버전까지 나와있지만 현재 Trac 및 SVN을 Apache와 연동하기 위한 연동 모듈이 2.5 버전으로 작성되어 있으므로 2.6버전을 설치하면 연동이 불가능 하다.)

    2009년 10월 27일 다운로드 URL
  5. Apache 와 SVN 연동 모듈: svn-python-1.6.5.win32-py2.5.exe
    (Apache 와 SVN의 연동 모듈로 파악.
    버전이 맞지 않을때 증상: SVN 설치, Apache 연동, Trac 생성까지는 문제가 없다. 이후 Trac 사이트를 열게되면 사이트가 열리지 않고 브라우저 에러가 발생후 페이지 표시할 수 없음을 볼 수 있다.)

    2009년 10월 27일 다운로드 URL
  6. Genshi: Genshi-0.5.1.win32-py2.5.exe

    2009년 10월 27일 다운로드 URL
  7. setuptools: ez_setup.py
  8. mod_python: mod_python-3.3.1.win32-py2.5-Apache2.2.exe
    (설치된 Apache 버전을 확인하여 사용 가능한 모듈을 다운로드 받는다.)

    modpython 사이트 : http://www.modpython.org/
    2009년 10월 27일 다운로드 URL
  9. pysqlite: pysqlite-2.5.5.win32-py2.5.exe
    2009년 10월 27일 다운로드 URL
  10. enscript: enscript-1.6.3-9-bin.exe
    2009년 10월 27일 다운로드 URL
  11. trac: easy_install http://svn.edgewall.org/repos/trac/tags/trac-0.11
    (현재 사이트에 등록되어있는 0.11.5 버전을 설치하게 되면 에러가 발생한다. easy install을 사용하여 설치하면 이상없이 사용 가능하다.)



다운로드 해야할 파일이 생각 이상으로 많았다.
그리고 각각의 프로그램이 버전별로 다양하여 버전을 맞추는 것도 중요한 포인트 이다.
각각의 프로그램 및 모듈에 대한 보다 자세한 정보를 알고 싶을때에는 하단에 참고도서를 구매하여 읽어보면 많은 도움이 될것이라 생각한다.



Install & Setting:설치에서 연동까지

 ※주의 : 본 내용은 SVN, 아파치, Trac에대한 설치 위주의 설명이다 때문에 사용법등은 자세하게 기록하고 있지 않다. 사용법에 대한 설명이 필요하신 분은 댓글로 문의 부탁드립니다. 

1. SVN, SVN Client Tool 설치
위자드 형식의 설치를 지원하며 특별한 처리 없이 Next를 눌러 설치 한다.
(하단의 처리 내용은 기본설치 디렉토리 기준으로 설명을 합니다. 즉 C:\Program Files\Subversion 에 설치가 되어 있다는 가정을 합니다.)

2. SVN 저장소 만들기
명령 프롬프트를 실행한다.
c:>mkdir c:\repos
c:>cd c:\repos
c:\repos>svnadmin create sample

svnadmin 명령어를 사용하여 저장소를 생성할때에는 원하는 위치의 디렉토리로 이동 후에 생성할 저장소 명을 입력합니다.

C 드라이브의 repos 디렉토리에 sample 저장소를 생성 했다.
이 후 권한/계정/비밀번호 설정을 한다.
(SVN 사용법에 대한 검색을 하시면 쉽게 찾아볼 수 있습니다. 따로 설명하지 않습니다.)

3. SVN 저장소 실행
SVN 저장소가 정상적으로 생성 및 작동하는지 확인 하기 위하여 server를 실행한다.

명령 프롬프트를 실행한다.
svnserve.exe -d -r c:\repos
일반모드 실행(기본포트:3690) : 포트는 따로 설정하지 않고 기본포트를 사용한다.
SVN Client Tool을 사용하여 CheckOut 테스트를 하여 서버의 이상 유무를 확인 한다.

4. Apache 설치
2.2.x 버전을 설치한다.

5. Apache에 SVN 모듈 설치
httpd.conf 파일을 열어 다음설정을 추가
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module "C:\Program Files\Subversion\bin\mod_dav_svn.so"
LoadModule authz_svn_module "C:\Program Files\Subversion\bin\mod_authz_svn.so"

※ httpd.conf 파일은 아파치 설치 디렉토리의 bin 디렉토리에서 찾을 수 있습니다.
대략 60라인에서 LoadModule라는 단어를 찾을 수 있습니다.
위 내용의 모듈을 추가합니다.


6. SVN + Apache 연동

연동 모듈을 conf 파일에 명시한 후 Apache에서 사용할 계정/비밀번호를 설정한다.

비밀번호 설정 파일 생성
명령 프롬프트를 실행한다.
c:>cd c:\repos
c:>"C:\Program Files\Apache Software Foundation\Apache2.2\bin\htpasswd.exe" -c htpasswd admin
권한 설정 파일 생성
authz 파일을 저장소 Root (c:\repos)에 생성.
파일을 메모장 등의 편집기를 통하여 다음과 같이 작성한다.
[sample:/]
admin = rw
* =


정상적으로 진행하였다면 C 디렉토리에는 다음의 디렉토리 및 파일을 찾을 수 있다.


httpd.conf 파일에 다음설정을 추가
NameVirtualHost *:80
<VirtualHost *:80>
 <Location /svn>
  DAV svn
  SVNParentPath "C:\repos"

  AuthzSVNAccessFile "C:\repos\authz"

  AuthType Basic
  AuthName "Well Come !! Drake World"
  AuthUserFile "C:\repos\htpasswd"
  Require valid-user
 </Location>
</VirtualHost>

conf 파일을 수정한 이후 Apache를 Stop 시킨 후 Start 하여 http://localhost/svn/sample를 입력하여 저장소에 접근이 가능한지 확인 한다.
또한 SVN Client Tool을 사용하여 http 통신 규약으로 저장소의 접근 및 관리가 가능한지 확인 한다.

※ 지금까지 순서에 맞게 진행하였다면 Apache 와 SVN의 설치에서 연동까지 확인이 가능할 것이다. 이제 Apache 와 SVN의 설치 및 연동을 완료하였다. 아직 갈 길이 멀다. 담배 한가치 태우면서 휴식을 취하자.







충분히 휴식을 취하였는가? 그럼 상당히 애먹을 수 있을 작업을 시작해보자.
위의 다운로드에서 가볍게 언급하고 지나갔지만 연동을 위해서 필수적으로 체크해야 하는 부분은 각각의 주요 프로그램들의 버전 정보의 확인 및 일치 작업이다.

확인 및 일치 시켜야 할 버전 정보
Apache 2.2.x
SVN 1.6.x
Python 2.5
Trac 0.11

다운로드 파일 목록의 버전 정보를 확인 후에 다운로드 파일의 버전이 일치 하지 않는다면 다시 맞는 버전을 다운로드 받는다. 설치 중 설치가 되지 않거나, 설치가 되어도 정상 작동을 하지 않는다.

7. Trac 설치
※ 주의:python, svn, apache, trac 등의 버전을 확인하여 모두 일치할 수 있도록 한다.

a. python 설치 : python-2.5.msi 실행
b. svn-python 설치 : svn-python-1.6.5.win32-py2.5.exe 실행
svn 과 python의 버전을 확인하여 설치된 버전에 맞는 프로그램을 설치

c. Genshi 설치 : Genshi-0.5.1.win32-py2.5.exe 실행
d. setuptools 설치  : ez_setup.py 실행
e. mod_python 설치
mod_python-3.3.1.win32-py2.5-Apache2.2.exe 실행
apache 버전을 확인하여 설치된 버전에 맞는 프로그램을 설치
httpd.conf 파일에 다음설정을 추가

LoadModule python_module modules/mod_python.so

f. pysqlite 설치 : pysqlite-2.5.5.win32-py2.5.exe 실행
g. enscript 설치 : enscript-1.6.3-9-bin.exe 실행
h. trac 설치
※ 참고한 서적에 나와있는 설치 버전과 지금 현재의 최신 버전은 버전의 차이가 있다. 또한 지금까지 설치한 다른 모듈 및 프로그램과의 버전 문제가 있어서 쉽게 설치 되지 않았다.

현재까지 필자가 제시한 모듈 및 프로그램을 그대로 다운로드 하여 설치한다면 Trac을 다음과 같이 설치해보자.
easy install을 사용하여 설치하는 방법으로 Python을 2.5로 설치 하였다면 C:\python25\script 디렉토리에서 easy_install 또는 easy_install.exe 파일을 발견할 수 있다.

명령 프롬프트를 실행한다.

c:>cd c:\python25\script
c:\python25\script>easy_install http://svn.edgewall.org/repos/trac/tags/trac-0.11

easy install을 실행하여 0.11 버전의 trac을 설치 한다.

8. Trac 생성
지금까지 설치가 정상적으로 되었다면 다음 명령어를 통하여 Trac을 생성 할 수 있다.

Trac의 Root 디렉토리로 사용할 디렉토리(C:\trac)를 생성한다.
명령 프롬프트를 실행한다.

c:\Python25\Scripts>trac-admin.exe c:\trac\sample initenv

※ 명령어 설명
 - trac-admin.exe : trac 프로젝트를 생성하는 명령어
 - c:\trac\sample : trac root 디렉토리 c:\trac에 sample 라는 trac을 생성
 - initenv : 생성 명령어

Trac이 정상적으로 설치 되어 있다면 다음과 같은 화면을 보게된다.



[My Project] 에는 프로젝트 명으로 sample 를 입력.
[sqlite:db/trac.db] 엔터를 입력하면 기본 설정된다.
[svn] 저장소의 저장 형태를 입력하는 부분으로 엔터를 입력하면 기본 설정된다.
[/path/to/repos] 저장소의 path를 입력한다.

마지막 엔터를 입력한 순간 Trac이 생성된다. 모듈이 모두 정상적으로 설치되어 있다면 Congratulations! 라는 메시지를 보게되면 그렇지 않다면 오류가 나는 부분의 에러를 확인 할 수 있다.
대부분의 에러는 버전이 일치하지 않아 발생한다.

9. svn + apache + trac 연동설정
마지막으로 apache 와 trac를 연동하여 웹 브라우저를 통하여 확인해 보자.

httpd.conf 파일의 <VirtualHost> 태그의 자식 노드로 다음 내용을 추가한다.
위에서 SVN과 Apache를 연동하기 위하여 Location 설정을 해보았다.
기본 입력 Host에 Trac의 입력 Location을 추가하는 과정이다.
NameVirtualHost *:80
<VirtualHost *:80>
 <Location /svn>
  DAV svn
  SVNParentPath "C:\repos"

  AuthzSVNAccessFile "C:\repos\authz"

  AuthType Basic
  AuthName "Subversion repository"
  AuthUserFile "C:\repos\htpasswd"
  Require valid-user
 </Location>

 <Location /trac>
  SetHandler mod_python
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir "C:\trac"
  PythonOption TracUriRoot "/trac"
 </Location>

 <LocationMatch "/trac/[^/]+/login">
  AuthType Basic
  AuthName "Trac"
  AuthUserFile "C:\repos\htpasswd"
  Require valid-user
 </LocationMatch>

</VirtualHost>

주의를 기울여 보면 알겠지만 C:\repos에 위치하는 htpasswd 파일을 같이 사용하여 관리한다.

10. SVN + Apache + Trac 연동확인
모든 작성이 완료되면 Apache 서버를 정지 후 다시 실행 시킨다. Restart를 하면 설정정보를 다시 읽어오지 않기 때문에 Stop 후 Start 하여 실행한다.

인터넷 브라우저를 열고 http://localhost/trac를 입력하여 정상작동을 확인한다.
생성한 sample 프로젝트의 링크를 클릭하여 정상작동을 확인한다.

이후의 설정 및 다양한 추가 설정은 스스로 확인 해보자.
아래 추천하는 서적을 읽어보면 필요하다 싶은 내용은 다 나와있다.


참고 자료
위에 설명된 내용은 기존에 알고 있던 몇가지 사항 외에는 많은 부분을 책에서 도움받았다.

윈도우 프로젝트 필수 유틸리티 - 10점
이재홍 지음/한빛미디어


프로젝트의 운영관리를 위한 개발환경의 구성과 필요한 유틸리티들이 잘 소개되어 있다.
본문의 내용중에 나온 SVN 과 Trac의 보다 많은 사용법과 특징, 개념 등에 대한 설명이 잘 되어있는 편이다. 그리고 쉽고 필요 요소만이 설명되어 있기 때문에 부담없이 볼수 있는 책이다.

책에대한 자세한 내용은 다음에 독후감의 형식을 빌려 소개하기로 하자.

프로그램 파일의 대부분은 Google 검색을 통하여 찾았다.
아직은 원하는 내용의 프로그램들을 한번에 다운로드 하여 통합 설치하는 형식의 것들은 나와있지 않다.
그리고 버전에 맞는 프로그램을 다운로드 하는 것 또한 만만한 일이 아니였다.


출처 : http://codepedia.tistory.com/80

댓글 없음:

댓글 쓰기