Trac 설치 후 사용법을 살펴 보던 중.

Milestone 저장이 되지 않는 것이었다.


"2009년 08월 25일" is an invalid date, or the date format is not known. Try "YYYY년 MM월 DD일" instead.


해당 에러 메시지가 나왔다.

Locale 도 맞고 날짜 형식도 내가 보기엔 맞다. 그런데 저장이 안되다니.

구글링을 열심히 해도 이런 에러 해결 방안이 눈에 보이지 않았다.

PythonOption 으로 TracLocale 을 주고 LC_TIME설정 하고 해도 되지 않았다.

Trac 이슈 에는 올라와 있었지만 해결 방안이 아주 예전 011월  해야지만 저장 되는 문제점 해결 방안만 있을뿐 그렇다한 답변이 없었다.

그래서 일단 무작정 에러 나는 부분을 찾았다.

parse_date 하는 부분에서 Locale 날짜 포맷과 맞지 않아서 계속 에러가 난것.

값을 직접 넣거나 time.strftime('%x') 해서 넣으면 들어간다.

그럼 파라미터 문제이지 않을까 생각을 했다.

그러나 다른 한글들은 잘 저장 된다.

날짜 포맷만 이상한 것일까...

소스를 보다 타이존을 인코딩 한게 있어 응용해서 넣었다.

/usr/lib/python2.4/site-pakages/Trac-0.12dev-py2.4.egg/trac/util/datefmt.py

216 줄 아래.
text = to_unicode(text).encode('utf', 'replace')


text 가 파라미터 값이다.
에러 메시지에서 "YYYY년 MM월 DD일" 문구를 만들기 위해 utf 로 인코딩 한것을 보고 비슷하게 따라해서 만들었다.

저장 성공!.

인코딩 값을 하드 코딩이 아닌 가지고 오기 위해 수정

encoding = locale.getlocale(locale.LC_TIME)[1]
text = to_unicode(text).encode(encoding, 'replace')



테스트 성공 후 . 완료 날짜.(시간까지) 테스트 하니.
이런 또 떡하니 에러 메시지가.

경고 : 완료된 날짜는 미래가 아닐지도 모릅니다.

이건 또 뭔가.
에러 나는 부분을 찾으니. 현재 시간보다 넘어온 값이 커서 생기는 에러 이다.(경고 메시지 번역이 참 이상하다)

테스트를 여러번 하니 내가 저장한 시간과 뿌려주는 시간도 다르다는 것을 알게 되었다.
어제 시간 때문에 건드리다가 생각난 Trac 페이지 상단에 있는 설정에 있는 시간/날짜 부분.

여기서 Asia/Seoul 을 선택했는데. 아래에 메시지가 써 있었다. 시스템 시간이 아니다.
저기서 가지고 오는 시간이 이상한거 같다. Trac 버그인가 ;
테스트 시 몇분 차이가 있었다.

그래서 기본설정으로 변경 후 테스트 하니 잘 된다.


ps. 며칠 삽질 했더니 김이 빠진다. ;









OS/Linux | Posted by 스루 2009/08/18 20:08

[CentOS] Trac 설치. mod_python.

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. 화면이 하얗게 나오고 로그에 아래와 같이 나올때

더보기



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 권한 설정은 다음 페이에서.


'OS > Linux' 카테고리의 다른 글

[CentOS] Trac 환경 설정.  (0) 2009/08/19
Apache client denied by server configuration 에러.  (0) 2009/08/19
[CentOS] Trac 설치. mod_python.  (0) 2009/08/18
[CentOS] SVN 설정하기  (1) 2009/08/17
[CentOS] Apache 2.2 + Tomcat 6.0.X 연동하기.  (1) 2009/08/17
[CentOS] Apache 설치하기.  (2) 2009/08/14