« 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


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

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