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