대표적인 이슈 관리 시스템 중 하나인 Trac 을 설치하고 사용하는 방법에 대해서 설명한다.

Trac 이란

이슈 관리 시스템? 말이 좀 어렵다.
쉽게 말해서, 소스코드가 개발되는 과정을 웹상에서 추적 하기 쉽게 해주는 시스템이라고 보면 될 것 같다(subversion + apache).
소스코드가 수정된 히스토리와 버그 리포트, 버그 디버깅 내역, 프로젝트 진행 상황을 하나로 합쳐, 쉽게 공유할 수 있게 해준다.
'윈도우 프로젝트 필수 유틸리티' 라는 책에서 나온 Trac 의 설명은 아래와 같다.

위키, 이슈(티켓) 관리, subversion 이 절묘하게 조화를 이루고 있는 시스템이다. 
subversion 의 사용자 계정을 연동하여 사용할 수 있다. 이슈를 티켓이라고 부르며, 이 티켓에 위키 문법을 지원하며, subversion 커밋 로그 메시지에도 위키 문법을 지원한다. 
또한 subversion 커밋 로그 메시지를 티켓에 바로 답글을 달 수 있는 기능이 있다. 
티켓에 마일스톤, 컴포넌트, 버전, 담당자 등을 지정할 수 있고, 로드맵 메뉴에서 해결된 티켓의 개수를 막대(상태진행 바) 형태로 표시해주며 백분율로 알려준다. 
마일 스톤, 컴포넌트 버전, 담당자 별로 막대를 표시해 줄 수도 있다. 
subversion 뿐만 아니라 CVS, bazaar, mercurial, darcs, perforce, monotone, SVK, arch, clearcse, git 등의 버전 관리 시스템도 지원한다. 
플러그인 형태로 여러가지 기능을 추가할 수 있다.

준비운동 하기

먼저 Trac 설치를 해야 한다. 현재 Trac 은 윈도우과 리눅스 모두 지원한다. 윈도우에서의 설치방법은 마우스 클릭 몇번으로 설치가 가능하다.
설치 방법은 http://wiki.kldp.org/wiki.php/TracOnWindows TOW (Trac On Windows) 를 참고하기 바란다.
여기서는 리눅스에서의 설치 방법에 설명할 것이다. 설치 환경은 다음과 같다.

CPU IBM X40
OS Debian(VMware) Testing

소스 리스트는 다음과 같다.

deb http://ftp.kr.debian.org/debian/ lenny main
deb-src http://ftp.kr.debian.org/debian/ lenny main
 
deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main

설치하기

Trac 은 apache 와 subversion, python 과 연동하여 실행되므로 같이 설치한다.
여기서는 각각 아래의 버전을 사용했다.

  1. apache - 2.2.9
  2. subversion - 1.4.6
  3. trac - 0.10.4
  4. python - 2.5.2
#apt-get install subversion libapache2-svn
#apt-get install trac libapache2-mod-python

설치가 되었다면, 설정을 위해 subversion 과 trac 을 위한 디렉토리를 지정해야 한다.
여기서는 다음과 같이 각각 경로를 지정했다.

subversion 메인 디렉토리 /var/lib/svn
trac 메인 디렉토리 /var/lib/trac

scvos 라고 하는 프로젝트를 만들어 사용한다.

subversion /var/lib/svn/scvos
trac /var/lib/trac/scvos

앞에서 정의한 디렉토리를 직접 생성한다.

#mkdir /var/lib/svn
#chown -R www-data:www-data /var/lib/svn
#mkdir /var/lib/trac
#chown -R www-data:www-data /var/lib/trac

불특정 다수를 대상으로 SSL 서버를 구출할 경우 공인인증기관이 서명한 서버인증서를 구입하는 것이 좋다
여기서는 자기 스스로 서명한 서버인증서를 기준으로 진행한다.

#apt-get install openssl
#cd ~
#openssl req -new -x509 -nodes -out server.crt -keyout server.key
항목 입력값
Country Name (2 letter code) (GB) KR (국가코드를 입력한다)
State or Province Name (full name) (Some-State) 엔터 (주 혹은 도 이름을 입력한다)
Locality Name (eg, city) () Seoul (거주하는 도시이름을 입력한다)
Organization Name (eg, company) (Internet Widgits Pty Ltd) MyHome (조직명 또는 회사명을 입력한다)
Organizational Unit Name (eg, section) () 192.168.80.128 (서버 완전한 도메인 이름을 입력한다)
Email Address () fat81@hanmail.net

제대로 생성되었다면, server.key(private key 파일) 와 server.crt(public key 를 포함한 인증서 파일) 파일이 생성되었을 것이다.

#ls server*

인증서 파일을 적절한 위치로 복사한다.

#mkdir /etc/apache2/ssl
#cp server.key server.crt /etc/apache2/ssl
#chmod 600 /etc/apache2/ssl/server.key
#rm server.key server.crt

SSL 암호화를 지원하기 위해서 mod_ssl 모듈을 활성화 시킨다.

#ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/
#ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/

apache 서버가 https 의 기본 포트인 443 이 열려있는지 확인한다(/etc/apache2/ports.conf).

Listen 80
 
<IfModule mod_ssl.c>
    Listen 443
</IfModule>

https 서비스를 제공하는 VirtualHost 가 사용할 DocumentRoot 를 생성한다.

#mkdir /var/www-ssl

설정을 위해 /etc/apache2/sites-available/ssl 파일에 다음을 추가한다.

NameVirtualHost *:443
<VirtualHost *:443>
  DocumentRoot /var/www-ssl
 
  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
 
  <Location /svn>    # Subversion 설정
    DAV svn
 
    # any "/svn/foo" URL will map to a repository /var/lib/svn/foo
    SVNParentPath /var/lib/svn
 
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /etc/dev_passwd
    Require valid-user
  </Location>
 
  <Location /projects> # Trac 설정
    SetHandler mod_python
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnvParentDir /var/lib/trac
    PythonOption TracUriRoot /projects
 
    AuthType Basic
    AuthName "Trac, Issue Tracking and Documenting"
    AuthUserFile /etc/dev_passwd
    Require valid-user
  </Location>
</VirtualHost>

설정 파일을 적용하기위해 apache 를 재시작한다.

#ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/
#/etc/init.d/apache2 restart

VirtualHost 를 이용해서 http, https 를 동시에 지원하며, subversion 과 trac의 모든 전송내용이 암호화되며, 하나의 사용자인증파일을 공유한다.

사용자를 생성하고, 암호를 저장하는 데 htpasswd 라는 명령어를 사용한다. htpasswd 에서 자주 사용하는 옵션은 다음과 같다.

  1. -c : 파일 생성하기. 처음 실행할 때 1번만 주면 된다
  2. -m : MD5 암호화하기

아래와 같이 생성한다.

#htpasswd -cm /etc/dev_passwd fat81

이후, 암호를 입력해주면 된다. 제대로 추가되었는지, /etc/dev_passwd 파일을 확인한다.

subversion 저장소를 생성한다.

#svnadmin create /var/lib/svn/scvos

trac 은 특정한 구조를 가진 subversion 저장소만 인식할 수 있다.

#svn mkdir file://localhost/var/lib/svn/scvos/branches -m "initial structure1"
#svn mkdir file://localhost/var/lib/svn/scvos/tags -m "initial structure2"
#svn mkdir file://localhost/var/lib/svn/scvos/trunk -m "initial structure3"

apache 를 재시작한다.

#/etc/init.d/apache2 restart

웹브라우저로 'https://192.168.16.128/svn/scvos' 에 접속해본다. 로그인 창이 뜰 것이다. 앞에서 지정했던 아이디와 비밀번호를 입력한다. 프로젝트 소스가 보이면 정상이다.

#chown -R www-data:www-data /usr/share/trac
#chown -R www-data:www-data /var/lib/svn
#/etc/init.d/apache2 restart
#trac-admin /var/lib/trac/scvos initenv
항목 입력값
Project Name (My Project) scvos
Database connection string (sqlite:db/trac.db) 엔터
Repository type (svn) 엔터
Path to repository (/var/svn/test) /var/lib/svn/scvos
Templates directory (/usr/share/trac/templates) 엔터

'Congratulations!' 메세지가 보인다면, 정상적으로 초기화가 된 것이다.
이를 반영하기 위해 apache 를 재시작한다.

#chown -R www-data:www-data /var/lib/trac
#/etc/init.d/apache2 restart

웹브라우저로 'https://192.168.16.128/projects' 에 접속한다. 프로젝트 리스트가 보여야 정상이다.
개별 프로젝트에 들어가면 trac 이 설정해 놓은 페이지가 보인다. 이로서 기본적인 설치를 끝났다.

플러그인 설치 및 설정

trac을 관리할 관리자 계정을 만들어야 한다.

#trac-admin /var/lib/trac/scvos permission add fat81 TRAC_ADMIN

trac 의 설정 파일은 각 프로젝트의 conf 디렉토리 아래에 있는 trac.ini 파일이다. 이 파일을 일일이 수정하기는 번거롭다.
그래서 trac 에서는 여러가지 플러그인을 지원한다. 그 중에서 'Ini Admin Plugin' 을 설치한다.
자세한 설치 방법은 http://trac.edgewall.org/wiki/WebAdmin 를 참고한다.
먼저 플러그인을 다운받아야 한다.

svn export http://svn.edgewall.com/repos/trac/sandbox/webadmin/

trac.ini 파일에 다음을 추가한다.

[components]
webadmin.* = enabled

설치를 한다.

#cd webadmin
#python setup.py install

apache 를 재시작한다.

#/etc/init.d/apache2 restart

'https://192.168.16.128/projects/scvos' 에 접속했을 때, 오른쪽 위의 항목에 'admin' 이라는 항목이 생겼으면, 제대로 설치가 된 것이다.

소스코드에서 문법 강조(Syntax Highlighting) 기능을 사용하기 위해서는 enscript 라는 프로그램이 필요하다.
만일 설치되지 않았다면, 설치한다.

#apt-get install enscript

trac.ini 파일에서 다음을 확인한다.

[mimeviewer]
enscript_modes = text/x-dylan:dylan:4
enscript_path = enscript
...

백업하기

trac 데이터베이스와 첨부파일을 백업할 수 있도록 해주는 명령이 바로 trac-admin hotcopy 명령이다.
같은 컴퓨터상의 다른 하드디스크로도 복사할 수 있다.

#trac-admin /var/lib/trac/scvos hotcopy /opt

다음 명령을 통해 백업할 수 있다.

#svnadmin hotcopy /var/lib/trac/scvos /opt

FAQ

trac.ini 파일에 'default_charset = EUC-KR' 로 수정한다.

  • computer/programming/trac_사용하기.txt
  • Last modified: 3 years ago
  • by likewind