Changes between Initial Version and Version 1 of TracModPython


Ignore:
Timestamp:
Dec 16, 2006, 2:52:43 AM (17 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracModPython

    v1 v1  
     1= Trac と mod_python =
     2[[TracGuideToc]]
     3
     4Trac では [http://www.modpython.org/ mod_python] を利用可能です。 [http://www.modpython.org/ mod_python] は Trac のレスポンスタイムを飛躍的に向上し、特に [TracCgi CGI] と比べて、 [wiki:TracStandalone tracd]/mod_proxy では使用できない多くの Apache 機能を使えるようにします。
     5
     6== シンプルなコンフィグレーション ==
     7
     8もし mod_python をインストールしたならば、 Apache の設定ファイルに以下の一行を追加してモジュールをロードしなければなりません:
     9{{{
     10LoadModule python_module modules/mod_python.so
     11}}}
     12
     13 ''Note: モジュールがインストールされている正しいパスは HTTPD をどこにインストールしたかによって変わります。''
     14
     15httpd.conf に以下の記述を追加してmod_python が正しくインストールされているかどうかを確かめることができます。セキュリティ上の理由で、この記述はテストが終了したら削除すべきです。
     16{{{
     17<Location /mpinfo>
     18   SetHandler mod_python
     19   PythonHandler mod_python.testhandler
     20</Location>
     21}}}
     22
     23mod_python を使用した簡単な Trac のセットアップ方法は以下のようになります:
     24{{{
     25<Location /projects/myproject>
     26   SetHandler mod_python
     27   PythonHandler trac.web.modpython_frontend
     28   PythonOption TracEnv /var/trac/myproject
     29   PythonOption TracUriRoot /projects/myproject
     30</Location>
     31}}}
     32
     33'''`TracUriRoot`''' オプションは不要な場合もあります。 `TracUriRoot` オプションを付けずに試し、 Trac が正しく URL を生成できないようであれば '''`TracUriRoot`''' を追加して下さい。 `Location` と '''`TracUriRoot`''' が同じパスになることに気づくでしょう。
     34
     35=== 認証設定 ===
     36
     37認証の設定は [wiki:TracCgi#認証を追加する CGI] と同じです:
     38{{{
     39<Location "/projects/myproject/login">
     40  AuthType Basic
     41  AuthName "myproject"
     42  AuthUserFile /var/trac/myproject/.htpasswd
     43  Require valid-user
     44</Location>
     45}}}
     46
     47=== !PythonPath を設定する ===
     48
     49もし Trac のインストールが、通常の Python ライブラリのパスの中に無い場合、 Apache が Trac の mod_python ハンドルを見つけられるように `PythonPath` ディレクティブで指定しなければなりません:
     50{{{
     51<Location /projects/myproject>
     52  ...
     53  PythonPath "sys.path + ['/path/to/trac']"
     54  ...
     55</Location>
     56}}}
     57
     58!PythonPath ディレクティブを使用するときは気をつけてください。そして、 `SetEnv PYTHONPATH` は動かないので使用しないで下さい。
     59
     60== マルチプロジェクトのセットアップ ==
     61
     62Trac の mod_python ハンドラには Subversion の `SvnParentPath` とよく似た `TracEnvParentDir` というコンフィグレーションオプションがあります。
     63{{{
     64<Location /projects>
     65  SetHandler mod_python
     66  PythonHandler trac.web.modpython_frontend
     67  PythonOption TracEnvParentDir /var/trac
     68  PythonOption TracUriRoot /projects
     69</Location>
     70}}}
     71
     72`/projects` の URL をリクエストすると、 TracEnvironment の親ディレクトリ `TracEnvParentDir` として設定したディレクトリ配下のサブディレクトリ一覧が表示されます。その一覧から何かプロジェクトを選択するとそれに該当する TracEnvironment を開くことができます。
     73
     74あなたのプロジェクトのホームページとして、サブディレクトリのリストが必要ないならば、以下のようにすることができます。
     75{{{
     76<LocationMatch "/.+/">
     77}}}
     78
     79これは Apache に mod_python を使用するために !DocumentRoot フォルダの代わりのロケーションを使用することを教えます。
     80
     81すべてのプロジェクトに対して、 `<LocationMatch>` ディレクティブを使用することによって同じ認証の仕組みを使用することができます。
     82{{{
     83<LocationMatch "/projects/[^/]+/login">
     84  AuthType Basic
     85  AuthName "Trac"
     86  AuthUserFile /var/trac/.htpasswd
     87  Require valid-user
     88</LocationMatch>
     89}}}
     90
     91== 仮想ホストの設定 ==
     92
     93以下に示す例は Trac を仮想サーバーとしてセットアップするときに必要な設定です。 (例えば、!http://trac.mycompany.com といった
     94URL でアクセスすることができます):
     95
     96{{{
     97<VirtualHost * >
     98    DocumentRoot /var/trac/myproject
     99    ServerName trac.mycompany.com
     100    <Location />
     101        SetHandler mod_python
     102        PythonHandler trac.web.modpython_frontend
     103        PythonOption TracEnv /var/trac/myproject
     104        PythonOption TracUriRoot /
     105    </Location>
     106    <Location /login>
     107        AuthType Basic
     108        AuthName "MyCompany Trac Server"
     109        AuthUserFile /var/trac/myproject/.htpasswd
     110        Require valid-user
     111    </Location>
     112</VirtualHost>
     113}}}
     114
     115複数のプロジェクトをサポートする仮想ホストの設定では、 "`TracEnv`" /var/trac/myproject を "`TracEnvParentDir`" /var/trac/ に置き換えて下さい。
     116
     117== トラブルシューティング ==
     118
     119サーバエラーのページがでたときには、 まずはApache のエラーログを確認するか、 `PythonDebug` オプションを有効にして下さい:
     120{{{
     121<Location /projects/myproject>
     122  ...
     123  PythonDebug on
     124</Location>
     125}}}
     126
     127=== フォームを送信するときの問題 ===
     128
     129もし、 Trac で何かしらのフォームを送信したときに、トラブルに見舞われたら(よくある問題として、送信後にスタートページにリダイレクトされてしまうという問題があります)、 {{{DocumentRoot}}} の中に mod_python をマッピングしたパスと同じフォルダやファイルが存在しないか確認してください。どういうわけか、 mod_python は静的リソースと同じところにマッピングされると混乱してしまいます。
     130
     131=== 仮想ホストの設定においての問題 ===
     132
     133もし <Location /> ディレクティブが使用されているとき、 `DocumentRoot` を設定すると ''403 (Forbidden)'' エラーになるでしょう。 `DocumentRoot` ディレクティブを削除するか、アクセスが許されているディレクトリに設定されているかどうかを確認して下さい (対応する `<Directory>` ブロックにて)
     134
     135<Location /> で `SetHandler` を使用すると、すべてを mod_python でハンドルすることになりますが、いかなる CSS も image/icons もダウンロードできなくなります。この問題を回避するために、 <Location /trac> で `SetHandler None` を使用しています。しかし、この方法がエレガントな解決方法だとは思っていません。
     136
     137=== .htaccess ファイルを使用する ===
     138
     139ディレクトリの設定をほんのちょっと修正するには `.htaccess` ファイルを使用すればいいかもしれませんが、これは動作しません。 Apache が Trac URL に "/" (スラッシュ) を追加すると、正しい動作を妨げてしまいます。
     140
     141それでは、 mod_rewrite を使用すればいいように見えますが、これも動作しません。とにかく、百害あって一理なしです。指示に従ってください。:)
     142
     143=== Win32 での特記 ===
     144Windows 上で mod_python 3.2 より前のバージョンで Trac を動かしている場合、 添付ファイルのアップロードが '''動かない''' でしょう。この問題は 3.1.4 以降で解決されました。 mod_python をアップグレードしてこの問題を解決してください。
     145
     146=== OS X での特記 ===
     147
     148OS X で mod_python を使用するとき、 `apachectl restart` コマンドで Apache の再起動ができないでしょう。これは、 mod_python 3.2 でおそらく修正されるでしょう。しかし、 [http://www.dscpl.com.au/projects/vampire/patches.html ここ] にあるパッチを適用すれば、 3.2 以前のバージョンでもこの問題を回避できます。
     149
     150=== SELinux での特記 ===
     151
     152もし、 Trac が ''Cannot get shared lock on db.lock'' というようなメッセージが出力されたら、
     153リポジトリに セキュリティコンテキストを設定する必要があるでしょう:
     154
     155{{{
     156chcon -R -h -t httpd_sys_content_t PATH_TO_REPOSITORY
     157}}}
     158
     159See also [[http://subversion.tigris.org/faq.html#reposperms]]
     160
     161=== FreeBSD での特記 ===
     162mod_python と sqlite パッケージのインストールバージョンに注意して下さい。 Ports には両パッケージともいろいろなバージョンがありますが、初期の pysqlite と mod_python は組み合わせることができません。前者は python のスレッド機能サポートが必要ですし、 後者 は python のスレッド機能なしのインストールが必要です。
     163
     164=== Subversion での特記 ===
     165
     166Trac でコマンドライン、 TracStandalone で使用しているときは動くのに、 mod_python を使用しているときのみ、 `Unsupported version control system "svn"` というエラーが出力される場合、 [TracModPython#PythonPathを設定する PythonPath] ディレクティブに Python bindings へのパスを追加するのを忘れている可能性があります。 (Python の `site-packages` ディレクトリに Python binding へのパスをはるか、 `.pth` ファイルを作っておくのがベターです。)
     167
     168これに当てはまらない場合、使用している Subversion のライブラリが Apache が使用しているバージョンと適合性がないかもしれません。(たいてい `apr` ライブラリの不適合性が原因になります。)その場合、 Apache の svn モジュール (`mod_dav_svn`) も使用できないでしょう。
     169
     170----
     171See also: TracGuide, TracInstall, TracCgi, TracFastCgi