IT_Programming/Dev Tools

데비안 계열에서 apt-get으로 Trac, Subversion 설치하기

JJun ™ 2011. 4. 3. 12:01

-----------------------------------------------------------------------------------------------

출처: http://taekgeun.tistory.com/20

-----------------------------------------------------------------------------------------------

 

소프트웨어를 개발할 때 이슈트래킹시스템은 필수이다. 이슈트래킹 시스템은 여러가지가 있겠지만

많이 사용하는것은 Bugzilla, Mantis, Trac, Jira 정도다. 이중 Bugzilla 와 Jira는 써보지 않아서

잘 모르겠고 mantis와 trac은 써봤는데 각기 나름대로 장단점을 가지고 있다.


Mantis는 이슈관리적인 측면에서 가장 충실한 것 같고 Localization도 잘되어 있다.

또한 최신버전은 Dokuwiki가 포함되어 있기때문에 wiki와의 통합도 쉬우며 다양한 통계정보까지 지원한다.

반면에 SVN과의 통합을 위해선 추가로 설정해줘야할 부분이 있으며 프로젝트 관리 개념이 들어가 있지는 않다. Trac은 최근 개발자들 사이에서 가장 많이 쓰이는 것 같고 SVN과의 통합이 기본적으로 지원되며

모든 텍스트에 wiki문법을 사용할 수 있다. 하지만 여러가지 통계정보를 제공해 주지는 않으며 설치도

쉽지 않은 것 같다.

다음은 Ubuntu 8.10 Desktop 버전에서 Trac을 설치하는 방법이다.
우분투에서는 apt-get 을 이용해 필요한 패키지를 쉽게 설치할 수 있다.

1. 아파치 웹서버 설치
  Trac을 웹서버없이 단독으로 올릴 수는 있지만 그리 권장할 만 하지는 않다.
  그리고 Ubuntu Desktop에는 아파치 웹서버가 기본설치되지 않기 때문에 다음과 같이 설치해야 한다.

$ sudo apt-get install apache2

2. Subversion 설치
  Trac은 서브버전과 통합된 형태이기 때문에 Subversion도 설치해야 한다.(svn 1.5.1 이 설치됨)
$ sudo apt-get install subversion libapache2-svn

3. Trac 설치
  Trac은 최신버전인 0.11 이 설치된다.
$ sudo apt-get install trac libapache2-mod-python python-setuptools

4. 서브버전 저장소 생성
  서브버전 저장소를 /var/lib/svn 밑에 설정할 경우 다음과 같이 디렉토리를 생성한다.
$ sudo mkdir -p /var/lib/svn
  저장소 디렉토리를 생성한다.
$ sudo mkdir /var/lib/svn/myproejct
$ sudo svnadmin create /var/lib/svn/myproejct


5. Trac설정
  이 설치과정에서는 “/var/lib/trac” 디렉터리를 만들고, 여기에 Trac 프로젝트를 만든다.

  DB SQLite를 사용하며, 소스 저장소는 Subversion을 사용하도록 설정한다.

$ sudo mkdir –p /var/lib/trac

$ cd /var/lib/trac

$ sudo trac-admin myproject initenv

 

# 프로젝트 입력

Project Name [My Project]> myproject

# DB 연결 설정

Database connection string [sqlite:db/trac.db]> 엔터

# 소스 저장소 타입 설정

Repository type [svn]> 엔터

# 저장소 경로

Path to repository [/path/to/repos]> /var/lib/svn/myproject

 

$ sudo chown -R www-data.www-data /var/lib/svn

6. Trac관리자 설정

Trac 0.11 버전부터는 WebAdmin 이 기본적으로 포함되어 있기 때문에 다음과 같이 반드시 관리자설정을 하는게 좋다.

$ sudo trac-admin myproject permission add admin TRAC_ADMIN
 myproject 는 프로젝트 명이고 admin은 유저id이며 나중에 web에서 admin메뉴를 들어갈 수 있다.

 

 

 

7. Trac logo 설정 변경

트랙설치경로/conf 디렉토리 밑에 trac.ini 파일에 다음 항목을 수정한다.

[header_logo]

alt =

height = -1

link = http://트랙설치한 ip/myproject

src = common/trac_banner.png

width = -1

 

 

 

8. 아파치 웹서버 설정

dav_svn.conf 에 서브버전 설정 추가 (Tortoise 나 Eclipse subversion 클라이언트에서 접속할 때

주소는 http://트랙설치ip/svn/myproject 이다.)

$ sudo nano /etc/apache2/mods-available/dav_svn.conf

 

Subversion을 위한 설정

# dav_svn.conf - Example Subversion/Apache configuration

#

# For details and further options see the Apache user manual and

# the Subversion book.

#

# NOTE: for a setup with multiple vhosts, you will want to do this

# configuration in /etc/apache2/sites-available/*, not here.

 

# <Location URL> ... </Location>

# URL controls how the repository appears to the outside world.

# In this example clients access the repository as http://hostname/svn/

# Note, a literal /svn should NOT exist in your document root.

<Location /svn> <- 주석제거

 

  # Uncomment this to enable the repository

  DAV svn <- 주석제거

 

  # Set this to the path to your repository

  #SVNPath /var/lib/svn

  # Alternatively, use SVNParentPath if you have multiple repositories under

  # under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2, ...).

  # You need either SVNPath and SVNParentPath, but not both.

  SVNParentPath /var/lib/svn <- 주석제거

  SVNListParentPath on <- 추가

 

  # Access control is done at 3 levels: (1) Apache authentication, via

  # any of several methods.  A "Basic Auth" section is commented out

  # below.  (2) Apache <Limit> and <LimitExcept>, also commented out

  # below.  (3) mod_authz_svn is a svn-specific authorization module

  # which offers fine-grained read/write access control for paths

  # within a repository.  (The first two layers are coarse-grained; you

  # can only enable/disable access to an entire repository.)  Note that

  # mod_authz_svn is noticeably slower than the other two layers, so if

  # you don't need the fine-grained control, don't configure it.

 

  # Basic Authentication is repository-wide.  It is not secure unless

  # you are using https.  See the 'htpasswd' command to create and

  # manage the password file - and the documentation for the

  # 'auth_basic' and 'authn_file' modules, which you will need for this

  # (enable them with 'a2enmod').

  AuthType Basic <- 주석제거

  AuthName "Subversion Repository" <- 주석제거

  AuthUserFile /etc/apache2/dav_svn.passwd <- 주석제거

 

  # To enable authorization via mod_authz_svn

  #AuthzSVNAccessFile /etc/apache2/dav_svn.authz

 

  # The following three lines allow anonymous read, but make

  # committers authenticate themselves.  It requires the 'authz_user'

  # module (enable it with 'a2enmod').

  #<LimitExcept GET PROPFIND OPTIONS REPORT>

    Require valid-user <- 주석제거

  #</LimitExcept>

</Location>* <- 주석제거

 

 

 

9. 아파치 가상호스트 수정

$ sudo nano /etc/apache2/sites-available/default


# Trac

<VirtualHost *:80>

    ServerAdmin webmaster@localhost

 

    <Location />

        SetHandler mod_python

        PythonHandler trac.web.modpython_frontend

        PythonOption TracEnvParentDir /var/lib/trac

        PythonOption TracUriRoot /

    </Location>

 

    <LocationMatch "[^/]+/login">

        AuthType Basic

        AuthName "Trac Authentication"

        AuthUserFile /etc/apache2/dav_svn.passwd

        Require valid-user

    </LocationMatch>

</VirtualHost>

 

10. 사용자 생성

htpasswd로 사용자 암호를 만든다. 처음 만들 때만 –c 옵션을 주고 생성한다.

두 번째 사용자부터는 암호 파일 명과 사용자 아이디만 입력하면 된다.

$ sudo htpasswd –c /etc/apache2/dav_svn.passwd admin

$ sudo htpasswd /etc/apache2/dav_svn.passwd user1

 

 

 

11. Trac 초기화면