이제 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