Tracの最近のブログ記事



オチなし危険!!


最近順次OSをFreeBSD 7.1に置き換えているようで、各所で問題が起きている様子。恐ろしいなあ。


と思っていたら自分のところにも災禍が。Tracにアクセスしてもまったくレスポンスが返ってこない。同サーバ内で動かしている別のCGIは動作していたので、ネットワーク周りに問題があるわけではなさそう(余談ながら、この問題のためTracにアクセスを繰り返していたところ「CPU時間食いすぎ!」とさくらからCGIの実行制限をかけられてしまって、そのことが問題の切り分けを難しくしていた)。


問題の解明


レスポンス返ってこないのでは何ともし難いので、とりあえずシェルからtrac.cgiを実行してみることに。確かTracはPython製だった気がするのでpythonで動かすと、



$ python trac.cgi
File "trac.cgi", line 2
LD_LIBRARY_PATH=/home/USER/local/lib;export LD_LIBRARY_PATH
^
SyntaxError: invalid syntax

げ、そんな根本的なことかよ、というか何で今までそれで動いてたの?と思ったら、さくらでTracを動かすに当ってtrac.cgiはシェルスクリプトとして作成していたことを思い出す。中を覗いてみると、



$ less trac.cgi
#!/bin/sh
LD_LIBRARY_PATH=/home/USER/local/lib;export LD_LIBRARY_PATH
TRAC_ENV=/home/USER/var/trac/repo;export TRAC_ENV
PYTHONPATH=/home/USER/local/lib/python:/home/USER/local/lib/python/site-packages;export PYTHONPATH
/usr/local/bin/python /home/USER/www/trac/trac_.cgi

だったので、shで動かす。



$ sh ~/www/trac/trac.cgi
/home/USER/local/lib/python/site-packages/pysqlite2/dbapi2.py:27: RuntimeWarning: Python C API version mismatch for module pysqlite2._sqlite: This Python has API version 1013, module pysqlite2._sqlite has version 1012.
from pysqlite2._sqlite import *
pthread_cond_wait: Unknown error: 0

とのこと。調べてみると、



OSバージョンアップによる主な変更点:


(略)


Python Python 2.4.5 → 2.5.2


http://www.python.org/download/releases/2.5.2/NEWS.txt


お知らせ|「さくらのレンタルサーバ」OSバージョンアップならびに新機能提供開始に伴うメンテナンスのお知らせ | さくらインターネット

というわけなので、まあそういうことなのでしょう;)


(12:14追記)pysqlite2.5.5入れてみてもダメだった


Pythonとpysqliteのバージョンがあってないのかなーと考え、とりあえず最新版らしい2.5.5を入れてみる。次のサイトを参考にしてみた。


錯綜するさくらインターネットでのpysqliteインストール - 常山日記



$ python setup.py clean
$ python setup.py build
$ python setup.py install --home=$HOME/local

そしたらセグフォするようになった\(^0^)/


(28日 16:00追記)symlink python->python2.4をpython->python2.5に変更してセグフォしなくなる



  • id:hktechnoたんに相談してみた。

  • ~/local/lib/pythonから~/local/lib/python2.4へのシンボリックリンクがあったのでこれを削除

  • 改めてpython2.5に向けて張る。

  • shで実行してみる。


まとめると以下のとおり。



$ cd ~/local/lib
$ rm python
$ ln -s python2.5 python
$ sh ~/www/trac/trac.cgi
No module named trac.web
Traceback (most recent call last):
File "/home/emp-cyas/www/trac/trac_.cgi", line 19, in <module>
from trac.web import cgi_frontend
ImportError: No module named trac.web
Status: 500 Internal Server Error
Content-Type: text/plain

Oops...

Trac detected an internal error: No module named trac.web

Traceback (most recent call last):
File "/home/emp-cyas/www/trac/trac_.cgi", line 19, in <module>
from trac.web import cgi_frontend
ImportError: No module named trac.web

セグフォしなくなった!ちゃんとエラーメッセ-ジを返してくれるようになったので対処しようがある。


id:hktechnoたんありがとう!!!!!!!!!!!!


(28日 22:17追記)諦めました


どう考えても再インストールしたほうが早いと判断して修復を諦めました\(^0^)/


次回は確実に動作報告のあるバージョンの組み合わせでインストールしようと思います。というかそういう情報をまとめたサイトってないのかなー。今は色んな人の部ログから断片的な情報を集めることしかできない。




今のところ/trac以降すべて同じ.htpasswdで認証しているので、プロジェクトごとにアクセスを制御することができない。


trac.confでは、



<locationMatch "/trac/[[:alnum:]]+/login">
AuthType Basic
AuthName "trac"
AuthUserFile /var/www/trac/.htpasswd
Require valid-user
</locationMatch>

となっていて、:alnum:?がプロジェクト名になることが想定されてる。


タグつき正規表現が使えたら



<locationMatch "/trac/([[:alnum:]]+)/login">
AuthType Basic
AuthName "trac"
AuthUserFile /var/www/trac/$1/.htpasswd
Require valid-user
</locationMatch>

って感じでいいと思ったんだけど、どうやら使えないっぽい。


どーしようかなー。


2009/2/11 14:40 追記


とりあえずプロジェクト名決め打ちで対処。そのうちどうにかしたいなー。



<locationMatch "/trac/portal/login">
AuthType Basic
AuthName "trac"
AuthUserFile /var/www/trac/portal/.htpasswd
Require valid-user
</locationMatch>

このアーカイブについて

このページには、過去に書かれたブログ記事のうちTracカテゴリに属しているものが含まれています。

前のカテゴリはthe pillowsです。

次のカテゴリはWinSockです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.32-ja