....

CentOS 5.3 에 Subversion + SSL + Trac 설치하기 [5] 본문

Linux

CentOS 5.3 에 Subversion + SSL + Trac 설치하기 [5]

idkook 2009. 12. 8. 13:40


Track을 Subversion과 연동하기 위한 초기화 작업을 해야 한다.

우선 Apache에서 사용할 DocumentRoot를 생성한다.
당연히 Apache에서 접근할 경로이므로 소유자를 apache로 변경해주어야 한다고 생각되는데..

> mkdir /var/trac
> chown apache:apache /var/trac

이제 trac-admin 스크립트를 실행해서 Subversion 프로젝트에 대한 정보를 입력한다.
> cd /var/trac
> trac-admin sample initenv
   >> 당연한 예기겠지만 sample은 subversion의 프로젝트 이름이다.

우오옷~ 한글로 모든 안내 메시지가 나온다... 이쯤에서 Babel 설치가 제대로 됐다는 삘이 팍~ 온다..
/var/trac/sample에 새로운 Trac 저장소 생성
Trac은 프로젝트 데이타베이스를 초기화하고 준비하기 위해서
당신의 환경에 대해서 몇가지 질문을 할 것입니다.

 프로젝트 이름을 입력해 주십시오.
 이 이름은 페이지의 제목과 설명에서 사용될 것 입니다.

 프로젝트 이름 [My Project]> Sample Project
 
 사용하고 있는 데이타베이스에 대한 연결 스트링을 지정하십시오.
 기본적으로, 지역 SQLite 데이타베이스가 저장소 디렉토리에 생성됩니다.
 이미 존재하는 PostgreSQL 데이타베이스를 사용하는 것도 가능합니다.
 (정확한 연결 스트링 구문에 대해서는 Trac 문서를 체크하십시오.)

 데이타베이스 연결 스트링 [sqlite:db/trac.db]> [기본값 엔터]
 
 버전 컨트롤 시스템의 타입을 지정하십시오.
 기본적으로, svn이 됩니다.

 버전 컨트롤 시스템과 통합해서 Trac을 사용하는것을 원하지 않는다면,
 여기서 기본값을 선택하고, 다음 질문에서 저장소 디렉토리를 지정하지 마십시오.

 저장소 타입 [svn]> [기본값 엔터]

 버전 컨트롤 저장소의 절대 경로를 지정하십시오.
 만약 저장소 없이 Trac을 사용하기를 원한다면 공백으로 남겨두십시오.
 저장소 경로를 나중에 지정할 수도 있습니다.

 저장소 경로 [/path/to/repos]> /var/svn/sample

프로젝트 생성 및 초기화
'/var/trac/sample' 저장소 초기화 실패.
 Failed to create environment.
Cannot load Python bindings for SQLite
Traceback (most recent call last):
  File "build/bdist.linux-i686/egg/trac/admin/console.py", line 414, in do_initenv
  File "build/bdist.linux-i686/egg/trac/env.py", line 212, in __init__
  File "build/bdist.linux-i686/egg/trac/env.py", line 349, in create
  File "build/bdist.linux-i686/egg/trac/db/api.py", line 86, in init_db
  File "build/bdist.linux-i686/egg/trac/db/api.py", line 136, in _get_connector
TracError: Cannot load Python bindings for SQLite
'/var/trac/sample' 저장소 초기화 실패.
 1
Traceback (most recent call last):
  File "build/bdist.linux-i686/egg/trac/admin/console.py", line 419, in do_initenv
SystemExit: 1

쿨럭~ 초기화중에 오류가 발생합니다. SQL-Lite와 연동에서 무슨 문제가 발생한 듯 싶습니다.
어딘가 꼬인것 같네요.. 구글링을 해도 확실한 답이 보이질 않고..
yum 패키징을 최대한 이용해서 설치한 보람이 한순간에 와르르 무너지는 느낌.. OTL

잘됏습니다.. 에러 메시지에서 SQLite와 문제가 발생한것 같다면...
MySQL로 한번 해보지요~~~

MySQL에 trac이란 데이터베이스를 생성하고, trac-user라는 사용자를 만들었습니다.
그리고 접근 권한을 주고나서 다시 시도합니다. (MySQL의 DB생성 및 권한 관리는 생략하겠습니다.)
> rm -rf /var/trac/sample
  -- 불완전하게 생성된 sample을 다시 생성하기 위해 삭제..
> trac-admin /var/trac/sample initenv
  ......
데이타베이스 연결 스트링 [sqlite:db/trac.db]> mysql://trac_user:[DB유저암호]@localhost/trac
  ......

성공하네요.. (인덱싱과 관련된 경고가 표시됩니다만...)
Trac-dev0.12버젼과 SQLite에서 Python의 의존성에 뭔가 언벨런스가 생겼나 봅니다.
그렇다고 SQLite에 대한 update가 따로 보이지도 않고..
특히나 SQLite는 yum 패키지에 의존성을 가지고 있어서 쉽사리 밀었다가 다시 설치하기가 부담스럽습니다.
(밀었는데.. yum가동이 안되서 설치가 안되는건 생각만 해도 끔찍하군요...)

사용에 별 지장이 없다면 mysql로 사용해보는것도 좋으리라 생각됩니다.

우선 trac.init 파일에서 로케일을 설정합니다.
> vi /var/trac/sample/conf/trac.ini
  .....
  [trac]
  #default_charset = iso-8859-15
  default_charset = UTF-8     # euc-kr or cp949 가능.. 

default_charset은 Subversion에 커밋된 소스의 로케일에 맞춰주길 권장합니다.
추가적으로 [header_logo] 섹션에서 트랙 상단의 이미지를 설정 할 수도 있습니다.

이제.. 잘 실행되는지 테스트..
> tracd --port 8000 /var/trac/sample

이렇게 실행한 뒤에 웹 브라우져에서 http://서버IP:8000/sample 에 접속해보면 해당 화면을 보실 수 있을 겁니다.

짜잔~



해당 서비스는 Ctrl+C로 종료 시키고 이제 아파치에 올려야 할 차례입니다.

httpd.conf를 수정하거나 가상 호스트를 사용하고 있지 않다면 /etc/httpd/conf.d/trac.conf를 추가해도 됩니다.

> vi /etc/httpd/conf/httpd.conf
<VirtualHost *:443>
........
  <Location /trac>
    SetHandler mod_python
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnvParentDir "/var/trac"
    PythonOption TracUriRoot "/trac"
    AuthType Basic
    AuthName "Trac Login"
    AuthUserFile /etc/httpd/conf/htpasswd
    require valid-user
  </Location>
........
</VirtualHost>

굵은 글씨로 표시한 부분이 인증을 담당하는 부분입니다.
사설 프로젝트는 Trac에 대한 접근 권한 자체도 제어해야 하기에 /trac url에서부터 접근 권한을 제어할 수 있도록 하면 될 듯 합니다.
오픈 소스와 같이 열람은 비인증 사용자도 가능하게 하고자 할 경우 <Location /trac/login></Location>으로 밑에 테그를 하나 더 만든 뒤에 굵은 글씨 부분을 밑으로 옮기면 되겠네요..

AuthUserFile에서 사용된 파일은 당연한 예기지만.. https:를 통한 svn접근 제한 파일과 동일한 파일입니다.
(잘 보면 <Location /svn> 태그와 굵은 글씨의 인증 부분이 완전히 동일 합니다. AuthName만 빼구요..)

일일히 로그인에 대한 권한을 설정하기 귀찮다면.... 굵은 글씨 부분을 아예 <Location>태그 밖으로 빼버리시면 접속 즉시 로그인 화면이 뜰겁니다... ^^

오타가 없는지 확인하고 apache 재시작후에 https://서버주소/trac 으로 접속해서 테스트 해보면 되겠습니다.
> httpd -t
    -- Syntax OK 확인..
> service httpd restart
>>> 브라우져로 접속해서 잘 뜨는지 확인.. ^^

안됩니다.

sqlite에서 오류가 생긴것과 같은 맥락으로 mod_python에서 trac을 import하지 못하고 있는듯 합니다.

Trac사이트를 뒤져보니... 답이 다 있네요.. (링크 : http://trac.edgewall.org/wiki/0.12/TracInstall )

우선 0.12dev 버젼의 Trac에서 SQLite와 연동하기 위해서는 python 버젼이 2.5이상이여야 합니다.
하지만 yum으로 설치된 python은 2.4.3-27.el5 입니다.

따라서 아래와 같은 별도 작업을 해주어야 SQLite를 사용할 수 있습니다. (MySQL을 사용하면 필요 없습니다.)
cd /usr/local/src
wget http://pysqlite.googlecode.com/files/pysqlite-2.5.6.tar.gz
tar xvfz pysqlite-2.5.6.tar.gz
cd pysqlite-2.5.6
python setup.py build_static install

이 방식은 python을 2.4.3으로 유지한 상태에서 sqlite연동 부분만 2.5.6으로 추가적으로 인스톨하는거라 조심스래 예측해봅니다...

또한 아파치와 연동에 필요한 mod_python의 버젼은 최소한 3.3.1을 요구하고 있습니다. (0.12-dev에서입니다.)
하지만 yum으로 설치된 mod_python은 3.2.8-3.1로 설치가 됩니다.

따라서 아래와 같이 mod_python도 별도로 컴파일해서 설치를 해주어야 하네요..
cd /usr/local/src
wget http://apache.tt.co.kr/httpd/modpython/mod_python-3.3.1.tgz
tar xvzpf mod_python-3.3.1.tgz
cd mod_python-3.3.1
./configure --with-apxs=/usr/sbin/apxs --with-python=/usr/bin/python -prefix=/usr/lib/httpd/modules
make && make install
configure에서 사용하는 경로는 전부 yum으로 설치된 패키지의 경로가 기준입니다.

우선 yum으로 mod_python을 설치한 상태에서 다시 컴파일로 설치하면... mod_python 파일이 새로 생성됩니다. yum을 이용한 삭제도 정상적으로 잘 되네요... 버젼 명시까지 yum설정을 편집해서 고칠 수도 잇겠지만... pass..

이렇게 두가지 설정을 한 다음이라면.. 아파치를 실행한 다음에 trac의 화면을 정상적으로 볼 수 있습니다.

Comments