티스토리 뷰

IT 일반

Trac 프로젝트 생성하기

야라바 2019. 1. 4. 11:56


서브버전 에지(Subversion EDGE)와 MySQL 기반의 Trac 설치로 협업 개발 시스템의 틀이 준비된 상태에서 새로운 프로젝트를 생성하는 절차를 다룹니다. 윈도우 시스템에서의 Trac과 서브버전(Subversion) 기반으로한 협업 개발 시스템을 다루고 있는데 아직 시스템을 설치하지 않았다면 시스템 설치는 아래의 두 글을 참조합니다.



협업 개발 시스템이 모두 정상 가동 중임을 전제로 새로운 프로젝트의 생성 절차를 다룹니다. Trac 프로젝트를 위한 데이터베이스 생성, Trac 프로젝트 환경 생성, 관리자 권한 부여, 형상 관리 저장소 설정등의 절차로 이루어 집니다.



■ 프로젝트를 위한 데이터베이스 생성


Trac에서 기본 제공하는 SQLite DBMS를 사용한다면 굳이 프로젝트용 데이터베이스를 생성할 필요는 없습니다. Trac 프로젝트 생성 과정에서 프로젝트 폴더 아래 db/trac.db 라는 파일명으로 SQLite 데이터베이스를 자동으로 생성하기 때문입니다. 그렇지만 저희는 MySQL 기반으로 Trac을 설치 및 사용하는 환경이므로 새롭게 추가할 프로젝트를 위한 별도의 데이터베이스를 생성해야 합니다.



DB를 설치한 컴퓨터에서 http://localhost:8080/phpmyadmin로 접속하여 데이터베이스 관리 페이지로 접속합니다. 되도록 데이터베이스 이름과 Trac 프로젝트의 이름을 동일하게 사용하면 관리의 편의성을 높일 수 있습니다. 필자의 경우 예제에서 "proj2019"를 데이터베이스 이름과 Trac 프로젝트 이름으로 사용 합니다.  DB 이름을 입력하고 collation을 utf8-bin으로 선택한 다음 [만들기]로 데이터베이스를 생성합니다.




데이터베이스를 생성한 다음에는 상단의 "SQL" 탭을 클릭하고 


GRANT ALL ON proj2019.* TO tracuser@localhost IDENTIFIED BY 'password';


위와 같은 구문으로 새롭게 생성한 데이터베이스의 모든 권한을(proj2019.*) 앞서 설치 과정에서 생성한 데이터베이스 사용자(tracuser)에게 동일한 접근 비밀번호로 부여 합니다.  



■ Trac 프로젝트 생성하기



 Trac 프로젝트 생성은 위의 그림과 같이 콘솔 모드에서 수행하고 서브버전 에지의 파이썬 폴더로 이동하여 작업합니다. 위의 그림과 같이 설치 과정에서 이 폴더에 tracdata라는 폴더를 생성했고 이 폴더에 Trac 프로젝트들의 파일들이 위치하도록 했기 때문입니다. Trac 서비스(tracd) 또한 이 폴더를 기반으로 여러 프로젝트들이 동작 할 수 있도록 했기 때문입니다(tracd -p 8000 --basic-auth="*,/csvn/data/conf/svn_auth_file,*" -e tracdata)


D:\csvn\Python25>trac-admin tracdata/proj2019 initenv Creating a new Trac environment at D:\csvn\Python25\tracdata\proj2019 Trac will first ask a few questions about your environment in order to initialize and prepare the project database. Please enter the name of your project. This name will be used in page titles and descriptions. Project Name [My Project]> Project 2019 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 existing MySQL or PostgreSQL database (check the Trac documentation for the exact connection string syntax). Database connection string [sqlite:db/trac.db]> mysql://tracuser:password@localhost/proj2019 Creating and Initializing Project Installing default wiki pages CamelCase imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\CamelCase InterMapTxt imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\InterMapTxt InterTrac imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\InterTrac InterWiki imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\InterWiki PageTemplates imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\PageTemplates RecentChanges imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\RecentChanges SandBox imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\SandBox TicketQuery imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TicketQuery TitleIndex imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TitleIndex TracAccessibility imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracAccessibility TracAdmin imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracAdmin TracBackup imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracBackup TracBatchModify imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracBatchModify TracBrowser imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracBrowser TracCgi imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracCgi TracChangeLog imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracChangeLog TracChangeset imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracChangeset TracEnvironment imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracEnvironment TracFastCgi imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracFastCgi TracFineGrainedPermissions imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracFineGrainedPermissions TracGuide imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracGuide TracImport imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracImport TracIni imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracIni TracInstall imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracInstall TracInterfaceCustomization imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracInterfaceCustomization TracLinks imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracLinks TracLogging imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracLogging TracModPython imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracModPython TracModWSGI imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracModWSGI TracNavigation imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracNavigation TracNotification imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracNotification TracPermissions imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracPermissions TracPlugins imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracPlugins TracQuery imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracQuery TracReports imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracReports TracRepositoryAdmin imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracRepositoryAdmin TracRevisionLog imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracRevisionLog TracRoadmap imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracRoadmap TracRss imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracRss TracSearch imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracSearch TracStandalone imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracStandalone TracSupport imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracSupport TracSyntaxColoring imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracSyntaxColoring TracTickets imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracTickets TracTicketsCustomFields imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracTicketsCustomFields TracTimeline imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracTimeline TracUnicode imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracUnicode TracUpgrade imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracUpgrade TracWiki imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracWiki TracWorkflow imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\TracWorkflow WikiDeletePage imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\WikiDeletePage WikiFormatting imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\WikiFormatting WikiHtml imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\WikiHtml WikiMacros imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\WikiMacros WikiNewPage imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\WikiNewPage WikiPageNames imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\WikiPageNames WikiProcessors imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\WikiProcessors WikiRestructuredText imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\WikiRestructuredText WikiRestructuredTextLinks imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\WikiRestructuredTextLinks WikiStart imported from D:\csvn\Python25\lib\site-packages\trac\wiki\default-pages\WikiStart --------------------------------------------------------------------- Project environment for 'proj2019' created. You may now configure the environment by editing the file: d:\csvn\python25\tracdata\test1\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:\csvn\Python25\tracdata\proj2019 Then point your browser to http://localhost:8000/proj2019. 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! D:\csvn\Python25>


서브버전 에지의 파이썬 폴더에서 "trac-admin tracdata/proj2019 initenv"와 같이 앞서 생성한 DB 이름과 동일하도록 Trac 프로젝트를 생성합니다. 프로젝트 공용 디렉토리(tracdata)/프로젝트명(proj2019)의 형식으로 입력 합니다.


첫번째 프롬프트는 프로젝트 이름으로 Trac 페이지의 타이틀로 사용하므로 적절하게 입력합니다. 두번째 프롬프트는 DB 접속 문자열로 "mysql://tracuser:password@localhost/proj2019" 와 같이 입력합니다. mysql://데이터베이스 사용자(tracuser):비밀번호(password)@호스트/데이터베이스 이름(proj2019)의 형식으로 앞서 DB 생성 이후 데이터베이스 사용자에게 권한 부여한 시점의 정보를 입력하는 것입니다.




■ 관리자 권한 부여


이 시점에도 Trac 페이지를 가동시킬 수 있지만 여러 가지 설정과 관리를 위해서는 1인 이상에게 관리자 권한을 부여해야 합니다.



"trac-admin tracdata/proj2019 permission add admin TRAC_ADMIN"와 같이 명령을 입력합니다. 프로젝트 공용 디렉토리(tracdata)/프로젝트명(proj2019)의 형식을 앞세우고 특정 아이디(admin)를 지정하여 관리자 권한(TRAC_ADMIN)을 부여 하는 방식입니다. 사용자 관리와 상세한 권한 설정은 "Trac 과 서브버전 사용자 관리하기"를 참조합니다.



■ 형상 관리 저장소 및 기타 설정



설치 과정에서 Trac 서비스(tracd)를 여러 프로젝트를 동작할 수 있도록 동작시켰기 때문에 프로젝트를 생성하면 위의 그림과 같이 Trac 프로젝트를 바로 띄울 수 있습니다.



URL에 프로젝트를 지정하지 않는다면 위의 그림과 같이 접속할 수 있는 프로젝트 목록을 볼 수 있고 특정 프로젝트를 클릭하여 해당 프로젝트에 접속할 수 도 있습니다. 


[components]

tracopt.versioncontrol.svn.* = enabled


형상 관리 저장소를 Trac 프로젝트에 연동 시키려면 위의 설정 내용을 프로젝트 폴더 아래 conf\trac.ini 파일에(:\csvn\Python25\tracdata\proj2019\conf\trac.ini) 추가해 줍니다.



이제 관리자 페이지에 들어가면 위의 그림과 같이 형상 관리 저장소를 등록할 수 있는 메뉴가 나옵니다. 연동 시킬 저장소의 이름과 디렉토리를 입력하여 등록하면 상단에 소스둘러보기 메뉴가 나오고 웹을 통해 저장소 내용을 확인할 수 있게 됩니다. 


사용자 인터페이스를 비롯하여 기타 여러 가지 설정 작업을 "Trac UI 변경과 설정 변경하기"를 참조해서 수행하면 프로젝트 운용을 위한 모든 준비는 끝이 납니다.





댓글
댓글쓰기 폼