Trac설치 마지막 포스트로 레드헷계열의 리눅스에서 소스를 컴파일하여 trac및 subversion을 설치하는 방법을 올린다.
다른환경에서의 설치는 아래링크를 참조하면 된다.

데비안계열에서 apt-get으로 trac,subversion설치하기
윈도우환경에서 TOW로 trac설치하기
visualsvn과 mysql을 이용한 trac설치방법

1. expat 라이브러리설치
shell>wget http://sourceforge.net/projects/expat/files/expat/2.0.1/expat-2.0.1.tar.gz/download
shell>tar xvfz expat-2.0.1.tar.gz
shell>cd expat-2.0.1
shell>./configure --prefix=/usr/local/expat && make && make install

2. python설치
shell>wget http://www.python.org/ftp/python/2.6.4/Python-2.6.4.tar.bz2
shell>tar xvfj Python-2.6.4.tar.bz2
shell>cd Python-2.6.4
shell>./configure && make && make install
shell>cd /usr/bin
shell>rm python
shell>ln -s /usr/local/bin/python2.6 python

3. apache설치
shell>wget http://mirror.khlug.org/apache/httpd/httpd-2.2.14.tar.bz2
shell>tar xvfj httpd-2.2.14.tar.bz2
shell>cd httpd-2.2.14
shell>./configure --enable-dav --enable-so --enable-maintainer-mode --prefix=/usr/local/apache --with-expat=/usr/local/expat && make && make install

4. mod_python설치
shell>wget http://apache.tt.co.kr/httpd/modpython/mod_python-3.3.1.tgz
shell>tar xvfz mod_python-3.3.1.tgz
shell>cd mod_python-3.3.1
shell>./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/local/bin/python2.6 && make && make install
 위와 같이 했을 때 다음과 같이 src/connobject.c 142라인에서 에러가 나는것을 확인할 수 있다.
connobject.c: In function `_conn_read':
connobject.c:142: error: request for member `next' in something not a structure or union
apxs:Error: Command failed with rc=65536
.
make[1]: *** [mod_python.so] 오류 1
make[1]: Leaving directory `/root/install/mod_python-3.3.1/src'
make: *** [do_dso] 오류 2
이때는 직접 src/connobject.c 를 vi에디터로 열어서 뒤에 있는 b를 bb로 바꾸면 된다.
shell>vi ./src/connobject.c
142 라인의 !(b == APR_BRIGADE_SENTINEL(b) ||  에서 뒤에 b를 다음과 같이 bb로 고친후 저장한다.
!(b == APR_BRIGADE_SENTINEL(bb) ||
shell>./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/local/bin/python2.6 && make && make install

5. setupTools설치
shell>wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefe74e
shell>tar xvfz setuptools-0.6c11.tar.gz
shell>cd setuptools-0.6c11
shell>python ./setup.py install

6. sqlite 설치
shell>wget http://www.sqlite.org/sqlite-amalgamation-3.6.20.tar.gz
shell>tar xvfz sqlite-amalgamation-3.6.20.tar.gz
shell>cd sqlite-3.6.20/
shell>./configure --prefix=/usr/local/sqlite3 && make && make install

7. subversion설치
shell>wget http://subversion.tigris.org/downloads/subversion-1.6.6.tar.bz2
shell>tar xvfj subversion-1.6.6.tar.bz2
shell>cd subversion-1.6.6
shell>./configure --with-apxs=/usr/local/apache/bin/apxs --with-apr=/root/install/httpd-2.2.14/srclib/apr --with-apr-util=/root/install/httpd-2.2.14/srclib/apr-util --with-sqlite=/usr/local/sqlite3 && make && make install

위에서 /root/install/httpd-2.2.14 는 아파치소스압축을 푼 디렉토리를 입력해 주면 된다.
shell>make swig-py
shell>make install-swig-py
shell>echo /usr/local/lib/svn-python > /usr/local/lib/python2.6/site-packages/subversion.pth

8. subversion 레파지토리 생성
shell>cd /home
shell>mkdir trac
shell>cd trac
shell>mkdir repos
shell>cd repos
shell>svnadmin create Project1

9. svn접속 계정 생성
shell>cd /home/trac/repos
shell>/usr/local/apache/bin/htpasswd -c passwd username1

10. 아파치 svn설정
shell>vi /usr/local/apache/conf/httpd.conf

마지막 부분에 다음 내용 추가
<Location /svn/Project1>
  DAV svn
  SVNPath /home/trac/repos/Project1
  AuthType Basic
  AuthName "Project1's Repository"
  AuthUserFile /home/trac/repos/passwd
  Require valid-user
</Location>

11. pysqlite설치
shell>wget http://pysqlite.googlecode.com/files/pysqlite-2.5.5.tar.gz
shell>tar xvfz pysqlite-2.5.5.tar.gz
shell>cd pysqlite-2.5.5
shell>python ./setup.py install

12. Genshi설치
shell>easy_install Genshi

13. Trac설치
shell>easy_install Trac

14. Trac레파지토리 생성
shell>cd /home/trac/
shell>mkdir projects
shell>cd projects
shell>trac-admin ./Project1 initenv

Project Name  : 프로젝트 명 입력
Database connection string : sqlite선택(그냥엔터입력)
Repository type : svn(그냥엔터입력)
Path to repository : 아까 생성한 레파지토리주소입력(/home/trac/repos/Project1)

마지막에 Congratulations! 이라고 뜨면 정성적으로 레파지토리가 생성된 것임

15. 아파치 Trac설정
shell>vi /usr/local/apache/conf/httpd.conf

아래 항목 추가
LoadModule python_module      modules/mod_python.so
<Location /trac>
        SetHandler mod_python
        PythonInterpreter main_interpreter
        PythonHandler trac.web.modpython_frontend
        PythonOption TracEnvParentDir /home/trac/projects
        PythonOption TracUriRoot /trac
        PythonOption PYTHON_EGG_CACHE /tmp
</Location> 
<LocationMatch "/trac/[^/]+/login">
        AuthType Basic
        AuthName "Type your ID, Password"
        AuthUserFile /home/trac/repos/passwd
        Require valid-user
</LocationMatch>

16. trac디렉토리 권한 설정
기본적으로 아파치 웹서버가 daemon.daemon으로 뜨기 때문에 다음과 같이 바꿔준다.
shell>cd /home
shell>chown -R daemon.daemon trac

17. 아파치 데몬 실행
shell>/usr/local/apache/bin/apachectl start

18. python원본파일 복원
shell>cd /usr/bin
shell>mv python python2.6
shell>ln -s ./python2.3 python


19. 브라우져 확인
http://localhost/svn/Project1
http://localhost/trac/Project1

위의 주소에서 페이지가 정상적으로 뜬다면 설치가 완료된 것임



Trac은 다른건 다 좋은데 일정관리 측면에서는 빈약한게 사실이다. 물론 timetracking 플러그인 등 몇가지를 설치하면 비슷하게 흉내낼수는 있지만 레드마인처럼 간트차트를 보여주는건 아니기 때문에 여러가지로 미약하고 보통 MS Project같은걸 병행해서 쓰면서 일정관리를 하게 된다.
하지만 구굴링 결과 Trac에서도 간트차트를 보여주는 플러그인이 있었다 -.-
일본친구들이 만든 플러그인인데 강순권님의 블로그에 가보면 자세한 설치방법을 볼 수 있고 한글화도 잘 되어 있다.

주의사항 : Python2.4 이상에서만 작동함

아래는 플러그인 스샷






기본적으로 trac은 anonymous 유저에게 어느정도 열려있는 편이다. 즉 wiki, timeline, ticket등 대부분 기능들의 view권한이 주어진다는 얘기다. 하지만 프로젝트의 성격상 외부에 공개하기가 꺼려질때는 anonymous 유저들이 접속하는경우 로그인페이지를 보여주고 싶어질 때가 있다. 이때는 trac의 AccountManagerPlugin와 기타조합으로 비슷한 환경을 구축하면 된다.

1. AccountManagerPlugin 설치
  - install
easy_install http://trac-hacks.org/svn/permredirectplugin/0.11/

(easy_install이 제대로 안될 경우 여기서 직접 소스를 받아 압축 해제 후 python ./setup.py install 을 해준다.)

  - trac.ini 수정
[components]
acct_mgr.admin.accountmanageradminpage = enabled
acct_mgr.api.accountmanager = enabled
acct_mgr.db.sessionstore = enabled
acct_mgr.htfile.abstractpasswordfilestore = enabled
acct_mgr.htfile.htdigeststore = enabled
acct_mgr.htfile.htpasswdstore = enabled
acct_mgr.http.httpauthstore = enabled
acct_mgr.notification.accountchangelistener = enabled
acct_mgr.notification.accountchangenotificationadminpanel = enabled
acct_mgr.pwhash.htdigesthashmethod = enabled
acct_mgr.pwhash.htpasswdhashmethod = enabled
acct_mgr.svnserve.svnservepasswordstore = enabled
acct_mgr.web_ui.accountmodule = enabled
acct_mgr.web_ui.emailverificationmodule = disabled
acct_mgr.web_ui.loginmodule = enabled
acct_mgr.web_ui.registrationmodule = disabled
trac.web.auth.loginmodule = diabled

[account-manager]
password_file = /home/trac/.htpasswd    <------ 패스워드 파일의 저장위치
password_store = HtPasswdStore            <------ 기본 아파치 인증방식 사용

  - 아파치 웹서버상의 권한 설정 부분 삭제
<LocationMatch "/trac/[^/]">
     AuthType Basic
     AuthName "Type your ID, Password"
     AuthUserFile /home/trac/.htpasswd
     Require valid-user
</LocationMatch>

위의 부분을 삭제한다.

  - anonymous 권한 셋팅
  anonymous에 할당 된 권한을 체크 후 삭제한다.

브라우저로 접속하면 기본 로그인 페이지대신 에러페이지가 뜨는 것을 볼 수 있다.
이때는 PermRedirectPlugin을 사용하면 바로 로그인페이지로 이동시킬 수 있다.

2. PermRedirectPlugin 설치
  - install
여기서 소스를 다운후 python ./setup.py install로 설치한다.

  - trac.ini 수정
[components]
permredirect.* = enabled

  - 브라우져로 접속해 보면 로그인 폼이 뜨는 것을 확인할 수 있다

하지만 AccountManagerPlugin을 설치하면 XMLRpc 플러그인이 정상작동하지 않는다. 이럴땐 다음과 같이 HttpAuthPlugin을 설치하여 해결한다.

3. HttpAuthPlugin 설치
  - install
여기서 소스를 받은 다음 python ./setup.py install로 설치한다.

  - trac.ini 수정
[components]
httpauth.* = enabled

[httpauth]
paths = /xmlrpc, /login/xmlrpc



이전까지는 개인적으로 스터디하고 있는 코드저장소로 구글코드를 이용하고 있었다.
하지만 속도가 너무 느리고 무조건 open source 라이센스로 등록해야하기 때문에 다른곳을 찾고 있던 중 다음과 같이 두곳을 발견했다.

첫번째는  assembla
   이곳은 개인적인 용도로 쓴다면 300메가정도의 용량을 무료로 쓸 수 있다.
   svn과 더불어 trac까지 쓸 수 있기 때문에 대부분 개인적인 용도로 아주 적합할 것 같다.

두번째는 XP-Dev.com
   여기는 svn 호스팅 용량을 무려 1기가나 지원해 준다. trac은 없지만 별도로 프로젝트 및 이슈를 관리해 주는 툴을 자체적으로 가지고 있다.

다음은 assembla로 개설한 개인 프로젝트 공간과 trac 화면





지난번 포스트와 같이 TOW를 사용하면 단 몇분만에 trac을 설치할 수 있다. 하지만 설치되는 subversion과 trac의 버전이 조금 낮은 관계로 다음과 같이 visualsvn과 mysql을 이용해 최신버전의 trac을 설치할수 있다

1. Mysql 5.1 버전 설치
  여기 에서 다운로드 후 설치

2. trac용 디비 인스턴스 생성
  mysql>CREATE DATABASE trac_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

3. VisualSVN설치
   3.1 설치
  http://www.visualsvn.com/server/download/ 에서 다운로드 후 설치
  설치 시 secure connection 해제, 경로는 default, 포트는 80으로 설정


   3.2. 설치 후 실행화면


   3.3. 레파지토리 및 유저 생성




   3.4. VisualSVN설치종료 및 브라우져 접속 화면


4. Trac 설치
   4.1 http://www.visualsvn.com/server/trac/ 에서 VisualSVN용 trac을 다운로드

   4.2 C:\Program Files\VisualSVN Server\ 밑에 압축 해제

5. Python mysql 설정
   5.1 여기에서 ez_setup.py 다운로드


   5.2 c:\Program Files\VisualSVN Server\trac\python 디렉토리에 ez_setup.py를 복사 후 python\python ez_setup.py 로 설치


   5.3 MySQL_python-1.2.2-py2.5-win32.egg 파일을 여기서 다운로드 후 G:\Program Files\VisualSVN Server\trac\python\Lib\site-packages 에 복사


   5.4 c:\Program Files\VisualSVN Server\trac\python\Scripts\ 에서 easy_install mysql_python실행


6. Trac 레파지토리 생성
   6.1 C:\VisualSVN Server\trac에서 trac-admin 을 이용해 프로젝트를 생성.
  예)trac-admin C:\Trac\SpringStudy initenv


   6.2 프로젝트 명 입력


  6.3 데이터베이스에 mysql url 입력
  예)mysql://root:password@127.0.0.1/trac_db

  6.4 Repository Type는 기본인 svn을 선택하고 Path to repository에는 c:\Repositories\SpringStudy 입력



   6.5  트랙 레파지토리 설치완료


7. 아파치에 trac관련 정보 설정
   7.1 c:\Program Files\VisualSVN Server 에 있는 httpd-wrapper.bat파일에 다음 내용 추가

set PYTHONHOME=%~dp0\Trac\python

   7.2 c:\Program Files\VisualSVN Server\conf\httpd.conf 에 다음 내용 추가
LoadModule python_module trac/python/mod_python_so.pyd
LoadModule authz_user_module bin/mod_authz_user.so
<Location /trac>
    SetHandler mod_python
    PythonInterpreter main_interpreter
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnvParentDir C:\Trac
    PythonOption TracUriRoot /trac
    AuthName "Trac"
    AuthType Basic
    AuthBasicProvider file
    AuthUserFile "C:/Repositories/htpasswd"
    Require valid-user
</Location>
  
8. admin 계정에 관리자 권한을 부여
   trac-admin (c:\Trac\프로젝트설치폴더) permission add (SVN에등록된사용자) TRAC_ADMIN
  

9. Mylyn 연동을 위한 xmlrpcplugin 설치
   9.1   http://trac-hacks.org/wiki/XmlRpcPlugin에서 플러그인 다운로드
 
  9.2 c:\Program Files\VisualSVN Server\trac\python 디렉토리에 압축된 파일안에 있는trank 압축해제


   9.3 C:\Program Files\VisualSVN Server\trac\python>python setup.py bdist_egg 실행

   9.4 /dist 에 있는 egg 파일을 c드라이브의 c:\Trac\SpringStudy\plugins 에 복사
 

   9.5 c:\Trac\SpringStudy\conf\trac.ini 파일에 다음 내용 추가
        [components]
        tracrpc.* = enabled

10  trac로고 변경
   10.1 trac.ini에 다음 내용 수정
[header_logo]
alt =
height = -1
link = http://192.168.10.100/trac/SpringStudy
src = common/trac_banner.png
width = -1
11. visual svn 재시작 및 trac 접속 화면




지난번에 우분투에서 trac을 설치하는 방법에 이어 이번엔 윈도우에서 trac을 설치하는 방법이다.
원래 윈도우에서 trac을 설치하는게 만만치 않은데 tow(trac on windows)라는 걸 이용하면 5분이면 충분하다.
(tow만드신분이 한국분이신데 다시한번 노고에 감사드린다.)

1. TOW다운 받기
- 여기서 바이너리를 다운한다. (0.3 alpha 버전도 있지만 일단 0.2.2a버전을 까는것으로 한다.)
- 0.2.2a 버전에도 base 버전이 있고 standard버전이 있는데 차이점은 다음과 같다.

Base 패키지 구성
- python 2.4.4
- trac 0.10.4
- clearsilver 0.9.14
- apache 2.2.6
- mod_python 3.3.1
- subversion 1.4.5
- svn-python 1.4.5
- sqlite 3.5.2
- pysqlite 2.3.5
- easy_install

Standard 패키지 구성
- Base 패키지 포함
- Added Web Admin plugin
- Added Account Manager plugin
- Added XML-RPC plugin
- Added Eclipse Trac Integration plugin
- Added TracNav plugin
- Added WYSIWYG Editor plugin
- Added trac.ini Admin plugin
- Added TOC macro


- mylyn연동 까지 해야되기 때문에 standard버전을 깔도록 하자

2. 압축해제
- 디폴트인 c:\tow 로 풀리도록 하자. 굳이 경로를 바꾸려면 여기를 참조하면 된다.

3. start-tow.bat 파일 실행하면 끝이다. 정말 간단하지 않은가?  다시한번 제작자에게 감사의 말씀을 전하고 싶다.

4. start-tow.bat 를 실행한 후 브라우저로 접속했을 때 internal server에러가 났을 경우엔 trac.ini 파일내용 중 logging부분을 다음과 같이 변경해 주면 된다.

[logging]
log_level = WARNING
log_type = file

5. start-tow.bat파일을실행했을 때 다음과 같은 에러메세지가 표시되면서 서버가 뜨지 않으면 http://www.dll-files.com/dllindex/dll-files.shtml?msvcr71 에서 msvcr72.dll 을 다운로드 후 windows\system32 밑에 복사해 준다.

httpd: Syntax error on line 493 of C:/TOW/Apache/conf/httpd.conf: Cannot load C:
/TOW/Apache/modules/mod_python.so into server: \xc1\xf6\xc1\xa4\xb5\xc8 \xb8\xf0
\xb5\xe2\xc0\xbb \xc3\xa3\xc0\xbb \xbc\xf6 \xbe\xf8\xbd\xc0\xb4\xcf\xb4\xd9.

6. 서비스로 등록하기
매번 배치화일을 실행해야 한다면 번거로울 수 있다. 다음과 같이 하면 윈도우의 서비스에 등록시켜 자동으로 시작되도록 할 수 있다.

환경변수 등록
 - 원래 배치화일에 있던 환경변수 값들을 윈도우 시스템 환경변수에 등록해 준다.
   (PATH항목은 기존에 있는 PATH 항목의 뒤에 붙여준다.)
TOW_HOME=C:\TOW
TOW_TRAC_PRJ=C:\TOW\TracRepo\Projects
TOW_TRAC_REPO=C:\TOW\TracRepo
TOW_SVN_PRJ=C:\TOW\Projects
TOW_SVN_REPO=C:\TOW\SvnRepo
APACHE_HOME=C:\TOW\Apache
PYTHON_HOME=C:\TOW\Python
PYTHONPATH=C:\TOW\Python;C:\TOW\Python\DLLs;C:\TOW\Python\Scripts;C:\TOW\Python\lib;
SQLITE_HOME=C:\TOW\SQLite
SVN_HOME=C:\TOW\Subversion
PATH=C:\TOW\Subversion\bin;C:\TOW\Python;C:\TOW\Python\DLLs;C:\TOW\Python\Scripts;C:\TOW\Python\Lib;C:\TOW\Apache\bin;C:\TOW\Apache\modules;C:\TOW\SQLite;

- xp일 경우 환경변수를 등록 한 다음 서비스에서 traconwindows를 스타트 했을 때 정상적으로 동작하지 않으면 재부팅 후 다시 스타트하면 제데로 될 것이다.

 - 아파치 httpd.exe 를 이용 윈도우 서비스에 등록을 해준다.

cd c:\TOW\Apache\bin
c:\TOW\Apache\bin\httpd.exe -k install -n "TraconWindows"
  서비스를 삭제할 때는 httpd.exe -k uninstall -n "TraconWindows" 와 같이 해주면 된다.
(만약 위와 같이 등록했을 때 액세스가 거부되었습니다 라는 메세지가 나오면 administrator 계정으로 다시 로그인 한 후 재시도해 본다)

7. 신규 정보 생성

1) 사용자 등록
C:\TOW>add-user.bat <UserName> <Password>

2) 프로젝트 등록 하는 방법
C:\TOW>create-svn-repo.bat <ProjectName>
C:\TOW>create-trac-repo.bat <ProjectName>
해준 후 http://localhost:8080/projects/<ProjectName>으로 접속.




Mylyn은 이슈트래커와 통합되어 Task Focused UI를 제공해 주는 툴이다. 예전에는 Mylar였다가 이클립스 Europa버전부터 기본기능으로 포함된 것으로 안다.

다음은 우분투 데스크탑 8.10 + Trac 0.11 + 이클립스 가니메데버전에서 mylyn을 설정하는 방법이다.

1.
XML-RPC plugin 설치
 다음 명령으로 xml-rpc 플러그인을 설치한다.

2. Trac webadmin을 통해 관련 플러그인 활성화
  trac 0.11 버전부터는 어드민유저로 로그인했을때 기본적으로 admin메뉴를 볼 수 있다.
이 admin메뉴의 plugin 항목에서 TracXMLRpc1.0.0 항목을 모두 켜준다.

3. 이클립스에 mylyn trac연동 플러그인 설치
다음 업데이트 주소에서 trac 커넥터를 설치한다.
http://download.eclipse.org/tools/mylyn/update/extras

4. 태스크 레파지토리 추가
  - 서버항목에는 project까지 포함하는 전체 경로
    (프로젝트 이름이 myprojecdt이면 경로는 http://트랙접속주소/myproject)
  - 라벨은 생략가능
  - additional setting에서 xml-rpc 체크
  - userid, passwd에 아이디, 패스워드 입력
  - validate 클릭 후 ok 가 나오면 성공

5. New Query에 쿼리입력

6. 쿼리 등록 완료


소프트웨어를 개발할 때 이슈트래킹시스템은 필수이다. 이슈트래킹 시스템은 여러가지가 있겠지만 많이 사용하는것은 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 초기화면


만약 위 페이지가 뜨지 않고 권한이 없다는 화면이 뜰 경우 관련디렉토리 및 파일의 권한을 다시 설정해 주면 위의 초기화면을 볼 수 있다.

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