« Aipo6を自動起動させる | Main | OSQAをインストールしてみる »

2011.05.25

Tracの環境をPython2.6.6+mod_wsgiにしてみる

OSQAをインストールしてみたいなぁ・・・ということで、その準備を。

OSQA(およびそれが使用しているフレームワーク Django )はPython2.6や mod_wsgi を要求しているのですが、実際にOSQAの運用を行うとなった場合、おそらく、Trac/Subversionを稼働させているサーバーと同居させることになるため、Trac(現在Python2.5およびmod_pythonで動作)の環境もPython2.6およびmod_wsgiで動作させるように。

※今回は、Trac/Subversionがインストールされていない状態からの環境構築でしたが、既に稼働中の環境の移行の場合、もう少し手間がかかるかも・・・。

まずは作業用フォルダ作成およびPythonのインストール。

# mkdir /work
# cd /work
# wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz
# tar zxvf Python-2.6.6.tgz
# cd Python-2.6.6
# ./configure --prefix=/usr/local/share/python2.6.6
# make
# make install
# ln -s /usr/local/share/python2.6.6/bin/python /usr/local/bin/python

mod_wgsiをインストール(http-develパッケージをインストールしておく必要があります)。

# wget http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz
# tar zxvf mod_wsgi-3.3.tar.gz
# cd mod_wsgt-3.3
# ./configure --with-python=/usr/local/share/python2.6.6/bin/python
# make
# make install

easy_installをインストール。

# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py

Trac/Subversionで使用するモジュール諸々をインストールする。なお、Subversionは都合により1.5系列を使用。ちなみに、Python2.5以降の場合、PySqliteは不要とのことなのですが、別途インストールしないとどうも動作してくれないようで・・・。

# wget http://www.clearsilver.net/downloads/clearsilver-0.10.5.tar.gz
# wget http://nchc.dl.sourceforge.net/sourceforge/docutils/docutils-0.5.tar.gz
# wget http://nchc.dl.sourceforge.net/sourceforge/silvercity/SilverCity-0.9.7.tar.gz
# wget http://subversion.tigris.org/downloads/subversion-1.5.9.tar.gz
# wget http://pysqlite.googlecode.com/files/pysqlite-2.6.3.tar.gz

細かいインストール手順に関しては省略(^^;

Tracのインストールを行い、python-eggsのテンポラリフォルダを作成。なお、Tracは、都合により0.11系列を使用しています(そのため、Subversionも1.5系列・・・)。

#mkdir /var/www/.python-eggs
#chown daemon:daemon /var/www/.python-eggs

※ServersMan@VPSのデフォルトのApacheなので、ユーザーがdaemonになっています。

Trac/Subversionのテスト用プロジェクト/リポジトリを作成(所有者変更が必要ですが、記載を省略しています)。

# mkdir /var/tracdata/trac
# mkdir /var/tracdata/svn
# cd /var/tracdata/svn
# svnadmin create test
# cd /var/tracdata/trac
# /usr/local/share/python2.6.6/bin/trac-admin test initenv

/var/tracdata/trac/trac.wsgi を作成。内容は以下のような感じ(実行権限を付与しておくのを忘れないように)。

import os

os.environ['TRAC_ENV_PARENT_DIR'] = '/var/tracdata/trac'
os.environ['PYTHON_EGG_CACHE'] = '/var/www/.python-eggs'

import trac.web.main
application = trac.web.main.dispatch_request

/etc/httpd/conf.d/trac.conf を作成。内容は以下のような感じ。

LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias /trac /var/tracdata/trac/trac.wsgi
<Location /trac>
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
</Location>

Apacheを再起動して、http://servername/trac/ でアクセスすると、プロジェクト一覧が表示されることを確認。また、 http://servername/trac/test/ で作成したテスト用プロジェクトが表示されることを確認。

ちょっと気になるのは、mod_wsgi の導入に苦戦中mod_wsgi 導入完了(たぶん) に記載されている現象でしょうかね・・・(複数プロジェクトの運用を行っているので)。ただ、os.environ['TRAC_ENV']ではなく、os.environ['TRAC_ENV_PARENT_DIR']で指定しているから大丈夫なんでしょうかね・・・? Trac and mod_wsgiによると、

The TRAC_ENV variable should naturally be the directory for your Trac environment (if you have several Trac environments in a directory, you can also use TRAC_ENV_PARENT_DIR instead), while the PYTHON_EGG_CACHE should be a directory where Python can temporarily extract Python eggs.

とのことです。また、Trac と mod_wsgi では、
重要な Note: 複数の .wsgi ファイルを使用する場合 (それぞれのファイルに別個の Trac environment を設定するケースなど) は、 os.environ['TRAC_ENV'] には Trac environment のパスを 設定しない でください。この方法を使うと、別の Trac environment の設定が Trac にロードされてしまうことがあります。 (以前にロードした Trac environment のパスが使われてしまいます。) この問題は .wsgi ファイルの内容を下記の通り変更することで回避できます:

と記載されています。この部分は原文だと revision22 の頃の内容になるようですので、Tracのバージョンにより異なってくるのかもしれません・・・。

#その他参考資料:Integration With Trac

|

« Aipo6を自動起動させる | Main | OSQAをインストールしてみる »

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/51738908

Listed below are links to weblogs that reference Tracの環境をPython2.6.6+mod_wsgiにしてみる:

« Aipo6を自動起動させる | Main | OSQAをインストールしてみる »