이 문서는 다음 두 곳을 상당부분 참고하여 작성되었습니다. TracOnWindows : http://yeoupooh.us.to:8080/wiki/display/pu/TracOnWindowstrac 한글번역 프로젝트 : http://kldp.net/forum/?group_id=724 trac 설치 TracOnWindows 패키지를 받아 http://yeoupooh.us.to:8080/wiki/display/pu/TracOnWindows 설명대로 설치trac 한글번역 프로젝트 0.10.4-ko (http://kldp.net/forum/forum.php?forum_id=3781) 설치 패키지파일을 받아 를 압축을 임시 폴더에 푼다.TracOnWindow 의 setenv.bat (C:\Trac\ 에 위치) 가 실행된 상태,압축이 풀어져있는 폴더의 루트에서 python ./setup.py install 수행 trac 플러그인 설치 기초작업 수행 C:\Trac\Python\Scripts 의 easy_install-2.4-script.py, easy_install-script.py 의 첫줄 경로를 수정해줄것(C:\Trac\Python\Python.exe 로)개별 플러그인 설치는 http://trac.edgewall.org/wiki/TracPlugins 을 참조할것 TracWebAdmin 플러그인 설치 TracWebAdmin-0.1.2dev_r4240-py2.4.egg 를 C:\Tra\Python\Scripts 폴더에 복사C:\Trac\Python\Scripts 에서 easy_install TracWebAdmin-0.1.2dev_r4240-py2.4.egg 를 수행C:\Trac\TracRepo\Projects\프로젝트명\conf 에서 trac.ini 의 마지막에 [components] / webadmin.* = enabled 의 두 줄을 추가 (http://trac.edgewall.org/wiki/WebAdmin#EnablingthePlugin 참고) AccountManager 플러그인 설치 TracAccountManager-0.1.3dev-py2.4.egg 를 C:\Trac\Python\Scripts 폴더에 복사C:\Trac\Python\Scripts 에서 easy_install TracAccountManager-0.1.3dev-py2.4.egg 를 수행 어드민계정을 설정 C:\Trac\SvnRepo\Projects 의 trac.passwd 파일 내용 제거C:\Trac 에서 'add-user admin 암호' 를 수행하여 새로운 암호의 admin 을 설정'trac-admin 프로젝트명 permission add admin TRAC_ADMIN' 을 주어 트랙 어드민 권한을 admin 에게 설정(http://trac.edgewall.org/wiki/TracPermissions) run-apache 로 아파치 기동하고, http://ip:8080/projects/프로젝트명 에 접속하여 admin 으로 로그인후 Admin 탭에서 플러그인 세팅 마저함. AccountManager 켜고 서버 재기동Admin 탭의 Accounts 항목 하부 Configuration 에서 패스워드 저장방법을 HtPasswdStore 로 설정하고 패스워드 파일의 경로를 풀패스(C:\Trac\SvnRepo\Projects\trac.htpasswd)로 지정해줄것 http://trac.edgewall.org/wiki/TracPermissions#PermissionGroups 를 참조해 그룹별 퍼미션 세팅WebAdmin 으로 기타 세부사항 수정(프로젝트 상단 배너나 링크주소 등등..)
by Anna 안나 2008. 7. 12. 22:17
{1}활성화된 모든 티켓들Active Tickets

* 활성화된 전체 티켓들을 볼 수 있습니다.
* 급한 티켓은 각 색을 기본으로 정렬됩니다.
* 티켓이 통과되어지면, 담당자의 이름 뒤에 '*' 가 붙습니다.

* List all active tickets by priority.
* Color each row based on priority.
* If a ticket has been accepted, a '*' is appended after the owner's name
SELECT p.value AS __color__,
id AS ticket, summary, component, version, milestone, t.type AS type,
(CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner,
time AS created,
changetime AS _changetime, description AS _description,
reporter AS _reporter
FROM ticket t
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
WHERE status IN ('new', 'assigned', 'reopened')
ORDER BY p.value, milestone, t.type, time


{2}Active Tickets by Version
This report shows how to color results by priority,
while grouping results by version.

Last modification time, description and reporter are included as hidden fields
for useful RSS export.
SELECT p.value AS __color__,
version AS __group__,
id AS ticket, summary, component, version, t.type AS type,
(CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner,
time AS created,
changetime AS _changetime, description AS _description,
reporter AS _reporter
FROM ticket t
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
WHERE status IN ('new', 'assigned', 'reopened')
ORDER BY (version IS NULL),version, p.value, t.type, time



{3}마일스톤 별 활성화된 모든 티켓들Active Tickets by Milestone
마일스톤 별 활성화된 모든 티켓들을 보여줍니다.

This report shows how to color results by priority,
while grouping results by milestone.

Last modification time, description and reporter are included as hidden fields
for useful RSS export.
SELECT p.value AS __color__,
milestone||' Release' AS __group__,
id AS ticket, summary, component, version, t.type AS type,
(CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner,
time AS created,
changetime AS _changetime, description AS _description,
reporter AS _reporter
FROM ticket t
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
WHERE status IN ('new', 'assigned', 'reopened')
ORDER BY (milestone IS NULL),milestone, p.value, t.type, time



{4}담당자별 활성화된 티켓들Assigned, Active Tickets by Owner

담당자별로 활성화된 티켓들을 보여줍니다.

List assigned tickets, group by ticket owner, sorted by priority.
SELECT p.value AS __color__,
owner AS __group__,
id AS ticket, summary, component, milestone, t.type AS type, time AS created,
changetime AS _changetime, description AS _description,
reporter AS _reporter
FROM ticket t
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
WHERE status = 'assigned'
ORDER BY owner, p.value, t.type, time

{5}
담당자별 활성화된 티켓들 자세히
Assigned, Active Tickets by Owner (Full Description)

담당자별로 활성화된 티켓들을 보여줍니다.

List tickets assigned, group by ticket owner.
This report demonstrates the use of full-row display.

SELECT p.value AS __color__,
owner AS __group__,
id AS ticket, summary, component, milestone, t.type AS type, time AS created,
description AS _description_,
changetime AS _changetime, reporter AS _reporter
FROM ticket t
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
WHERE status = 'assigned'
ORDER BY owner, p.value, t.type, time



{6}
마일스톤별 모든 티켓들
All Tickets By Milestone (Including closed)

마일스톤별로 해결된 티켓들까지 모두 보여줍니다.

A more complex example to show how to make advanced reports.

SELECT p.value AS __color__,
t.milestone AS __group__,
(CASE status
WHEN 'closed' THEN 'color: #777; background: #ddd; border-color: #ccc;'
ELSE
(CASE owner WHEN $USER THEN 'font-weight: bold' END)
END) AS __style__,
id AS ticket, summary, component, status,
resolution,version, t.type AS type, priority, owner,
changetime AS modified,
time AS _time,reporter AS _reporter
FROM ticket t
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
ORDER BY (milestone IS NULL), milestone DESC, (status = 'closed'),
(CASE status WHEN 'closed' THEN modified ELSE (-1)*p.value END) DESC


{7}
나에게 할당된 티켓들


이 리포트는 실행될 때 로그온한 사용자이름으로 자동으로 변경되는, $USER 동적 변수의 사용 방법을 보여줍니다.

This report demonstrates the use of the automatically set
USER dynamic variable, replaced with the username of the
logged in user when executed.


SELECT p.value AS __color__,
(CASE status WHEN 'assigned' THEN 'Assigned' ELSE 'Owned' END) AS __group__,
id AS ticket, summary, component, version, milestone,
t.type AS type, priority, time AS created,
changetime AS _changetime, description AS _description,
reporter AS _reporter
FROM ticket t
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
WHERE t.status IN ('new', 'assigned', 'reopened') AND owner = $USER
ORDER BY (status = 'assigned') DESC, p.value, milestone, t.type, time


{8}활성화된 티켓, 나에게 할당된 티켓들을 먼저 보여줍니다 Active Tickets, Mine first

* 우선순위별로 활성화된 모든 티켓들을 보여줍니다.
* 로그인한 사용자가 소유한 티켓들을 먼저 보여줍니다.

* List all active tickets by priority.
* Show all tickets owned by the logged in user in a group first.

SELECT p.value AS __color__,
(CASE owner
WHEN $USER THEN 'My Tickets'
ELSE 'Active Tickets'
END) AS __group__,
id AS ticket, summary, component, version, milestone, t.type AS type,
(CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner,
time AS created,
changetime AS _changetime, description AS _description,
reporter AS _reporter
FROM ticket t
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
WHERE status IN ('new', 'assigned', 'reopened')
ORDER BY (owner = $USER) DESC, p.value, milestone, t.type, time


-
by Anna 안나 2008. 7. 12. 18:42
참고사이트
http://bebop.emstone.com/projects/programming_rules/using_doxygen/
http://www.stack.nl/~dimitri/doxygen/index.html

Doxygen 사용법 by 양선진 ? 최종 수정일: 2007-02-20 18:46 Contents 특징 프로그램 사용방법 코드 문서화하기 태그 및 명령어 지원 에디터 참조 사이트 Doxygen은 C++, Java, IDL(Corba, Microsoft and KDE-DCOP flavors), C를 위한 문서 시스템이다. 특징 이 시스템은 소스 코드로 부터 온라인 문서(HTML), 오프라인 문서(Latex)를 생성하며, RTF(MS-Word), PostScript-x, Hyperlinked PDF, Compressed HTML 그리고 Unix man page 문서를 생성한다. 또한 비구조화된 소스 코드로 부터 코드의 구조를 추출해 낼 수 있으며, 의존선 그래프, 상속 다이어그램, 집합 다이어그램 등을 자동으로 생성한다. 프로그램 doxygen : 소스를 파싱하고 문서를 생성하는 주 프로그램 doxytag : doxygen 으로 생성한 외부 문서를 참조하거나 검색 엔진용 인덱스를 생성하기 위해 사용 doxysearch : 검색 엔진을 사용하기 위해 필요한 프로그램 doxywizard : doxygen 을 사용하기 위한 설정 파일을 조작하기 위한 GUI 프론트엔드 사용방법 doxygen 설정 하나 하나와 프로그램 실행 방법을 설명하는 것보다는, GUI 방식으로 설정과 생성 작업을 동시에 할 수 있는 doxywizard 사용을 권한다. 참고로 doxywizard 의 툴바에는 ? 명령이 있는데 이 버튼을 누르고 궁금한 항목을 클릭하면 도움말이 자세하게 나온다. 코드 문서화하기 기본적으로 Doxygen은 다음과 같은 주석을 문서의 일부로 인식한다./** - ... text ...( JavaDoc style ) -/ /*! - ... text ... ( Qt style ) -/ /*! ... text ... -/ /// /// ... text ... /// //! //! ... text ... //! /////////////////////////////////////// /// ... text ... /////////////////////////////////////// 하지만, 일관성을 위해 JavaDoc 형식을 사용할 것을 권한다. 모든 설명은 간략(brief)과 상세(detailed)로 나뉘어진다. 이렇게 나뉘는 이유는 문서를 생성할때 목차나 구조상 단계를 나눌때 사용할 설명을 구분하기 위해서다. 이를 위해 Doxygen은 두 가지 방법을 제공한다. 첫번째 방법은 명시적으로 brief 태그를 붙이는 경우이다. 이때 간략 설명과 상세 설명은 공백라인을 기준으로 구분한다./*! brief Brief descript-xion - Brief descript-xion continued. - - Detailed descript-xion start here. -/ 하지만 JavaDoc 스타일을 사용하거나 설정에서 JAVADOC AUTOBRIEF YES 를 사용하면 처음 나오는 점(.)을 기준으로 구분한다. 가능하면 이 방법을 사용할 것을 권한다./** Brief descript-xion which ends at this dot. Details follow - here. -/ --------------------------------------------------------------- /// Brief descript-xion which ends at this dot. Details follow /// here. 주석이 한 라인을 넘지 않을 경우 다음과 같은 방법을 사용할 수도 있다./// Brief descript-xion /** Detailed descript-xion or //! Brief descript-xion <-- separate blank line( using JAVADOC AUTOBRIEF NO ) //! Detailed descript-xion //! starts here 다음과 같은 방법은 사용할 수 없다.//! Brief descript-xion, which is //! really a detailed descript-xion since it spans multiple lines. /*! Oops, another detailed descript-xion! -/ 다음은 JavaDoc 형식을 이용한 전체적인 문서화 예제이다./** * A test class. A more elaborate class descript-xion. *-/ class Test { public: /** * An enum. * More detailed enum descript-xion. */ enum SampleEnum { SAMPLE_VAL1, /**< Enum value SAMPLE_VAL1.-/ SAMPLE_VAL2, /**< Enum value SAMPLE_VAL2.-/ SAMPLE_VAL3 /**< Enum value SAMPLE_VAL3.-/ } *enum_ptr, /**< enum pointer. Details.-/ enum_var; /**< enum variable. Details.-/ /** * A constructor. * A more elaborate descript-xion of the constructor. */ Test(); /** * A destructor. * A more elaborate descript-xion of the destructor. */ ~Test(); /** * a normal member taking two arguments and returning an integer value. * * @param a an interger argument. * @param s a constant character pointer. * @see Test() * @see ~Test() * @see test_me_too() * @see public_var() * @return The test results */ int test_me(int a, const char-s); /** * A pure virtual member. * * @see test_me() * @param c1 the first argument. * @param c2 the second argument. */ virtual void test_me_too(char c1, char c2) 0; /** * a public variable. * Details. */ int public_var; private: /** * a function variable. * Details. */ int (*handler)(int a, int b); }; 태그 및 명령어 struct union enum fn var def file namespace package interface 지원 에디터 아직까지 찾아낸 건 Emacs 뿐이다. doxymacs 라는 데비안 패키지를 설치하면 아주 편하게 Doxygen 문법으로 주석을 작성할 수 있다. 예를 들어 함수 이름 앞에 커서를 두고 Ctrl-c-d-f 를 입력하면 자동으로 함수의 인수를 추출해 함수 주석 템플릿을 만들어 주고 커서를 위치시킨다. 참조 사이트 http://www.gpgstudy.com/gpgiki/DoxygenTutorial RTF 가 깨지는 문제등에 대한 해답이 있음.
by Anna 안나 2008. 7. 11. 21:21
5장. Trac On Windows - Trac을 실제로 사용해 보자 지금까지 Trac과 서브버전 설정에 대해서 알아보았습니다. 그럼 실제로 Trac을 어떻게 사용하는지 알아보아야 겠죠? 1. 서브버전 저장소에 소스 올리고 수정하기 일단 서브버전 Test 저장소에 파일들을 올리고 갱신해 보도록 하겠습니다. 이 작업은 Trac을 사용하는데는 상관이 없지만 Trac이 서브버전 저장소와 연계가 되는지라 아무것도 없으면 뭐 할게 없어서... 제가 어떤 작업을 수행했는지만 나열하겠습니다. - 저장소에 trunk/src, branches, tags 등의 디렉토리를 만든다. - 아래의 helloworld.c 파일을 만들어 tags 디렉토리에 올린다. - tags디렉토리는 작업 디렉토리가 아니므로 다시 trunk/src 디렉토리에 올리고 tags디렉토리에서는 삭제한다. 우선 여기까지 작업을 합니다. 다음은 현재의 helloworld.c 파일의 내용입니다. #include int main(int argc, char *argv[]) { printf("Hello World... Hi %s!\n", argv[1]); return 0; } 자 여기까지 했다면 Trac의 Test프로젝트(http://localhost:88/projects/Test)에 접속해 보도록 하겠습니다. 메인 화면의 메뉴에서 "시간이력"을 클릭해 봅니다. 그러면 다음과 같이 나옵니다.
((-------IMAGE-------))

보시면 서브버전에 Commit할때마다 적었던 메모가 보여집니다. 각 변경사항을 클릭하면 다음과 같이 상세 내용이 나타납니다.

((-------IMAGE-------))

((-------IMAGE-------))

메뉴에서 "소스 브라우져" 클릭하셔서 보시면 서브버전의 저장소를 그대로 보여줍니다. trunk/src로 들어가셔서 helloworld.c 파일을 클릭하면 소스의 내용도 볼 수가 있네요. 참 한가지 말씀드릴 것은 소스에 한글을 사용하셨고 UTF-8로 작성하시지 않았다면 한글이 깨져 보일 수 있습니다. 이럴때는 trac저장소/conf/trac.ini 파일에서 default_charset을 찾아서 euc-kr이나 cp949로 바꿔 주세요. 2. 티켓과 로드맵 사용하기 Trac은 서브버전과 연동되고 버그리포트나 작업관리를 하는 것이 목적입니다. 여기에 사용하는 것이 티켓과 로드맵 기능입니다. 문제점이 생겼거나 개선사항이 생겼다면 해당 프로젝트에 티켓을 생성합니다. 그런 다음 프로젝트 참가자 중 한사람이 그 티켓을 받아 자신의 작업리스트에 추가하여 처리하거나 다른 사람에게 건내주거나 하면서 일을 처리하게 됩니다. "백문이불여일견"!!! 예를 들어 설명하고 사용방법을 보이도록 하겠습니다. 위의 helloworld.c가 오픈 프로젝트 였고 누군가가 사용해 보고 문제점이 생겨 이 Trac에 접근하는 시나리오로 이야기를 풀어 보겠습니다. 어떤 사람이 helloworld.c를 이용하다가 프로그램 실행시 아큐먼트를 입력하지 않으면 오류가 발생하는 것을 보고 이 Trac에 접속하였습니다. 그리고는 메뉴 중 "새로운 티켓"을 선택하고 다음과 같이 입력합니다.

((-------IMAGE-------))

위와 같이 작성하고 "새로운 티켓 추가" 버튼을 눌러 글을 올렸습니다. 이로써 하나의 티켓이 만들어 졌습니다. "nicholas"라는 사람이 이 시스템에 들어와 "시간이력"이나 "티켓들보기"메뉴를 클릭하여 새로운 티켓이 만들어 졌음알아고 열람해 봅니다.

((-------IMAGE-------))

한가지... 작성자가 nicholas라고 되어 있는데.. 이부분은 제가 예제를 만들면서 nicholas로 로그인하고 혼자 글올리고 수정하고 답변올리고 해서 그런 것입니다. 상황에 맞게 해석해 주세요. (죄송합니다.) 사실 지금까지 설명한 배경으로는 작성가 익명이 되어야 할 것입니다. 그건 그렇고 여기서 자세히 보아야 할 부분은 담당자 입니다. 이 티켓을 처리할 담당자가 somebody로 되어 있습니다. 이는 티켓을 누가 처리해야 할지 모른다는 뜻도 되고 티켓의 처리가 누군가에게 맞겨지지 않았다는 뜻도 됩니다. 아무튼 이 nicholas라는 프로젝트 참여자가 이 티켓을 보고 자신이 처리하는게 맞을 것 같아서 "응답하기"버튼을 클릭해서 답변을 작성합니다.

((-------IMAGE-------))

답글을 쓰고 아래쪽 중간에 마일스톤과 version을 바꾸었습니다. 마일스톤은 제품명이나 프로젝트명 쯤으로 생각하시면 될 것 같습니다. 사실 마일스톤 명을 먼저 수정해야 하는 것이 정상이지만 여기서는 Trac저장소를 생성하면 기본으로 생기는 마일스톤과 버전을 가지고 그대로 사용하고 있습니다. 어찌됐든 제일 아래 쪽에 "티켓에 대한 동작" 부분에서 자신이 직접 처리하겠다는 의사로 "티켓 수락하기"를 선택하였습니다. 이 티켓의 변경사항을 보면 다음과 같음을 알 수 있습니다.

((-------IMAGE-------))

보면 owner가 somebody에서 nicholas로 변경된 것을 보실 수 있습니다. 그래서 nicholas라는 사람은 helloworld.c파일을 수정하고 있었는데... 또 다른 사람이 이번에는 개선사항으로 "사용법을 보여 출력하게 해 달라는" 티켓을 또 추가합니다. 그래서 또 다시 nicholas 티켓을 확인 하고 이것 역시 답변을 쓰고 마일스톤1로 가져옵니다.

((-------IMAGE-------))

이제 "로드맵" 메뉴의 "마일스톤1"에 다음과 같이 두개의 티켓이 접수된 것(활성화된 티켓들)이 보여지게 됩니다.

((-------IMAGE-------))

nicholas는 이 두개의 티켓을 처리하는데 힘을 써서 다음과 같이 helloworld.c의 소스를 변경하였습니다. #include int main(int argc, char *argv[]) { if(argc\n", argv[0]); return 0; } printf("Hello World... Hi %s!\n", argv[1]); return 0; } 이 소스를 서브버전의 저장소에 체크인시키고 Trac에서 "시간이력"을 보면 다음과 같이 나타납니다.

((-------IMAGE-------))

자 이제 열린 티켓을 닫아야 겠군요.

((-------IMAGE-------))

받았던 두개의 티켓으로 가서 각각 하나씩 제일 하단에 "다음 방법으로 해결됨"을 선택하고 확인항 티켓을 닫습니다. 해당 티켓의 변경사항을 보면 티켓이 발생한 시기부터 경과한 내용 및 시간을 모두 알 수 있습니다.

((-------IMAGE-------))

다시 메뉴의 "시간이력"으로 들어가 보면 마일스톤1의 활성화 되었던 티켓들이 모두 닺쳐 진척도가 100%가 된 것을 알 수 있습니다.

((-------IMAGE-------))

메뉴 중 "소스브라우져"에 가서 소스를 보고 비교하기를 누르면 다음과 같이 변경된 내용이 무엇인지도 비교하여 보여줍니다.

((-------IMAGE-------))

그림이 많아서 조금 보기 힘드신가요? 대충 글만 읽어보고 그냥 실습을 한번 해보세요. 어렵지 않습니다. 금방 따라하실 수 있습니다. 3. 웹어드민으로 Trac관리하기 우리가 이미 설치한 웹어드민 플러그인이 있었습니다. 이번에는 이것의 사용법에 대해서 알아 보도록 하겠습니다. Trac 저장소에 우리는 admin이라는 계정에 관리자 권한을 주었었습니다. 그래서 Trac에 admin으로 로그인을 하면 Admin이라는 메뉴를 메뉴바의 맨 오른쪽에서 찾을 수 있습니다.

((-------IMAGE-------))

이 Admin이라는 메뉴를 클릭하면 현재 프로젝트의 Trac을 관리할 수 있는 화면이 나타납니다. Trac의 관리란 주로 저장소의 권한 설정이나 플러그 인을 설치 및 제거 그리고 티켓의 컴퍼넌트, 마일스톤 등을 관리하는 것을 이야기 합니다. 특이한 사항은 없으므로 그냥 몇가지 캡쳐된 화면만을 보이도록 하겠습니다.

((-------IMAGE-------))

Admin의 메뉴인데 메뉴의 각 항목을 관리할 수 있는 기능이 있다고 생각하시면 되겠네요. 크게 Trac의 일반 관린 모드인 "General"과 Ticket을 관리할 수 있는 "Ticket System"으로 구성되어 있습니다.

((-------IMAGE-------))

기본 설정(Basic Settings)에서 나오는 화면입니다. 프로젝트 이름이나 URL, 프로젝트에 대한 설명을 수정할 수 있습니다. 여기서 URL은 Trac의 웹페이지 좌측 상단의 trac로고를 클릭했을 때 가야할 URL을 설정하는 부분입니다.

((-------IMAGE-------))

로깅(Logging)메뉴에서 나오는 화면입니다. 로그를 어디에 남길지 어느 정도의 수준으로 남길지등을 설정할 수 있습니다. 또한 Log파일의 이름 및 경로를 지정할 수도 있습니다.

((-------IMAGE-------))

권한(Permissions)메뉴에서 나오는 화면 중 하나입니다. 현재 저장소에 설정된 권한을 표시하며 선택해서 해당 권한을 삭제할 수 있습니다.

((-------IMAGE-------))

권한(Permissions)메뉴에서 나오는 화면 중 하나입니다. 현재 저장소에 특정한 사용자 혹은 그룹으로 권한을 설정할 수 있습니다.

((-------IMAGE-------))

권한(Permissions)메뉴에서 나오는 화면 중 하나입니다. 특정한 사용자를 존재하는 특정 그룹에 포함 시킬 수 있습니다.

((-------IMAGE-------))

플러그인(Plugins)메뉴에서 나오는 화면 중 하나입니다. 현재 설치된 Trac플러그인의 리스트를 볼 수 있습니다. "Uninstall"버튼을 클릭해서 설치된 플러그인을 삭제할 수 있습니다.

((-------IMAGE-------))

플러그인(Plugins)메뉴에서 나오는 화면 중 하나입니다. 다운받은 플러그인 파일을 이 화면에서 선택하여 설치할 수 있습니다. 참고로 http://www.trac-hacks.org/ 에서 다양한 Trac 플러그 인들을 찾을 수 있습니다. 다음으로 Ticket을 관리하기 위한 메뉴들입니다.
((-------IMAGE-------))

컴포넌트(Components)메뉴에서 나오는 화면 중 하나입니다. 티켓 생성시 표시될 컴포넌트의 종류를 보여줍니다. 또한 해당 컴포넌트의 소유자를 표시합니다. 리스트에서 특정 컴포넌트를 선택해서 삭제할 수도 있습니다.

((-------IMAGE-------))

컴포넌트(Components)메뉴에서 나오는 화면 중 하나입니다. 티켓 생성시 표시될 컴포넌트에 소유자를 정하여 추가할 수 있습니다.

((-------IMAGE-------))

마일스톤(Milestones)메뉴에서 나오는 화면 중 하나입니다. 티켓 생성시 표시될 마일스톤의 현재 리스트를 보여줍니다. 특정 마일스톤을 선택하여 삭제할 수 있습니다.

((-------IMAGE-------))

마일스톤(Milestones)메뉴에서 나오는 화면 중 하나입니다. 티켓 생성시 표시될 새로운 마일스톤을 추가할 수 있습니다. 또한 추가하는 마일스톤의 완료일을 YYYY-MM-DD의 형식으로 날짜로 지정할 수 있습니다.

((-------IMAGE-------))

우선순위(Priorities)메뉴에서 나오는 화면 중 하나입니다. 티켓 생성시 표시되는 우선순위의 목록을 보여줍니다. 우선순의 값을 변경할 수도 있으며 특정 우선순위를 선택하여 제거할 수도 있습니다.

((-------IMAGE-------))

우선순위(Priorities)메뉴에서 나오는 화면 중 하나입니다. 티켓 생성시 표시될 새로운 우선순위를 추가합니다.

((-------IMAGE-------))

Severities 메뉴에서 나오는 화면 중 하나입니다. 티켓 생성시 표시되는 Severity의 목록을 보여주게 되는데 초기에는 아무 Severity가 설정되지 않아 보여지지 않고 위와 같은 화면이 나타납니다. Severity가 추가되면 다음과 같은 화면이 표시됩니다.

((-------IMAGE-------))

우선순위와 화면 및 기능이 같습니다.

((-------IMAGE-------))

티켓 종류(Ticket Types)메뉴에서 나오는 화면 중 하나입니다. 티켓 생성시 표시되는 티켓 종류의 목록을 보여줍니다. 표시될 순서 값을 변경할 수도 있으며 특정 티켓 종류를 선택하여 제거할 수도 있습니다.

((-------IMAGE-------))

티켓 종류(Ticket Types)메뉴에서 나오는 화면 중 하나입니다. 티켓 생성시 표시될 새로운 티켓 종류를 추가할 수 있습니다.

((-------IMAGE-------))

버전(Versions)메뉴에서 나오는 화면 중 하나입니다. 티켓 생성시 표시되는 버전의 목록을 보여줍니다. 특정 버전을 선택하여 제거할 수도 있습니다.

((-------IMAGE-------))

버전(Versions)메뉴에서 나오는 화면 중 하나입니다. 티켓 생성시 표시될 버전을 추가할 수 있습니다. 지금까지 Trac Web Admin의 사용법을 알아보았습니다. 뭐 그리 어려운 내용이 아니므로 그냥 한번 읽어보시고 실습을 한번 해보시기 바랍니다. 이렇게 해서 Trac, 서브버전, 아파치 등의 설치 및 설정 방법 그리고 사용법 등을 알아보았습니다. 서브버전 클라이언트를 사용하기 위한 구체적인 명령들에 대해서는 살펴보지 않았지만 윈도우즈에서 작업할 것이라면 "TortoiseSVN"이라는 GUI툴을 사용할 수도 있으므로 어렵지 않게 사용할 수 있을 것입니다. 참고로 TortoiseSVN은 http://tortoisesvn.net/ 에서 다운받아 사용할 수 있습니다. 한글 언어팩도 있으므로 그것도 다운받아 설치하셔서 사용하십시오. 지금까지의 글이 여러분의 프로젝트 관리에 많은 도움이 되었길 바랍니다.
by Anna 안나 2008. 7. 11. 21:19
이번 장의 내용은 Trac을 사용하는데는 꼭 하지 않아도 상관없는 내용입니다. 하지만 Trac이 서브버전을 사용하고 있고 서브버전 설치에 대해서도 알아봤으니 서브버전을 설정하는 법에 대해서도 알아보도록 하겠습니다. Trac만을 사용하겠다시는 분은 이번장을 넘어가셔도 상관없습니다. 4장. Trac On Windows - Subversion 설정 및 실행해보기 3장까지 해서 Trac을 설정해 보았습니다. 프로젝트 참여자 각자 모두가 어차피 서브버전을 설치해서 사용할 거니깐... 서브버전을 꼭 웹과 연동되어야 하는 것은 아닙니다. 하지만 웹과 연동을 시켜 놓으면 좋은 점이 있습니다. 먼저 웹에서 소스를 열람해 볼 수 있습니다. 그런데 이부분은 Trac을 통해서도 가능합니다. 또 다른 장점은 서브버전으로 소스를 체크아웃 할때 svn 프로토콜 뿐만이 아니라 http프로토콜도 사용할 수 있습니다. http프로토콜을 사용할 수 있다는 것은 일반적으로 방화벽 때문에 생기는 문제들을 해결할 수 있습니다. 왜냐면 80포트는 일반적으로 풀려 있기 때문이죠. 설정할 필요가 있던 없던 설명은 하도록 하겠습니다. 자 우리 한번 해봅시다. 1. 서브버전과 아파치와의 연동 이미 3장에서 아파치에 서브버전에 관한 Test프로젝트 저장소도 만들었고 서브버전 모듈들도 이미 설정했고 가상디렉토리도 설정해서 간단한 테스트도 해 보았습니다. 서브버전 가상디렉토리 설정 이야기는 여기서 부터 시작합니다. 3장에서 httpd.conf에 설정했던 내용을 다시 한번 보겠습니다. DAV svn SVNPath "D:/Trac/SvnRepo/Projects/Test" ▲ dav_svn_module 테스트 페이지 설정 위에서 DAV라는 것은 "Distributed Authoring and Versioning"(분산 저작 및 버전관리)의 약자로 여기서는 정확히 "Web-based Distributed Authoring and Versioning"(웹 기반 분산 저작 및 버전 관리)가 되겠습니다. 즉 Web을 이용해서 웹페이지를 올리는 것 같지 한다는 이야기죠. 일반 웹브라우저는 WebDAV를 지원하지는 않구요. 특수한 클라이언트가 있어야 합니다. 여기서는 아파치에 서브버전의 DAV모듈을 로드하여 서브버전 클라이언트와 WebDAV프로토콜을 사용하여 소스를 받고 올리게 한다는 것입니다. WebDAV에 대한 자세한 사항은 http://www.webdav.org/ 를 참조하세요. 1) 인증 처리 추가 위의 설정의 가상디렉토리를 접근하는 URL은 http://localhost:88/svn/Test입니다. 그런데 이곳은 아무나 접근을 해서 볼 수 있게 되어 있습니다. 그래서 인증을 추가해 보겠습니다. 인증 파일은 3장에서 만들었던 D:\Trac\.htpasswd 파일을 사용하도록 하겠습니다. DAV svn SVNPath "D:/Trac/SvnRepo/Projects/Test" AuthName "Subversion Test repository" AuthType Basic Require valid-user AuthUserFile "D:/Trac/.htpasswd" ▲ 서브버전 인증 추가 설정 이제 다시 웹으로 접속해 보면 아까와는 달리 BASIC인증 대화상자가 나타납니다.
((-------IMAGE-------))

로그인이 되면 소스의 내용을 볼 수 있습니다. 2) 다중 프로젝트 설정 Trac에서도 그랬지만 서브버전이 하나의 프로젝트만 관리하지는 않겠죠? 그래서 여러 프로젝트를 보기 위한 설정을 하도록 해보겠습니다. D:\Trac\SvnRepo\Projects 디렉토리에 Test 서브버전 저장소 뿐만 아니라 ProjectA, ProjectB라는 저장소도 생성하십시오. 귀찮으면 Test를 복사해서 이름이라도 바꾸십시오. 그런 다음 httpd.conf파일에서 아까 설정했던 부분을 다음과 같이 변경합니다. DAV svn SVNParentPath "D:/Trac/SvnRepo/Projects" AuthName "Subversion Projects" AuthType Basic Require valid-user AuthUserFile "D:/Trac/.htpasswd" ▲ 다중 프로젝트 설정 여기서 조금 특이한 부분은 SVNParentPath입니다. 이게 한단계 상위의 Path를 맵핑시키고 각각의 프로젝트를 http://localhost:88/svn/ProjectA, http://localhost:88/svn/ProjectB, http://localhost:88/svn/Test URL로 접근할 수 있도록 해줍니다. 웹브라우져 뿐만이 아니라 서브버전 클라이언트로도 같은 URL로 접근할 수 있습니다. 예를 들면 다음과 같이 해서 체크아웃 할 수 있습니다. C:\testsvn>svn co http://localhost:88/svn/Test Test 체크아웃된 리비전 0. ▲ 아파치와 연동하여 저장소 소스 체크아웃하기 위에서 보면 서버를 지정하기 위해 http프로토콜을 사용하고 있음을 알 수 있습니다.
만약 웹브라우저로 소스를 열람하는 것과 체크아웃하는 것은 아무나 할 수 있도록 하고 커밋은 지정된 사용자만 할 수 있게 하려면 위의 내용을 다음과 같이 바꾸면 됩니다. DAV svn SVNParentPath "D:/Trac/SvnRepo/Projects" AuthName "Subversion Projects" AuthType Basic AuthUserFile "D:/Trac/.htpasswd" Require valid-user ▲ 모두에게 열람 및 체크아웃하게 하고 지정된 사용자만 커밋 가능 설정 여기서 커밋 가능한 사용자는 따로 서브버전 저장소에 설정하여야 합니다. 2. 서브버전 서버(svnserve) 사용 어찌 어찌 하다보니깐 순서가 바뀐 것 같은 느낌이 듭니다. ㅎㅎ 원래 서브버전의 다른 강좌에서는 서브버전으로 우선 서비스를 하는 것을 모두 설명한 다음에 아파치와 연동하는 것을 이야기 하는데 이야기를 Trac에 촛점을 맞춰서 시작하다 보니 거꾸로 온 듯한 느낌은 들지만 뭐 이해하시는 대는 문제가 없을 듯합니다. ㅎㅎ 서브버전을 설치하면 svn.exe라는 파일을 사용할 수 있는데 이것이 바로 서브버전의 클라이언트에 해당합니다. 그럼 서버는 어떤 것이냐면... svnserve.exe라는 파일입니다. 물론 로컬 컴퓨터에서 혼자만 사용할 거라면 svnserve.exe으로 서버를 동작시키지 않고도 로컬 파일 시스템은 사용할 수 있습니다. 이번 장에서는 svnserve.exe에 의해 서버를 띄우고 이를 통해(아파치와 연동하지 않고) 서브버전을 사용하는 것에 대해서 설명하도록 하겠습니다. 1) svnserve 서버 띄우기 svnserve는 커맨드 창에서 다음과 같이 실행할 수 있습니다. C:\>start svnserve --daemon --root D:\Trac\SvnRepo\Projects\Test ▲ 윈도우즈에서 서브버전 서버 실행하기 /home>svnserve --daemon --root /Trac/SvnRepo/Projects/Test ▲ 유닉스/리눅스에서 서브버전 서버 실행하기 위와 같이 실행하면 아무 메시지도 나타나지 않는 새로운 창이 뜨게 됩니다. 무소식이 희소식이라고 아무 메시지도 안나오는게 정상적으로 동작하는 것입니다. 사실은 문제가 있더라도 아무 메시지가 출력되지 않습니다. 다음과 같은 명령으로 서브버전 서버에서 소스를 체크아웃 할 수 있습니다. C:\testsvn>svn co svn://localhost/ Test 체크아웃된 리비전 0. ▲ 서브버전 서버와 연동하여 저장소 소스 체크아웃하기 이번에는 서버를 지정하기 위해 svn프로토콜을 사용하고 있군요. 포트번호는 특별히 지정하지 않았는데요. 서브버전은 기본으로 3690번 포트를 사용합니다. 만약 포트를 7000번으로 바꾸고 싶다면 svnserve를 실행할 때 --listen-port 7000 와 같은 옵션을 추가해 줍니다.
위의 명령에서 start는 새로운 창으로 띄워서 실행하라는 의미입니다. 유닉스나 리눅스의 경우는 start라는 명령은 사용하지 않습니다. --daemon은 백그라운드로 돌아라는 명령인데 그렇다고 --daemon을 생략하면 실행됐다가 바로 죽어버립니다. 그래서 반듯이 줘야 합니다. --root는 서브버전 저장소가 어디인지를 알려주기 위해 사용합니다. 위의 설정으로는 Test 프로젝트에만 접근 가능합니다. 위의 명령에서 서브버전 저장소를 Test까지 주지 않고 Projects까지 주면 Test뿐만 아니라 ProjectA, ProjectB 모두를 꺼내볼 수 있습니다. 새창이 떠있을 때는 사실 문제의 소지가 있습니다. 뭐 창이 하나 떠 있어서 귀찮다는거 말고도 누군가 실수로 창을 닫아 버리거나 컴퓨터를 재 부팅 했을 경우 다시 띄워줘야 정상적인 서비스가 가능하다는 것이죠. 물론 시작프로그램에 등록하면 재 부팅 문제는 해결할 수 있겠네요. 어찌 되었건 창이 띄는게 맘에 안든다면 다음과 같이 할 수 있습니다. C:\>start /B svnserve --daemon --root D:\Trac\SvnRepo\Projects\Test ▲ 윈도우즈에서 새창 띄우지 않고 서브버전 서버 실행하기 보시면 /B옵션을 추가 했다는 것을 아시겠죠? 이런 경우는 svnserve를 죽이기 위해 작업관리자를 사용해서 작업종료를 해야 합니다. 하지만 가장 중요한 문제가 하나 더 남아 있는데 서브버전 서버를 컴퓨터에 로그인 하지 않으면 실행되지 않는 다는 것이 큰 문제입니다. 즉, 컴퓨터가 시작되면서 바로 서비스가 실행되지 않는다는 것이죠. 이문제를 해결하기 위해서는 svnserve를 서비스로 등록하여야 합니다. 2) svnserve 서버 서비스로 등록하기 서비스로 등록하는 방법으로는 여러가지가 있습니다. 또한 이런 걸 도와주는 툴들도 인터넷 상에 돌아다닙니다. 툴을 사용하실려면 다음의 URL을 참고하세요. http://dark.clansoft.dk/~mbn/svnservice/ http://www.pyrasis.com/main/SVNSERVEManager 여기서는 이런 툴 없이 그냥 맨손으로 서비스에 등록하도록 하겠습니다. 우선 서비스에 등록하기 위해 필요한 준비물은 sc.exe라는 프로그램입니다. 일반적으로 Windows의 system32디렉토리에 존재합니다. 이 프로그램은 서비스 제어 프로그램의 윈도우즈에서 제공하고 있습니다. sc.exe의 기본 사용법은 다음과 같습니다. sc [command] [service name] ... ▲ sc.exe의 사용법 사용법은 command에 따라 다양하시만 여기서는 서비스 등록, 제거, 일부 값 변경에 관한 내용만 알아보도록 하겠습니다. <server>는 \\MyCom 과 같이 서비스를 제어하고 싶은 컴퓨터의 이름을 적는 부분인데 자신의 로컬 컴퓨터를 대상으로 한다면 생략하여도 됩니다. command는 다음의 값을 사용하면 됩니다. - 서비스의 등록: create - 서비스의 제거: delete [service name]은 서비스로 등록할 때 등록자가 임의로 그 서비스의 이름을 지정하는 것입니다. <option>은 각 command마다 다른데 우리가 필요한 몇가지만 보도록 하겠습니다. binpath= : 서비스를 제공할 파일의 전체 경로를 적어 줍니다. start= : 서비스를 시작 유형을 자동(auto), 수동(demand), 사용안함(diabled)으로 지정할 수 있습니다. displayname= : 서비스를 확인시키기 위해 사용될 이름을 지정합니다. 뭐 이정도만 알면 될 것 같습니다. 옵션을 지정할 때 주의 해야 할 점이 하나 있는데 "옵션명= 옵션값"을 지정하되 = 다음에는 꼭 스페이스가 있어야 합니다. 그렇지 않으면 오류가 납니다. 자 그럼 이제 서브버전을 서비스에 등록해 보도록 하겠습니다. svnserve에 지정하는 옵션 중 서비스에 등록할 때는 --deamon 대신에 --service를 사용해야 합니다. sc create "Subversion Serve" binpath= "C:\Program Files\Subversion\bin\svnserve.exe --service --root D:\Trac\SvnRepo\Projects" ▲ sc를 이용한 svnserve 서비스 등록 서비스 관리자에 가서 보면 "Subversion Serve"라는 이름으로 서비스가 등록되어 있는 것을 확인 하실 수 있을 것입니다.
((-------IMAGE-------))

시작시키면 시작도 되구요. 정지 시키면 정지도 됩니다. 물론 정상적으로 설치 했을 경우에 말이죠. ㅎㅎ 만약에 잘못 등록해서 서비스에서 제거해야 한다면 다음과 같이 합니다. sc delete "Subversion Serve" ▲ sc를 이용한 svnserve 서비스 제거 자 이제 서비스에도 등록했겠다. 이제 서브버전에 더 상세한 설정을 해 보도록 하겠습니다. 3. 서브버전 권한 설정 이미 해보셨겠지만 현재 상태에서 서브버전의 저장소는 읽기 전용으로 동작합니다. 즉, 체크아웃은 되지만 체크인은 되지가 않습니다. 좀 이상하다고 생각하실지 모르겠습니다. 이전에 아파치에서는 인증을 통해서 체크인도 했었는데 svnserve로는 커밋을 못한다니... 아파치와 연결해서 사용할 때는 httpd.conf에 설정한 값에 의해 서브버전이 행동을 합니다. 저장소의 설정과는 상관없이 말이죠. 하지만 svnserve는 아파치에 설정했던 것과 아무 상관없이 동작합니다. 사실 이게 설정했던 것과는 상관없습니다. svnadmin으로 저장소를 생성하면 기본적으로 읽기 전용으로 만들어 집니다. 이제 권한을 변경해 보겠습니다. 1) svnserve.conf 설정 및 인증 추가하기 각 서브버전의 저장소를 들여다 보면 conf라는 디렉토리가 있습니다. 우리가 실습하고 있는 예 중 하나로 보면 D:\Trac\SvnRepo\Projects\Test\conf 디렉토리가 되겠죠? 거기로 가서 svnserve.conf라는 파일을 열어보세요. 보시면 아시겠지만 대부분은 #으로 주석처리되어 있습니다. 그래서 읽기 전용인 것입니다. 그럼 12라인쯤에 보면 anon-access = read 라는 부분이 주석 처리되어 있습니다. 이 의미는 익명(로그인하지 않고)으로 서브버전 저장소에 저장하는 사용자에게 어떤 권한을 부여할지를 결정합니다. 사용할 수 있는 값으로는 read, write, none 중에 하나를 설정할 수 있습니다. read는 읽기전용이구요, write는 읽고 쓸수 있게 권한을 부여하는 것이구요. none의 경우는 읽지도 못하게 할때 사용합니다. 우선 #을 지우시고 값을 read로 그대로 놔 둡니다. 즉, 익명의 사용자는 읽어볼 수 만 있게 하는 것이죠. 그 다음 라인은 auth-access = write 라고 적혀 있는데 역시 주석처리 되어 있군요. auth-access는 로그인 한 사용자에 대한 권한을 지정하는 것입니다. 이 것도 그냥 주석만 풀어 주세요. 즉, 인증이 된 사용자는 읽고 쓰기가 모두 가능하게 하는 것이죠. 그 다음은 18라인 쯤 보면 passwd-db = passwd 라고 적혀 있는 라인이 보입니다. 뭐 주석처리 되어 있지만 인증을 하기 위한 사용자 명과 암호를 설정한 파일이 어디 있는지 지정하는 곳입니다. 지금 현재는 같은 디렉토리에 passwd라고 지정되어 있군요. 다른 디렉토리에서 사용자 계정을 관리하고 싶다면 해당 파일의 경로와 이름을 적어 주면 됩니다. 우선은 이것도 값을 그대로 두고 주석만 제거하세요. 그리고 제일 마지막 라인의 realm = My First Repository 부분의 주석을 제거하고 "My First Repository"라고 되어 있는 부분을 여러분이 쓰고 싶은 문자열을 쓰세요. 이 값은 인증을 요구할 때 표시되는 인증을 요청하는 곳의 명칭으로 사용됩니다. 저는 여기에 "Test Repository"라고 쓰도록 하겠습니다. 그리고 같은 디렉토리에 보면 passwd파일이 하나 있습니다. 이 파일은 위의 svnserve.conf파일의 passwd-db항목에 설정한 파일이죠? 이 파일을 열어 보시면 다 주석으로 처리되어 있네요. 사용자명과 암호를 =로 구분하여 적으면 됩니다. 즉, pooh라는 사용자명과 1234라는 암호를 부여하려면 파일의 제일 아래에 pooh=1234 라고 적어주면 됩니다. 아직 서브버전은 암호화된 인증 파일을 지원하고 있지 않습니다. 그래서 그냥 암호자체를 적어야 합니다. 좀 찝찝하기는 하지만 현재로선 별수가 없습니다. 어찌되었건 실습을 위해 passwd에 pooh = 1234 와 scott = 1234 를 지정하시기 바랍니다. 참고로 위의 설정 값들은 라인의 첫번째 컬럼부터 시작해야 합니다. 제일 앞에 공백과 같은 것이 있을때는 설정파일 오류가 납니다. 자 여기까지 했으면 svn으로 다시 한번 해 보죠. D:\testsvn>svn co svn://localhost/Test Test 체크아웃된 리비전 0. D:\testsvn>cd Test D:\testsvn\Test>copy con readme.txt 읽어보세요 ^Z 1개 파일이 복사되었습니다. D:\testsvn\Test>svn import -m "readme 추가" svn://localhost/Test 인증 영역(realm): Test Repository 'administrator'의 암호: 인증 영역(realm): Test Repository 사용자명:pooh 'pooh'의 암호:**** 무시함 '.svn' 추가 readme.txt 커밋된 리비전 1. D:\testsvn\Test> 위의 예를 보면 svn://localhost/Test 에서 체크아웃하고 거기에 readme.txt 파일을 하나 생성한 후 이 파일을 import시키고 있습니다. 그런데 체크아웃할 때는 암호를 물어보지 않지만 import할때는 저장소에 쓰기작업이기 때문에 암호를 물어보고 있습니다. 맨 처음에는 윈도우즈의 계정인 administrator의 암호를 물어 보게 됩니다. 하지만 우리는 pooh라는 사용자만 만들었죠? 그래서 그냥 앤터를 칩니다. 그럼 다시 사용자명 부터 물어보게 됩니다. 그리고 위에서 svnserve.conf에서 realm에 설정했던 값이 어디에 출력되는지도 한번 확인해 보시기 바랍니다. 2) 디렉토리, 파일별 권한 설정하기 위의 예에서는 한번의 인증으로 저장소의 모든 파일을 읽고 쓸 수 있는 상태가 되었음을 알 수 있습니다. 이런 경우라면 특별히 보호되어야 하는 파일이나 디렉토리를 지키기가 힘들겠죠? 그래서 이번에는 각 디렉토리 혹은 파일에 사용자별로 권한을 설정하는 방법에 대해서 알아 보겠습니다. svnserve.conf에서 우리가 아직 건드리지 않은 값이 하나 있죠? 약 25번째 라인 쯤에 authz-db = authz 라는 부분입니다. authz-db 항목은 파일이나 디렉토리별로 권한을 부여할 수 있는 설정을 저장하고 있는 파일을 설정하는 부분입니다. 뭐 또 주석만 제거하세요. 그리고 한가지만 더 수정할게 있는데요. authz-db를 사용하려면 anon-access = none 으로 설정되어야 합니다. 이 값이 설정되어 있으면 authz-db의 설정값과 충돌이 생겨서 읽거나 쓸수있는 상황이 생깁니다. 역시 authz라는 파일도 같은 디렉토리에 샘플이 있습니다. [groups] 세션에서 그룹을 대표하는 이름을 만들 있습니다. 예를 들어 ATeam = pooh, scott 과 같이 지정합니다. 이 예는 pooh와 scott이라는 사용자를 ATeam이라고 정하는 것입니다. 팀명을 사용할 때는 @ATeam 이라고 하면 됩니다. 그리고 나머지 세션은 제한을 두고 싶은 실제 저장소내 디렉토리 혹은 파일의 경로입니다. 각 디렉토리 혹은 파일별 권한을 설정하기 전에 우선 모든 사용자가 저장소의 / 디렉토리는 읽고 쓰게 해 주어야 합니다. 다음과 같이 해서 모든 사용자가 읽고 쓸 수 있게 해 줍니다. [/] * = rw 여기서 [/]는 저장소의 /디렉토리에 대한 접근 권한을 지정한다는 의미로 사용되며 *는 누구나 라는 의미이며 r은 읽기 가능 w는 쓰기 가능의 의미를 가지고 있습니다. 즉, rw는 읽고 쓰기가 모두 가능하게 지정하는 것입니다. 만약 읽지도 쓰지도 못하게 하려면 = 다음에 아무값도 적지 않으면 됩니다. 그럼 pooh 사용자가 readme.txt 파일을 읽지 못하게 하려면 다음과 같이 설정하면 됩니다. [/readme.txt] pooh = 이렇게 설정하면 됩니다. 위에서 이야기 한 내용을 모두 한번에 표시하면 다음과 같은 식이겠죠? [groups] ATeam = pooh, scott [/] * = rw [/readme.txt] pooh = [/temp] @ATeam = r 내용을 보면 이제 이해가 가실 거라 생각됩니다. 한가지 꼭 명심하셔야 할 것은 이렇게 설정했다고 해서 아파치를 통해 WebDAV로 접근하는 사용자에게도 통하는게 아니라는거 꼭 명심하시기 바랍니다.
by Anna 안나 2008. 7. 11. 20:56
이제 2장에서 설치한 아파치, 서브버전, 파이썬, Trac을 이용하기 위해 설정방법을 알아보고 실제로 구동 시켜 보도록 하겠습니다. 3장. Trac On Windows - Trac 설정 및 실행해보기 설명하기 앞서 각각의 디렉토리를 다음의 표기로 변경하도록 하겠습니다. 좀 길어서요. 아파치 설치 경로(C:\Program Files\Apache Software Foundation\Apache2.2)를 $Apache로 표기하겠습니다. 서브버전 설치 경로(C:\Program Files\Subversion)를 $Subversion으로 표기하겠습니다. 파이썬 설치 경로(C:\Program Files\Python24)를 $Python으로 표기하겠습니다. 1. 프로젝트 저장소 만들고 Trac Standalone으로 띄워 보기 우선 svn-admin으로 프로젝트의 소스를 저장하고 버전관리를 할 저장소를 생성합니다. svnadmin create D:\Trac\SvnRepo\Projects\Test Test 저는 다음과 같이 D:\Trac\SvnRepo\Projects\Test 라는 디렉토리에 저장소를 만들었습니다. 자 이번에는 이 서브버전 저장소와 연계된 Trac 저장소를 만들어 보도록 하겠습니다. python "C:\Program Files\Python24\Script-xs\trac-admin" "D:\Trac\TracRepo\Projects\Test" initenv 이번에는 "D:\Trac\TracRepo\Projects\Test" 라는 데렉토리에 저장소를 만들고 있습니다. 이렇게 입력하면 저장소 생성시 필요한 내용을 사용자에게 하나씩 물어 보면서 진행하게 됩니다. 제시한 값이 맞다면 그냥 엔터를 치시면 됩니다. 다음은 실제로 실행시의 화면 캡쳐 내용입니다. C:\>python "C:\Program Files\Python24\Script-xs\trac-admin" "D:\Trac\TracRepo\Projects\Test" initenv Creating a new Trac environment at D:\Trac\TracRepo\Projects\Test Trac will first ask a few questions about your environment in order to initalize and prepare the project database. Please enter the name of your project. This name will be used in page titles and descript-xions. Project Name [My Project]> Test Please specify the connection string for the database to use. By default, a local SQLite database is created in the environment directory. It is also possible to use an already existing PostgreSQL database (check the Trac documentation for the exact connection string syntax). Database connection string [sqlite:db/trac.db]> Please specify the type of version control system, By default, it will be svn. If you don't want to use Trac with version control integration, choose the default here and don't specify a repository directory. in the next question. Repository type [svn]> Please specify the absolute path to the version control repository, or leave it blank to use Trac without a repository. You can also set the repository location later. Path to repository [/path/to/repos]> D:/Trac/SvnRepo/Projects/Test Please enter location of Trac page templates. Default is the location of the site-wide templates installed with Trac. Templates directory [C:\Program Files\Python24\share\trac\templates]> Creating and Initializing Project Installing default wiki pages C:\Program Files\Python24\share\trac\wiki-default\CamelCase => CamelCase C:\Program Files\Python24\share\trac\wiki-default\checkwiki.py => checkwiki.py C:\Program Files\Python24\share\trac\wiki-default\InterMapTxt => InterMapTxt C:\Program Files\Python24\share\trac\wiki-default\InterTrac => InterTrac C:\Program Files\Python24\share\trac\wiki-default\InterWiki => InterWiki C:\Program Files\Python24\share\trac\wiki-default\RecentChanges => RecentChanges C:\Program Files\Python24\share\trac\wiki-default\SandBox => SandBox C:\Program Files\Python24\share\trac\wiki-default\TitleIndex => TitleIndex C:\Program Files\Python24\share\trac\wiki-default\TracAccessibility => TracAccessibility C:\Program Files\Python24\share\trac\wiki-default\TracAdmin => TracAdmin C:\Program Files\Python24\share\trac\wiki-default\TracBackup => TracBackup C:\Program Files\Python24\share\trac\wiki-default\TracBrowser => TracBrowser C:\Program Files\Python24\share\trac\wiki-default\TracCgi => TracCgi C:\Program Files\Python24\share\trac\wiki-default\TracChangeset => TracChangeset C:\Program Files\Python24\share\trac\wiki-default\TracEnvironment => TracEnvironment C:\Program Files\Python24\share\trac\wiki-default\TracFastCgi => TracFastCgi C:\Program Files\Python24\share\trac\wiki-default\TracForKorean => TracForKorean C:\Program Files\Python24\share\trac\wiki-default\TracGuide => TracGuide C:\Program Files\Python24\share\trac\wiki-default\TracImport => TracImport C:\Program Files\Python24\share\trac\wiki-default\TracIni => TracIni C:\Program Files\Python24\share\trac\wiki-default\TracInstall => TracInstall C:\Program Files\Python24\share\trac\wiki-default\TracInterfaceCustomization => TracInterfaceCustomization C:\Program Files\Python24\share\trac\wiki-default\TracLinks => TracLinks C:\Program Files\Python24\share\trac\wiki-default\TracLogging => TracLogging C:\Program Files\Python24\share\trac\wiki-default\TracModPython => TracModPython C:\Program Files\Python24\share\trac\wiki-default\TracNotification => TracNotification C:\Program Files\Python24\share\trac\wiki-default\TracPermissions => TracPermissions C:\Program Files\Python24\share\trac\wiki-default\TracPlugins => TracPlugins C:\Program Files\Python24\share\trac\wiki-default\TracQuery => TracQuery C:\Program Files\Python24\share\trac\wiki-default\TracReports => TracReports C:\Program Files\Python24\share\trac\wiki-default\TracRevisionLog => TracRevisionLog C:\Program Files\Python24\share\trac\wiki-default\TracRoadmap => TracRoadmap C:\Program Files\Python24\share\trac\wiki-default\TracRss => TracRss C:\Program Files\Python24\share\trac\wiki-default\TracSearch => TracSearch C:\Program Files\Python24\share\trac\wiki-default\TracStandalone => TracStandalone C:\Program Files\Python24\share\trac\wiki-default\TracSupport => TracSupport C:\Program Files\Python24\share\trac\wiki-default\TracSyntaxColoring => TracSyntaxColoring C:\Program Files\Python24\share\trac\wiki-default\TracTickets => TracTickets C:\Program Files\Python24\share\trac\wiki-default\TracTicketsCustomFields => TracTicketsCustomFields C:\Program Files\Python24\share\trac\wiki-default\TracTimeline => TracTimeline C:\Program Files\Python24\share\trac\wiki-default\TracUnicode => TracUnicode C:\Program Files\Python24\share\trac\wiki-default\TracUpgrade => TracUpgrade C:\Program Files\Python24\share\trac\wiki-default\TracWiki => TracWiki C:\Program Files\Python24\share\trac\wiki-default\WikiDeletePage => WikiDeletePage C:\Program Files\Python24\share\trac\wiki-default\WikiFormatting => WikiFormatting C:\Program Files\Python24\share\trac\wiki-default\WikiHtml => WikiHtml C:\Program Files\Python24\share\trac\wiki-default\WikiMacros => WikiMacros C:\Program Files\Python24\share\trac\wiki-default\WikiNewPage => WikiNewPage C:\Program Files\Python24\share\trac\wiki-default\WikiPageNames => WikiPageNames C:\Program Files\Python24\share\trac\wiki-default\WikiProcessors => WikiProcessors C:\Program Files\Python24\share\trac\wiki-default\WikiRestructuredText => WikiRestructuredText C:\Program Files\Python24\share\trac\wiki-default\WikiRestructuredTextLinks => WikiRestructuredTextLinks C:\Program Files\Python24\share\trac\wiki-default\WikiStart => WikiStart Indexing repository --------------------------------------------------------------------- Project environment for 'Test' created. You may now configure the environment by editing the file: D:\Trac\TracRepo\Projects\Test\conf\trac.ini If you'd like to take this new project environment for a test drive, try running the Trac standalone web server `tracd`: tracd --port 8000 D:\Trac\TracRepo\Projects\Test Then point your browser to http://localhost:8000/Test. There you can also browse the documentation for your installed version of Trac, including information on further setup (such as deploying Trac to a real web server). The latest documentation can also always be found on the project website: http://trac.edgewall.org/ Congratulations! C:\> WEB Admin이 동작할 수 있도록 D:\Trac\TracRepo\Projects\Test\conf\trac.ini 을 열어 다음을 추가합니다. [components]
webadmin.* = enabled
여기까지 했으면 우선 trac을 Standalone 데몬으로 띄워 보도록 하겠습니다. 명령창에 다음과 같이 입력하세요. C:\>python "C:\Program Files\Python24\Script-xs\tracd
" --port 8000 "D:\Trac\TracRepo\Projects\Test" 그런 다음 웹브라우져를 열어서 다음의 URL로 접속해 보세요. http://localhost:8000/Test
다음의 화면을 보실 수 있었다면 지금까지 잘 따라 오신 겁니다.
((-------IMAGE-------))

뭐 한글 Trac으로 설치를 했으니 한글로 해석된 글이 나오고 좋네요. 2. 아파치에 Trac 설정하기 이미 Trac을 웹을 통해 보았지만 궁극적인 목적은 아파치를 통해 많은 사람들이 프로젝트에 참여하도록 하는 것이 목적이므로 아파치를 설정해서 띄워 보도록 하겠습니다. 1) 필요한 모듈 설정 아파치와 서브버전을 연동 시키기 위해 다음과 같이 수행합니다. 단 이 과정은 Subversion을 인스톨본으로 설치하신 분은 대부분이 자동으로 되어 있을 수 있습니다. 그런분은 그냥 확인만 하십시오. - $Subversion\bin 디렉토리에 있는 mod_dav_svn.so파일과 mod_authz_svn.so파일을 $Apache\modules 디렉토리에 복사합니다. 또한 mod_*_svn.so 에서 필요한 dll파일(libdb44.dll와 intl3_svn.dll)도 같이 복사합니다. - $Apache\conf\httpd.conf 파일에서 다음 부분의 주석을 제거합니다. LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so - $Apache\conf\httpd.conf 파일에 다음을 추가합니다. LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so LoadModule python_module modules/mod_python.so 위의 모듈들은 인증을 처리하기 위한 모듈들과 서브버전과 연동을 위한 모듈 그리고 파이썬과 연동을 위한 모듈입니다. Trac은 cgi, fastcgi, 그리고 python_module로 연동이 가능한데... cgi는 성능이 많이 떨어지므로 사용하는 것을 권장하지 않습니다. 사용하길 권장하는 부분은 fastcgi와 python_module인데 위에서 mod_python.so을 로드하는 부분을 추가하고 있습니다. 2) Trac 가상 페이지 만들기 이 부분이 잘 설정되었는지 확인하기 위해 다음과 같이 $Apache\conf\httpd.conf파일에 다음을 추가합니다. SetHandler mod_python PythonHandler mod_python.testhandler ▲ python_module이 테스트 페이지 설정 이렇게 입력한 후 아파치를 재 시작시킵니다. 그런 다음 웹브라우져로 http://localhost:88/mpinfo 를 실행하여 다음과 유사한 화면이 나타나는지 확인합니다.
((-------IMAGE-------))((-------IMAGE-------))

정상적으로 표시가 되었다면 mod_python 은 정상적으로 설치가 되었습니다. 이 설정은 보안에 문제가 있을 수 있으므로 정상적으로 동작했다는 것을 확인하면 지우세요. 이번에는 서브버전과의 아파치와의 연동이 정상적으로 이루어 지는지를 다음의 내용을 추가하여 확인합니다. DAV svn SVNPath "D:/Trac/SvnRepo/Projects/Test" ▲ dav_svn_module 테스트 페이지 설정 httpd.conf파일을 적용하기 위해서는 아파치를 다시 시작시켜야 합니다. 웹으로는 http://localhost:88/svn/Test 로 접속합니다. 화면에 다음과 유사한 값이 찍히면 정상입니다. Revision 0: / Powered by Subversion version 1.4.4 (r25188). 상태나 버전에 따라 좀 다르게 나올 수도 있습니다. 이제 Trac을 띄워볼 차례입니다. $Apache\conf\httpd.conf파일에 다음을 추가합니다. SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnv "D:/Trac/TracRepo/Projects/Test" PythonOption TracUriRoot /projects/Test ▲ Trac 테스트를 위한 페이지 설정 httpd.conf파일을 적용하기 위해서는 아파치를 다시 시작시켜야 합니다. 웹으로는 http://localhost:88/projects/Test 로 접속합니다. 위에 캡쳐(trac standalone deamon)된 것과 같은 화면이 출력되면 정상적으로 설정된 것입니다. 만약 Trac을 설치 할때 기본 디렉토리인 파이썬 디렉토리가 아니라 별도의 인스톨 디렉토리를 지정하였다면 위의 설정에 다음과 같은 구문을 추가해서 설치한 Trac의 경로를 파이썬에게 알려 주어야 합니다. PythonPath "sys.path + ['C:/Program Files/Trac']" 위의 설정은 Trac을 C:\Program Files\Trac 에 설치했다고 했을 때 설정입니다. 3) 로그인 처리 http://localhost:88/projects/Test 에서 보여진 화면에서 오른쪽 상단 부근에 "로그인"이라는 부분이 있습니다. 지금 상태에서는 "로그인"을 누르면 다음과 같은 오류 메시지가 나타납니다.
((-------IMAGE-------))

아직 로그인 페이지 처리를 하지 않아서 그런 것 입니다. 로그인을 처리하여 페이지에 접근 권한을 부여기 위해서 먼저 사용자 암호 파일을 만들어야 합니다. 암호 파일은 D:/Trac/.htpasswd 에 만들기로 하겠습니다. 이 파일은 추후 Subversion에서도 사용할 꺼거든요. 그래야 계정 하나로 서브버전도 그리고 Trac도 모두 사용할 수 있겠죠? 이 암호 파일은 아파치에서 제공하는 htpasswd.exe파일로 만들고 관리할 수 있습니다. 명령창으로 $Apache\bin으로 이동해서 다음과 같이 입력합니다. $Apache\bin>htpasswd -c D:\Trac\.htpasswd admin Automatically using MD5 format. New password: ****** Re-type new password: ****** Adding password for user admin ▲ 암호 파일 생성 및 계정 추가 위의 내용은 새로운 암호 파일(D:\Trac\.htaccess)을 만들면서 admin이라는 계정의 추가하고 있습니다. 암호를 정하고 다시 한번 암호를 확인하면 입력이 끝납니다. Trac에 인증절차를 추가하기 위하여 다음을 httpd.conf에 추가합니다. AuthType Basic AuthName "Test Project" AuthUserFile "D:/Trac/.htpasswd" Require valid-user ▲ Trac 인증 페이지 설정 당연한 이야기지만 httpd.conf를 변경하면 아파치 다시 띄워야 하는 거 아시죠? http://localhost:88/projects/Test 에 접속해서 "로그인"버튼을 클릭하면 다음과 같은 BASIC인증 창이 나타납니다.
((-------IMAGE-------))

이제 아까 입력했던 ID와 암호를 입력하여 들어가 보도록 하겠습니다. 이제는 오류가 나지 않고 로그인이 되었다는 메시지가 출력되는 것을 보실 수 있습니다.
((-------IMAGE-------))

로그인 되었을 때 할 수 있는 일에 대해서는 추후 이야기 하도록 하고 설정을 더 진행해 보도록 하겠습니다. 4) 다중 프로젝트 적용하기 위의 예제는 설정의 예를 보이기 위한 것일 뿐입니다. 그렇다 보니 Trac으로 Test라는 하나의 프로젝트만 서비스 하고 있습니다. 실제 상황에서는 여러 프로젝트를 여러 사람이 접근하여 하게 되겠죠? 즉, D:/Trac/TracRepo/Projects 디렉토리에 Test라는 프로젝트가 있는데 사실은 같은 디렉토리에 여러 프로젝트의 Trac 저장소가 있을 수 있다는 겁니다. 물론 D:/Trac/SvnRepo/Projects에도 서브버전 저장소가 여러개 있을 수 있겠죠? 뭐 구성하기 나름이겠지만... 이럴 경우 /projects/Test라는 가상디렉토리를 D:/Trac/TracRepo/Projects/Test에 직접 맵핑 하지 않고 가상디렉토리 /projects를 D:/Trac/TracRepo/Projects 디렉토리에 맵핑해서 저장소의 리스트를 보여주고 선택해서 들어갈 수 있게 하는 방법을 이야기 하려고 합니다. SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnvParentDir "D:/Trac/TracRepo/Projects" PythonOption TracUriRoot /projects ▲ Trac에서 프로젝트 리스트 보기 설정 좀 달라진 것으로는 PythonOption 중에 TracEnvParentDir 이라는게 있네요. 어찌 되었건 저렇게 설정하고 http://localhost:88/projects 에 들어가 보면 다음과 같이 나타납니다.
((-------IMAGE-------))

물론 위의 경우는 제가 ProjectA와 ProjectB의 Trac저장소를 더 만들었을 때의 이야기 입니다. 어찌 되었건 프로젝트 리스트가 보여지죠? 여기서 Test를 클릭해서 들어가면 또 아까의 화면으로 들어가 집니다. 그런데... 프로젝트의 리스트는 보여주기는 싫고 프로젝트 URL을 직접 링크를 한다거나 혹은 프로젝트 URL을 아는 사람만 접속하게 하고 위의 설정을 다음과 같이 설정합니다. SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnvParentDir "D:/Trac/TracRepo/Projects" PythonOption TracUriRoot /projects ▲ Trac에서 프로젝트 리스트 보이 않게 설정 위의 설정으로는 http://localhost:88/projects 경로로는 접속할 수 없습니다. 하지만 http://localhost:88/projects/Test 로는 접속할 수 있습니다. 또 한가지 프로젝트가 여러개라면 로그인을 처리하는 설정도 여러개여야 합니다. 왜냐면 위의 로그인 처리를 하는 설정의 가상 디렉토리가 /projects/Test/login 이라서 다른 프로젝트에는 사용할 수 없기 때문이죠. 각 프로젝트마다 사용자가 모두 다르다면 별수 없이 이렇게 해야 하겠지만 하나의 계정 정보만으로 모든 프로젝트에 동일하게 적용하고 싶다면 위의 로그인을 위하여 설정한 내용을 다음과 같이 바꿉니다. AuthType Basic AuthName "Test Project" AuthUserFile "D:/AppData/Trac/.htpasswd" Require valid-user ▲ Trac의 모든 프로젝트에 같은 계정으로 로그인 설정 위의 예는 /projects/로 시작되고 끝이 /longin인 모든 가상디렉토리는 인증처리를 하라는 의미입니다. Trac설정의 마지막으로 여러분이 localhost밑에 프로젝트 경로가 아닌 도메인 자체가 projectA.company.com, test.company.com, test.company.com 과 같이 만들고 싶을 수도 있겠네요. 물론 hosts파일이든지 직접 도메인을 추가하든지 해서 이 도메인이 아파치가 설치된 웹서버의 주소로 변경될 수 있어야 겠죠? 어찌되었건 이럴때는 아파치의 가상호스트 설정을 해야 합니다. DocumentRoot "D:/Trac/TracRepo/Projects/Test" ServerName test.mycompany.com SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnv "D:/Trac/TracRepo/Projects/Test" PythonOption TracUriRoot / AuthType Basic AuthName "MyCompany Trac Server" AuthUserFile "D:/AppData/Trac/.htpasswd" Require valid-user ▲ 가상 호스트를 이용한 Trac 서비스 제공 만약 여기서도 다중 프로젝트를 서비스 하려면 위 설정 중 PythonOption TracEnv "D:/AppData/Trac/TracRepo/Projects/Test" 부분을 다음과 같이 변경하시면 되겠습니다. PythonOption TracEnvParentDir"D:/Trac/TracRepo/Projects" 이 부분은 필요에 따라 직접 한번 해보세요. 5) WebAdmin 적용하기 Trac을 관리하기 위해서는 Trac 저장소를 만들때 해본것과 같이 trac-admin을 사용해야 합니다. 그런데 이게 커맨드 도구여서 좀 사용이 불편합니다. 그래서 Web상에서 Trac을 관리할 수 있게 우리는 이미 2장에서 Web Admin 플러그인을 설치하였습니다. 그럼 어떻게 사용하는 한번 알아보도록 하겠습니다. 우선 Web Admin을 수행하기 위해서는 Trac저장소에 관리 권한이 부여되어야 합니다. 다음과 같은 명령으로 저장소에 관리권한을 부여합니다. python "C:\Program Files\Python24\Script-xs\trac-admin" D:/Trac/TracRepo/Projects/Test permission add admin TRAC_ADMIN 그런 다음 다시 http://localhost:88/projects/Test를 들어가서 로그인을 admin으로 하게 되면 다음 그림과 같이 제일 오른쪽에 Admin이라는 탭이 생긴것을 확인할 수 있습니다.
((-------IMAGE-------))

해봤더니 안 뜬다구요? 글을 자세히 읽지 않았군요. ^^; 위에서 다음과 같은 설명을 했었는데... ========================================= WEB Admin이 동작할 수 있도록 D:\Trac\TracRepo\Projects\Test\conf\trac.ini 을 열어 다음을 추가합니다. [components]
webadmin.* = enabled ========================================= 이 설정을 해야 한다는 거 잊지 마세요. Web Admin에 대한 사용법은 다음번에 알아보도록 하겠습니다. 여기까지 Trac의 설정을 마치구요. 다음은 서브버전에 대한 설정을 알아보도록 하겠습니다.
by Anna 안나 2008. 7. 11. 20:53
실제 설치는 내일 작성하도록 하겠습니다. 2장. Trac On Windows - Trac 실제로 설치하기 이제 앞장에서 살펴본대로 버전에 맞게 모든 프로그램 및 모듈들을 다운로드 받았다면 설치를 시작해 보도록 하겠습니다. 1. 아파치 설치 윈도우즈용 아파치 바이너리 파일은 현재 모두 인스톨본으로 제공하고 있기 때문에 뭐 별 문제없이 설치하실 수 있겠죠? 뭐 아파치 설치는 그냥 실행시켜서 Next누르고 도메인명, 호스트명, 관리자 이메일 정도 적어주면 쉽게 설치할 수 있으니까 설명하지 않도록 하겠습니다. 단, 저의 경우는 IIS와 톰캣이 모두 설치되어 있어서 C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf 파일에서 "Listen 80" 부분을 "Listen 88"로 바꾸어 주었습니다. 웹서버 포트 변경하는 건지는 다 들아시죠? 2. 서브버전 설치 서브버전은 그냥 압축된 형태의 것과 설치본 두가지 모두를 제공합니다. 저는 그냥 압축본을 사용하도록 하겠습니다. 압축본의 압축을 풀어서 C:\Program Files\Subversion이라는 디렉토리에 복사하였습니다. 위의 C:\Program Files\Subversion\bin디렉토리를 환경변수 PATH에 등록하여 주세요. 또한 추후 svn 사용시 한글 문제를 해결하기 위해서 환경변수 APR_ICONV_PATH 을 만들고 값으로 C:\Program Files\Subversion\iconv 를 입력하세요. 나중에 커밋을 위해 메시지를 입력할 수 있는 에디터를 정하기 위해 환경변수에 SVN_EDITOR을 만들고 값을 notepad.exe 나 원하는 에디터를 입력하세요. 이런 설정을 별도로 하는 것이 귀찮으면 압축본이 아닌 설치본을 받아서 설치하세요. 3. 파이썬 설치 파이썬은 인스톨본 밖에 없기 때문에 그냥 그걸로 설치합니다. 설치 중 설치과정이 멈춰져 있는듯 하다면 웹브라우져가 열려있는 경우는 닫아 주세요. 저는 C:\Program Files\Python24 디렉토리에 설치하였습니다. 위의 경로는 환경변수 PATH에 등록하여 주세요. 또한 C:\Program Files\Python24\Script-xs디렉토리도 환경변수 PATH에 등록하여 주세요. 다음 작업을 좀 편하게 하기 위해서 입니다. 4. 파이썬과 서브버전의 연계 모듈 설치 이 모듈 역시 그냥 설치본으로 설치하셔도 상관은 없구요. 다음은 압축파일로 설치할 경우는 svn-win32-1.4.4_py24.zip 파일의 압축을 풀고 C:\Program Files\Python24\Lib\site-packages 디렉토리에 압축을 푼 파일 중 libsvn과 svn 디렉토리를 복사합니다. 5. 아파치와 파이썬 연계 모듈 설치 다운 받은 mod_python-3.3.1.win32-py2.4-Apache2.2.exe 파일을 그냥실행해서 설치하시면 됩니다. 설치 중간에 아파치가 설치된 디렉토리를 물어보게 되는데... C:\Program Files\Apache Software Foundation\Apache2.2 디렉토리를 선택해 주시면 됩니다. 6. 닥유틸스 설치 다운 받은 파일 docutils-snapshot.tgz의 압축을 알집 같은 걸로 풉니다. 명령창을 열어 풀린 디렉토리들 중 docutils-snapshot\docutils 디렉토리로 이동합니다. python ./setup.py install 위와 같은 명령으로 설치를 하시면 됩니다.
7. PySQLite 설치 다운 받은 pysqlite-2.3.5.win32-py2.4.exe파일을 실행해서 설치를 합니다.
8. 클리어실버 설치 다운 받은 clearsilver-0.9.14.win32-py2.4.exe파일을 실행해서 설치를 합니다. 9. Trac을 설치 다운받은 Trac파일 (영문일 경우 trac-0.10.4.tar.gz, 한글일 경우 trac-0.10.4-ko.tar.gz)의 압축을 해제 합니다. 뭐 한글이나 영문이나 설치 방법이 다르지는 않습니다. 저는 한글로 하겠습니다. 명령창을 열어서 압축이 풀린 trac-0.10.4-ko.tar\trac-0.10.4-ko 디렉토리로 이동합니다. python ./setup.py install 위와 같은 명령으로 설치할 수 있습니다. python ./setup.py install --prefix=/path/to/installdir 위와 같이 하여 설치될 디렉토리를 지정할 수 도 있습니다. 10. WebAdmin 설치 우선 ez_setup을 먼저 설치합니다. 다운 받은 ez_setup.py 파일을 C:\Program Files\Python24\Script-xs 디렉토리에 복사해 놓습니다. 그런 다음 명령창을 열어서 다음과 같이 실행합니다. 참 인터넷에 컴퓨터가 연결되어 있어야 합니다. 파일을 다운 받거든요. python "C:\Program Files\Python24\Script-xs\ez_setup.py" 위의 명령을 실행시키면 다음과 같은 화면이 나타납니다. C:\>python "C:\Program Files\Python24\Script-xs\ez_setup.py" Downloading http://cheeseshop.python.org/packages/2.4/s/setuptools/setuptools-0.6c6-py2.4.egg Processing setuptools-0.6c6-py2.4.egg creating c:\program files\python24\lib\site-packages\setuptools-0.6c6-py2.4.egg Extracting setuptools-0.6c6-py2.4.egg to c:\program files\python24\lib\site-packages Adding setuptools 0.6c6 to easy-install.pth file Installing easy_install-script-x.py script-x to C:\Program Files\Python24\Script-xs Installing easy_install.exe script-x to C:\Program Files\Python24\Script-xs Installing easy_install-2.4-script-x.py script-x to C:\Program Files\Python24\Script-xs Installing easy_install-2.4.exe script-x to C:\Program Files\Python24\Script-xs Installed c:\program files\python24\lib\site-packages\setuptools-0.6c6-py2.4.egg Processing dependencies for setuptools==0.6c6 Finished processing dependencies for setuptools==0.6c6 C:\> http://cheeseshop.python.org 에 접속해서 setup tool을 다운로드 받아서 설치하는 것을 알 수가 있을 것입니다. 최종적으로 위의 실행 결과에 의해 C:\Program Files\Python24\Script-xs\easy_install.exe 파일이 생성됩니다. 자 이제 WebAdmin을 설치해 보도록 하지요. WebAdmin은 설치하는 방법으로 두가지 있습니다. 하나는 다운 받은 파일을 이용하는 방법이 있구요. svn서버에서 소스를 다운 받아 설치하는 방법이 있습니다. 우선 첫번째 방법으로 다운 받은 TracWebAdmin-0.1.2dev_r4240-py2.4.egg.zip 파일의 압축을 해제 해서 생성된 TracWebAdmin-0.1.2dev_r4240-py2.4.egg 디렉토리와 easy_install을 이용해서 다음과 같이 설치합니다. easy_install.exe TracWebAdmin-0.1.2dev_r4240-py2.4.egg 또 다른 방법으로는 다음과 같이 입력하여 서브버전을 이용해서 소스를 다운받아 설치하는 방법입니다. easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin 저는 이 방법으로 하도록 하겠습니다. 다음은 설치시에 나타나는 화면입니다. 참고하십시오. C:\>easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin Downloading http://svn.edgewall.com/repos/trac/sandbox/webadmin Doing subversion checkout from http://svn.edgewall.com/repos/trac/sandbox/webadmin to c:\temp\easy_install-p8q8nb\webadmin Processing webadmin Running setup.py -q bdist_egg --dist-dir c:\temp\easy_install-p8q8nb\webadmin\egg-dist-tmp-psawjc zip_safe flag not set; analyzing archive contents... webadmin.plugin: module references __file__ Adding tracwebadmin 0.1.2dev-r5753 to easy-install.pth file Installed c:\program files\python24\lib\site-packages\tracwebadmin-0.1.2dev_r5753-py2.4.egg Processing dependencies for tracwebadmin==0.1.2dev-r5753 Finished processing dependencies for tracwebadmin==0.1.2dev-r5753 C:\> 자 여기까지 해서 CygwinSSHD만 빼고 모두 설치하였네요. 저는 CygwinSSHD는 설치하지 않도록 하겠습니다. 설치가 무지 복잡하죠? 어찌되었건 설치는 했으니 다음장에서 설정과 실행을 시켜보도록 하겠습니다.
by Anna 안나 2008. 7. 11. 20:42
회사에서 프로그램 버전 관리의 필요성이 생겨서 CVS를 할까 Subversion을 할까 아니면 SourceSafe를 할까 고민을 하다가... SourceSafe는 좋긴하지만 상용에다가 윈도우즈 외의 플랫폼에서는 쥐약이라 포기하고.... CVS를 검토하다가 알게된 Subversion이 CVS의 기능을 보강한 새로운 버전관리 프로그램이라고 해서 Subversion을 사용하기 맘 먹었습니다. 서브버전을 설치하고 이것 저것 쓰다가 보니깐... 검색을 할 수가 없다는 단점이 있어서... 또 뒤적거리다가 Trac이라놈이 있다는 걸 알게 되었습니다. 1장. Trac On Windows - 설치 파일 버전맞추기 Trac은 서브버전에 위키 웹을 합쳐놓은 형태라서 게시판처럼 사용도 하고 버전도 관리하도록 되어 있더 군요. 그런데 다 좋은데... 설치가 너무 어려웠습니다. Python을 잘 모르는 저에게는 더욱 어려웠습니다. 사실은 아직 완전한 설치를 하질 못했습니다. 이글은 지금까지 삽질 했던 부분과 앞으로의 삽질 할 부분을 정리하기 위해 작성하고 있습니다. 이것 저것 보면서 삽질을 하다가 보니 나중에 다시 설치하라고 하면 못 할것 같아서.. ㅠㅠㅠ 그럼 이제 시작해 봅도록 합시다. 1. 설치해야 할 프로그램 목록 제가 설치하면 삽질한 원인 중 가장 큰 원인이 설치를 해야할 것이 너무 많은데... 이것들이 서로 버전을 맞춰주지 않으면 안된다는 것이었습니다. 될 수 있으면 최신버전이 반듯이 설치에 성공할 수 있다는 보장을 할 수 없습니다.아마도 Trac을 설치해보셨던 분들은 모두 마찬가지 이유로 삽질을 하셨을 겁니다. 그래서 설치하기 전에 필요한 버전의 모듈이 모두 있는지 확인하는 과정이 필요합니다. 1) 반듯이 필요한 프로그램 혹은 모듈들... - Apache Web Server
- Subversion
- Python
- Subversion for the Python bindings (파이썬과 서브버전의 연계를 위함)
- Apache Module fro the Python (파이썬과 아파치 연동을 위함)
- DocUtils
- PySQLite
- ClearSilver
- TRAC 위에서 PySQLite는 Trac이 DB를 사용해야 하는데 SQLite를 사용할 때 필요합니다. 참고로 SQLite 대신에 MySQL을 사용할 수도 있습니다. 2) 필요하다면 설치할 수 있는 모듈들... - WebAdmin (Trac의 Plug-In) - 한글 Trac Template (한글화를 위함) - CygwinSSHD (보안 강화를 위함) 설치해야 할 항목만 봐도 기가 확 죽죠? ㅠㅠ 저도 답답해 옵니다. 거기다가 이것들이 버전을 가린다니 더욱 그렇습니다. 모두 오픈 소스기 때문에 버전이 안맞다면 컴파일을 해서 사용해도 되겠지만 다른 놈은 괜찮은데... ClearSilver라는 놈을 윈도우즈에서 컴파일하려면 윈도우즈에 리눅스 환경을 만들어야 해서 그거 하나 컴파일 하려고 더 복잡하게 만들 수는 없지 않겠습니까? ㅎㅎ 그래서 될 수 있으면 바이너리를 구해서 사용하려다 보니깐... 해당 버전의 파일들의 바이너리를 제공하고 있는지 확인을 꼭 해야 합니다. 2. 설치할 프로그램 다운로드 및 버전 체크 문제는 각각의 프로그램을 연결해 주는 모듈들입니다. 버전이 맞는 놈(바이너리 파일)이 있는지 주로 체크해야 할 것은 다음과 같습니다. - 아파치와 서브버전 - 아파치와 파이썬 - 서브버전과 파이썬 - 파이썬과 클리어실버 현재 제가 글을 쓰고 있는 시점을 기준으로 이야기 하도록 하겠습니다. 지금은 버전을 맞추는 방법을 설명하고 있으므로 바로 다운로드 하지 말고 우선 종이에다가 버전들을 적으면서 살펴만 보세요.
1) 아파치 웹서버 아파치 웹서버를 다운로드 할 수 있는 곳 http://httpd.apache.org/ 현재 최신 Release버전은 2.2.4입니다. 그리고 2.0.59버전도 있네요. 2) 서브버전 서브버전을 다운로드 받을 수 있는 곳 http://subversion.tigris.org/project_packages.html 이 페이지의 맨 아래에는 윈도우즈 바이너리를 다운받을 수 있는 링크가 있습니다. 보면 아파치 버전에 따라서 다운 받을 수 있는 경로가 구분되어 있습니다. Win32 packages built against Apache 2.0 Win32 packages built against Apache 2.2 다행이도 현재 아파치 웹서버의 최신버전이 2.2.4에서 돌아갈 수 있는 서브버전이 있네요. 그래서 Win32 packages built against Apache 2.2 에 가보면 여러 서브버전이 있는데... 1.4.4가 최신 버전이 구요. 1.4.3도 있습니다. 한가지 더 확인할 것은 파이썬과의 연동을 위해 파이썬 연동 모듈이 파이썬의 어떤 버전까지를 지원하는지 확인합니다. 보니깐.. py23, py24, py25 까지 지원하는 모듈이 있군요. 3) 파이썬 파이썬을 다운로드 받을 수 있는 곳 http://www.python.org/download/ 파이썬은 2.5.1, 2.4.4, 2.3.6 버전을 다운 받을 수 있습니다. 4) 파이썬과 서브버전의 연계 모듈 이 모듈은 아까 2)번 항목에서 이미 살펴 보았습니다. py23, py24, py25가 있었죠. 즉, 파이썬 2.3.x 부터 파이썬 2.5.x까지 모두 연동이 가능하군요. 5) 아파치와 파이썬 연동 모듈 이 모듈은 http://httpd.apache.org/modules/python-download.cgi 에서 확인합니다. 이 모듈은 파이썬 스크립트가 CGI방식이 아니라 아파치의 기능확장 모듈(Fast-CGI)로 동작할 수 있도록 해 줍니다. 최신 버전은 3.3.1인데 윈도우즈용 바이너리가 있는 링크를 가보면.. 파이썬과 아파치 연동 버전관계를 파일명을 통해서 알 수 있는데... 현재는 다음과 같은 쌍으로 연동할 수 있는 바이너리를 제공하고 있습니다. py2.3.x - Apache2.0.x
py2.3.x - Apache2.2.x
py2.4.x - Apache2.0.x
py2.4.x - Apache2.2.x
py2.5.x - Apache2.0.x
py2.5.x - Apache2.2.x 6) 닥유틸스 이 모듈은 http://docutils.sourceforge.net/ 에서 다운 받을 수 있습니다. 현재 버전은 0.4인데 파이썬 스크립트로만 되어 있고 파이썬으로 설치할 거기 때문에 특별히 버전을 체크할 필요는 없습니다. 7) PySQLite 이 모듈은 http://initd.org/tracker/pysqlite/wiki/pysqlite 에서 다운 받을 수 있습니다. 현재 버전은 2.3.5 이고 Python 2.3, 2.4. 2.5 를 지원하는 바이너리를 받을 수 있습니다. 8) 클리어실버 이 모듈은 http://www.clearsilver.net/downloads/ 에서 다운 받을 수 있습니다. 현재 버전은 0.10.5 인데... 윈도우즈용 바이너리로 제공하는 놈은 0.9.14까지만 제공하고 있으며 게다가 Python은 2.3과 2.4만을 지원하네요. 지금까지는 좋았는데... 여기서 문제가 생겼네요. 즉, 이놈 때문에 Python 2.5버전을 사용할 수 없다는 것입니다. 고로 파이썬의 버전은 2.4이하로 되어야 겠네요. 9) 트랙(Trac) 이 모듈은 http://trac.edgewall.org/wiki/TracDownload 에서 다운 받을 수 있습니다. 현재 버전은 0.10.4이고 특별하게 버전을 맞출 필요는 없습니다. 참고로 아래의 11)에 의해 한글 트랙을 사용하실 분은 영문 트랙을 굳이 다운 받으실 필요가 없습니다. 10) 웹어드민 웹어드민은 트랙의 관리를 웹상에서 해 줄 수 있는 모듈입니다. 이 모듈은 SetupTool을 다운 받아 설치하고 이 SetupTool을 이용해서 설치해야 합니다. 우선 SetupTool을 다운 받는 곳은 http://trac.edgewall.org/wiki/TracPlugins 입니다. 여기에서 http://peak.telecommunity.com/dist/ez_setup.py 파일을 다운 받습니다. 그 다음 웹어드민은 http://trac.edgewall.org/wiki/WebAdmin 에서 다운 받습니다. 이놈은 트랙 버전과 파이썬버전을 동시에 체크해야 합니다. 보니깐 최근버전이 0.11인데 트랙 0.93이상을 요구하며 파이썬 2.3과 2.4를 지원하는 군요. 11) 한글 Trac Trac을 한글화 하고 있는 사이트로 http://kldp.net/projects/trac-ko/ 이 있으며 http://kldp.net/frs/?group_id=724 에서 다운 받을 수 있습니다. 현재 버전은 0.10.4네요... 다행히도 최신버전의 영문 Trac이 한글화 되어 있습니다. 12) CygwinSSHD 이 프로그램은 Secure Shell Daemon으로 트랙의 보안을 강화 시킬 수 있습니다. http://ist.uwaterloo.ca/~kscully/CygwinSSHD_W2K3.html 에서 다운받을 수 있습니다. 13) 버전체크 결과 자 여기까지 해서 버전체크를 마쳤습니다. 결과적으로 다음의 조합이 현재 상태에서 컴파일 없이 윈도우즈에 가장 최신 모듈들을 이용해서 트랙을 설치할 수 있는 조합입니다. 아파치는 2.0.59, 서브버전 1.4.4, 파이썬 2.4.4 그리고 나머지는 이에 맞는 최신버전들을 사용하면 되겠습니다. 이제 버전체크 결과가 나왔으니 해당 사이트에서 다운로드를 받아 한 디렉토리에 담아 놓으세요. 바이너리의 경우 인스톨본을 제공하는 경우도 있고 그냥 zip이나 tar로 묶어져 있는 경우도 있습니다. 저는 zip이나 tar로 묶여 있는 놈들을 주로 받을 생각입니다. 고생한 김에 좀 더 고생해 보려구요. 여러분들은 인스톨본을 받으세요. 그러면 설정이 좀 자동화 되는 부분이 있습니다. 마지막으로 한가지 더 이야기 하자면... 윈도우즈 상에서 트랙을 돌려보기가 넘 어려워서 인지 다음의 웹사이트에서 압축만 풀어서 트랙을 사용할 수 있도록 묶음 버전을 만들고 있습니다. http://sourceforge.net/projects/traconwindows 이 묶음 파일에서의 각 파일들의 버전은 다음과 같습니다. Python 2.4.3 for win32
Apache 2.2 for win32
mod_python
clearsilver 0.9.14 for win32
Subversion 1.4.2
svn-python 1.4.2 for win32, Python 2.4
pysqlite 2.3.2 for win32, Python 2.4
Trac 0.10.3
이 TracOnWindows(ALLinOne)은 현재 0.1 alpha 2가 최신버전입니다. 단, C:\Trac이라는 디렉토리 고정되어 있습니다. 다운 받은 후 압축을 풀고 C:\Trac디렉토리에 가서 run-apache.bat 파일을 실행시킨 후 웹브라우저로 http://localhost:8080/projects 에 접속하면 됩니다. 관련내용은 http://yeoupooh.us.to:8080/wiki/display/pu/TracOnWindows 을 참조하세요.




출처 : http://www.nicklib.com/menu/study/
by Anna 안나 2008. 7. 11. 20:24
| 1 |