관리 메뉴

구시렁 구시렁

trac with wsgi on ubuntu 본문

tool for tools

trac with wsgi on ubuntu

옥탑방청년 2009.11.04 23:19

trac을 mod_wsgi 를 이용해서 ubuntu에서 동작시킬 상황이 생겨 우분투 문서를 찾아보니 mod_python을 이용해서 설정하는 문서인지라 여기에 mod_wsgi로 설정한 과정을 남긴다. 기본 방식은 예전에 다뤘던 ubuntu에서 django 설치 와 비슷하다. 저번엔 python과 apache를 연동시키기 위해 mod_python을 사용했던 것에서 mod_wsgi로 바뀐것 말고는 큰 차이가 없다.

 먼저 apache와 python을 연동 시키는 작업을 하기 위해 필요한 프로그램을 설치 하도록 한다.

$ sudo apt-get install apache2 libapache2-mod-wsgi libapache2-svn python-setuptools subversion python-subversion trac



trac 프로젝트 환경 설정을 해 보자. /srv/trac 디렉토리를 우리가 설정할 프로젝트들의 기본 디렉토리로 사용할 것이다.

$ sudo mkdir -p /srv/trac

$ cd /srv/trac

$ sudo mkdir apache sites eggs

$ sudo htpasswd -c .htpasswd username

/srv/trac 은 trac 의 프로젝트들이 설정될 베이스 디렉토리가 된다. apache 디렉토리는 wsgi 의 trac 핸들러 모듈이 저장될 위치이고 eggs 디렉토리는 이 디렉토리에 설정되는 프로젝트들이 사용할 egg cache 디렉토리이다. sites 디렉토리에는 우리의 프로젝트 관련 파일들이 생성될 곳이다.

아파치의 htpasswd 프로그램을 이용해 username 계정에 대한 패스워드를 .htpasswd 파일에 저장한다. username은 추후 이 프로젝트들에서 사용할 로그인 계정이다. 적당한 이름을 넣도록 한다.

$ sudo vi /srv/trac/apache/trac.wsgi

apache 디렉토리 안에 아래와 같은 내용으로 trac.wsgi 모듈을 만들자.

 import sys
sys.stdout = sys.stderr

import os
os.environ['TRAC_ENV_PARENT_DIR'] = '/srv/trac/sites'
os.environ['PYTHON_EGG_CACHE'] = '/srv/trac/eggs'

import trac.web.main

application = trac.web.main.dispatch_request

TRAC_ENV_PARENT_DIR 은 /srv/trac/sites 아래에 다중 프로젝트를 설정할 때 사용한다. 단일 프로젝트를 설정하기 위해서는 TRAC_ENV_DIR 을 사용한다.

 $ sudo chown -R www-data:www-data /srv/trac

아파치가 이 디렉토리에 자유롭게 읽고 쓸 수 있도록 소유자를 www-data 로 변경해 준다. 우분투에서 아파치의 기본 설정은 계정 www-data, 그룹 www-data 로 실행된다. 이 계정과 그룹이 위의 디렉토리를 자유롭게 읽고 쓰기 권한이 있어야 한다.



이번엔 아파치에서 위의 디렉토리를 trac과 연동하기 위한 설정을 한다.

$ sudo vi /etc/apache2/sites-enabled/000-default

아파치의 기본 설정 파일을 열어서 아래 항목을 추가한다.

<VirtualHost *:80>
       
:
:
        WSGIScriptAlias /trac /srv/trac/apache/trac.wsgi
        <Directory /srv/trac/apache>
                WSGIApplicationGroup %{GLOBAL}
                Order deny,allow
                Allow from all
        </Directory>
        <LocationMatch "/trac/[_[:alnum:]]+/login">
                AuthType Basic
                AuthName "trac"
                AuthUserFile /srv/trac/.htpasswd
                Require valid-user
        </LocationMatch>

</VirtualHost>

WSGIScriptAlias /trac /srv/trac/apache/trac.wsgi 는 URL /trac 에 대해서 /srv/trac/apache/trac.wsgi 를 URL 핸들러로 사용한다는 것이다.

<LocationMatch "/trac/[_[:alnum:]]+/login"> 항목은 trac의 관리자로 로그인 할 URL 에 대해 보안설정을 하는 것이다. 추후 admin 링크를 눌렀을 때 아파치 기본 로그인 화면이 나타나고, /srv/trac/.htpasswd 의 값으로 인증이 이뤄진다.


이제 trac 프로젝트를 생성해 보자

$ sudo trac-admin /srv/trac/sites/test initenv

이로써 test 라는 프로젝트를 생성 했다.

아파치를 재 시작시켜 설정을 반영하도록 하자.

$ sudo /etc/init.d/apache2 restart

이제 브라우저에서 http://localhost/trac 을 열어보자. 방금 생성한 test 프로젝트의 링크가 보일 것이다. http://localhost/trac/test 를 열어 바로 프로젝트 페이지를 열수도 있다. test2, test3, 등등의 프로젝트를 sites 디렉토리 아래에 추가로 계속 생성할 수 있으며, 이렇게 하여 다중 프로젝트를 사용할 수 있는 설정을 마친다.

물론 이 프로젝트들이 제대로 동작하고 프로젝트를 개발 할 환경을 갖추기 위해서는 subversion 의 설정이 미리 되어 있어야 한다. subversion의 설정은 좋은 참고 사이트가 있다. http://www.pyrasis.com/main/Subversion-HOWTO 를 참고하도록 한다. xmlrpc 플러그인 설정이 필요하다면 http://trac-hacks.org/wiki/XmlRpcPlugin 을 참고한다.



* reference

1. http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/

2. http://trac.edgewall.org/wiki/0.11/TracOnUbuntu

3. http://robertbasic.com/blog/trac-on-ubuntu/

4. http://www.pyrasis.com/main/Subversion-HOWTO

5. http://trac-hacks.org/wiki/XmlRpcPlugin

'tool for tools' 카테고리의 다른 글

CLASSPATH, HADOOP_CLASSPATH  (0) 2009.11.20
subversive URL 입력 창 비활성화 문제  (0) 2009.11.18
trac with wsgi on ubuntu  (0) 2009.11.04
행복한 고민  (2) 2009.09.26
HBase, Hive, CloudBase  (0) 2009.06.24
유사도 계산  (7) 2009.03.06
0 Comments
댓글쓰기 폼