とりあえず手を動かしてみる

疲労困憊なだけに機械的に、なソレにトライ。材料としては技術評論から出ている_最新 Python エクスプローラ_の twisted 特集記事から twisted で trac を動かすナニ。

trac を用意

先日作成した jail なナニに trac を入れないと駄目ですな。

# wget http://www.i-act.co.jp/project/products/downloads/Trac-0.11.ja1.zip
(ry
# unzip Trac-0.11.ja1.zip
(ry
#

で、setup.py 実行ですな。

# cd Trac-0.11.ja1
# python setup.py install --help
Traceback (most recent call last):
  File "setup.py", line 15, in ?
    from setuptools import setup, find_packages
ImportError: No module named setuptools
#

む。環境がプレイン杉だな。

# apt-get install -f python-setuptools
(ry
# python setup.py install --help
(ry
#

む。動いた。

# python setup.py install
(ry
# 

一応 /usr/lib/python2.4/site-packages に Trac-0.11.ja1-py2.4.egg の存在も確認。したら trac-admin でプロジェクト作っておくのか。/var/local の下あたりに作成しておく事に。

# trac-admin /var/local/mytrac initenv
Creating a new Trac environment at /var/local/mytrac

Trac will first ask a few questions about your environment 
in order to initalize and prepare the project database.

 Please enter the name of your project.
 This name will be used in page titles and descriptions.

Project Name [My Project]> 

テキストには全部デフォで OK との事。って svn とか sqlite とか入ってないぞ。入れてリトライ。

# apt-get install -f sqlite3 subversion
(ry
# rm -rf /var/local/mytrac
# trac-admin /var/local/mytrac initenv

む。まだオチるな。これかな?

# apt-get install -f python-pysqlite2

で、リトライ。

# rm -rf /var/local/mytrac
# trac-admin /var/local/mytrac initenv
(中略
The latest documentation can also always be found on the project
website:

  http://trac.edgewall.org/

Congratulations!

#

やれやれ。

WSGI 経由で trac 起動

とりあえず写経。jail の外からエディットしたいので微妙な準備を。

# touch mytrac.py
# chmod 666 mytrac.py

で以下を入力。

import trac.web.main
import trac.web.standalone

from twisted.web2.wsgi import WSGIResource
from twisted.web2 import server
from twisted.web2.channel import http
from twisted.internet import reactor

class TracResource(WSGIResource):
    def __init__(self, path):
        self.path = path
        WSGIResource.__init__(self,
                              self.tracApplication)

    def tracApplication(self, environ, start_response):
        environ['trac.env_path'] = self.path
        environ['trac.base_url'] = 'http://localhost:1234/trac'
        return trac.web.main.dispatch_request(environ, start_response)

reactor.listenTCP(1234,
                  http.HTTPFactory(server.Site(TracResource("mytrac"))))
reactor.run()

うーん。これって mytrac をどうやって探すんだろうか。とりあえず jail な /root の真下に作ってるんですがおそらくこれはダウト。

  • /var/local 配下に mytrac_test 作成
  • /var/local/mytrac は /var/local/mytrac_test 配下に移動
  • /root/mytrac.py も /var/local/mytrac_test 配下にコピィ

してみて動かしてみるとどうなるか。

# python mytrac.py
Traceback (most recent call last):
  File "mytrac.py", line 4, in ?
    from twisted.web2.wsgi import WSGIResource
ImportError: No module named web2.wsgi
#

げ。多分 web2 を入れてないな。

# apt-get install python-twisted-web2
(ry
# python mytrac.py

げ。出た。凄いな。trac.ini が微妙なのでナニですが。

とりあえず

mytrac.py の中身のチェキは別途エントリ入れるとゆー事でエントリ投入。