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 osos.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.soWSGIScriptAlias /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
「Subversion・Trac・etc.」カテゴリの記事
- Kanboard(2017.06.13)
- XML parsing failed : (413 Request Entity Too Large)(2017.06.11)
- TortoiseSVNとクライアント証明書(2012.09.17)
- Trac 1.1.1(dev)(2012.09.15)
- Trac1.0 リリース(2012.09.09)
The comments to this entry are closed.























![アスキー: UNIX MAGAZINE (ユニックス マガジン) 2008年 01月号 [雑誌]](http://ecx.images-amazon.com/images/I/11Z7w19zJ3L.jpg)













Comments