1. 기초 환경 설정.
1-1. python 은 CentOS 에 기본적으로 포함 되어 있다.
1-2 python-devel
설치 되어 있어야만 mod_python 설치가 정상적으로 진행된다.
#rpm -qa | grep python-devel
#yum install python-devel
1-3
setuptools
python 패키지 관리자.
# yum install python-setuptools
1- 4
Genshi
easy_install 설치시 구 버전이 설치되어 trac 에서 요구하는 버전을 설치 할 수 없다. 다운 받아서 설치.
#svn export http://svn.edgewall.org/repos/genshi/trunk genshi
#cd genshi
#python setup.py install
1-5.
Database
sqlite/mysql/postgresql 등을 지원한다.
sqlite 가 CentOS에 포함되어 있고 단일 파일로 라이브러리 형태로 되어 있다. 그래서 이걸로 결정.
설치 되어 있는 지 확인. python 이 2.4 버전 이하라면 pysqlite 도 설치 하여야 한다. 기본적으로 CentOS5.3 은 Python 2.4 포함.
# sqlite3 -version
1-6
한글 설정을 위한 babel, Locale Data 설치.
babel 다운로드
# mkdir temp
# cd temp
# svn co http://svn.edgewall.org/repos/babel/trunk babel
#cd babel
Locale Data 설치
# wget http://unicode.org/Public/cldr/1.6.1/core.zip
# unzip core.zip
Element Tree 패키지 설치 - locale 적용을 위해 필요하다.
#easy_install ElementTree
빌드 설절 및 CLDR 데이터의 변환하고 설치를 진행한다.
# ./setup.py egg_info
# ./scripts/import_cldr.py ./ <- ./ 는 설치 경로(babel 폴더에 core.zip을 풀었으므로)
# ./setup.py install
#./setup.py test <- test
옵션 사항.
#easy_install pytz
#easy_install docutils
#easy_install epydoc
#easy_install Pygments
2. mod_python 설치.
yum install mod_python
하니 apache 도 같이 받아져서 다운 받아서 깔았다.
다운로드 : http://www.modpython.org/
# tar zxvf mod_python-3.3.1.tgz
#cd mod_python-3.3.1
#./configure --with-apxs=/usr/local/web/apache/bin/apxs --with-python=/usr/bin/python
#make
#make install
./configure 옵션은 자기 환경에 맞는 값을 넣어주면 된다.
make 시
mod_python-3.3.1/src/connobject.c 부분에서 에러 시
mod_python-3.3.1/src/connobject.c 를 열어
while ((bytes_read < len || len == 0) &&
!(b == APR_BRIGADE_SENTINEL(bb) ||
APR_BUCKET_IS_EOS(b) || APR_BUCKET_IS_FLUSH(b))) {
하면 된다.
3. trac 설치
# svn export https://svn.edgewall.com/repos/trac/trunk trac-trunk
#cd trac-trunk
#python setup.py complile_catalog --use-fuzzy <= po 파일을 mo 파일로 변환.
#python setup.py install
#trac-admin --version
버전 확인하면 현재(trac-admin 0.12dev) 라고 뜬다.
4. trac와 svn, apache 연동.
# mkdir /home/trac/test
#trac-admin /home/trac/test
#chown apache.apache -R /home/trac/test
httpd.conf 수정
<Location /trac>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /home/trac/test
#PythonOption TracEnvParentDir /home/trac <= 첫페이지에 프로젝트 리스트가 뜬다.
PythonOption TracUriRoot /trac/
</Location>
아파치 재실행후
http://localhost/trac 확인.
svn 이 연결이 제대로 안되어 있을 것이다.계정도 없고.
※에러사항들
1.
화면이 하얗게 나오고 로그에 아래와 같이 나올때
더보기
httpd: Objects/stringobject.c:105: PyString_FromString: Assertion `str != ((void *)0)' failed.
[Sat Jun 21 06:17:58 2008] [notice] child pid 25651 exit signal Aborted (6)
Python에서 참조하고 있는 expat verison이랑 Apache 소스 컴파일시에 아파치에서 사용하는 expat library랑
version이 맞지 않으면 mod_python에서 문제가 발생한다.
해결방안.
mv /usr/local/apache2/lib/libexpat.so.0.1.0 /usr/local/apache2/lib/libexpat.so.0.1.0.old
ln -s /lib/libexpat.so.0.5.0 /usr/local/apache2/lib/libexpat.so.0.1.0
2. mod_python 에러
페이지 맨 마지막 줄에 db에 read _write 권한이 있어야 한다고 뜨는 경우.
기본 apache가 httpd.conf 에 User, Group 이 Daemon 으로 되어 있어서 그렇다.
apache 로 설정 해 주었으므로 이 부분을 수정하여 주면 된다.
mod_python 설정 참고 페이지 : http://trac.edgewall.org/wiki/TracModPython
trac 권한 설정은 다음 페이에서.