Changes between Version 1 and Version 2 of TracModPython
- Timestamp:
- Aug 13, 2014, 12:08:18 AM (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TracModPython
v1 v2 4 4 Trac では [http://www.modpython.org/ mod_python] を利用可能です。 [http://www.modpython.org/ mod_python] は Trac のレスポンスタイムを飛躍的に向上し、特に [TracCgi CGI] と比べて、 [wiki:TracStandalone tracd]/mod_proxy では使用できない多くの Apache 機能を使えるようにします。 5 5 6 以下の説明は Apache2 のためのものです; まだ Apache1.3 を使用しているなら、 [http://trac.edgewall.org/wiki/TracModPython2.7 TracModPython2.7] にいくつか情報があります。 7 8 == シンプルなコンフィグレーション == #Simpleconfiguration 6 {{{#!div class="important" 7 ** A Word of Warning ** 8 9 2010 年 6 月 16 日に、 mod_python プロジェクトが正式に終了しました。もし mod_python を新しいインストールで使用することを考えているならば、 '''お願いだからしないで下さい'''! 解決されない既知の課題がありますし、今ではより良い代替手段もあります。詳細については、インストールしようとしているバージョンの TracInstall ページをチェックして下さい。 10 }}} 11 12 13 以下の説明は Apache2 のためのものです; まだ Apache1.3 を使用しているなら、 [trac:TracModPython2.7 TracModPython2.7] にいくつか情報がありますが、すべてあなた一人で設定することになるでしょう。 14 15 [[PageOutline(2-3,Overview,inline)]] 16 17 == シンプルな設定: 単一プロジェクト == #Simpleconfiguration 9 18 10 19 mod_python をインストールしたら、 Apache の設定ファイルに以下の一行を追加してモジュールをロードしなければなりません: … … 21 30 (Debian の続き) mod_python をインストールした後に、apache2 (上の Load Module に相当するもの) のモジュールを有効にしなければなりません : 22 31 {{{ 23 a2enmod mod_python32 a2enmod python 24 33 }}} 25 34 Fedora で yum を使用する場合: … … 34 43 PythonInterpreter main_interpreter 35 44 PythonHandler mod_python.testhandler 45 Order allow,deny 46 Allow from all 36 47 </Location> 37 48 }}} … … 43 54 SetHandler mod_python 44 55 PythonInterpreter main_interpreter 45 PythonHandler trac.web.modpython_frontend 56 PythonHandler trac.web.modpython_frontend 46 57 PythonOption TracEnv /var/trac/myproject 47 58 PythonOption TracUriRoot /projects/myproject 59 Order allow,deny 60 Allow from all 48 61 </Location> 49 62 }}} … … 55 68 # For a single project 56 69 PythonOption TracEnv /var/trac/myproject 70 57 71 # For multiple projects 58 72 PythonOption TracEnvParentDir /var/trac/myprojects 73 59 74 # For the index of multiple projects 60 75 PythonOption TracEnvIndexTemplate /srv/www/htdocs/trac/project_list_template.html 76 61 77 # A space delimitted list, with a "," between key and value pairs. 62 78 PythonOption TracTemplateVars key1,val1 key2,val2 79 63 80 # Useful to get the date in the wanted order 64 81 PythonOption TracLocale en_GB.UTF8 65 # See description above 82 83 # See description above 66 84 PythonOption TracUriRoot /projects/myproject 67 85 }}} … … 74 92 }}} 75 93 76 または Genshi の egg を解凍して展開することで、この問題を回避できます。 94 又は Genshi の egg を解凍して展開することで、この問題を回避できます。 95 77 96 === 認証設定 === #ConfiguringAuthentication 78 97 79 パスワードファイルを作成して、認証を構成するには [wiki:TracCgi#AddingAuthentication CGI] と同じように行います。 80 {{{ 81 #!xml 82 <Location /projects/myproject/login> 83 AuthType Basic 84 AuthName "myproject" 85 AuthUserFile /var/trac/myproject/.htpasswd 86 Require valid-user 87 </Location> 88 }}} 89 90 Apache の mod_ldap 認証のコンフィグは少し扱いにくいです。(httpd 2.2.x と OpenLDAP: slapd 2.3.19) 91 92 1. Apache の httpd.conf に以下のモジュールをロードする必要があります 93 {{{ 94 LoadModule ldap_module modules/mod_ldap.so 95 LoadModule authnz_ldap_module modules/mod_authnz_ldap.so 96 }}} 97 98 2. httpd.conf は以下のような感じになります: 99 100 {{{ 101 #!xml 102 <Location /trac/> 98 [wiki:TracModWSGI#ConfiguringAuthentication] ページの対応する項目を参照してください。 99 100 101 == 詳細な設定 == #AdvancedConfiguration 102 103 === Python Egg Cache を設定する === #SettingthePythonEggCache 104 105 Web サーバが Egg Cache に書き込みできない場合、パーミッションを変更するか、 Apache が書き込み可能な場所を指定する必要があります。設定しないと ''500 Internal Server Error'' や syslog へのエラー出力が発生します。 106 107 {{{ 108 #!xml 109 <Location /projects/myproject> 110 ... 111 PythonOption PYTHON_EGG_CACHE /tmp 112 ... 113 </Location> 114 }}} 115 116 117 === !PythonPath を設定する === #SettingthePythonPath 118 119 もし Trac のインストールが、通常の Python ライブラリのパスの中に無い場合、 Apache が Trac の mod_python ハンドラを見つけられるように `PythonPath` ディレクティブで指定しなければなりません: 120 {{{ 121 #!xml 122 <Location /projects/myproject> 123 ... 124 PythonPath "sys.path + ['/path/to/trac']" 125 ... 126 </Location> 127 }}} 128 129 !PythonPath ディレクティブを使用するときは気をつけてください。そして、 `SetEnv PYTHONPATH` は動かないので ''使用しない'' で下さい。 130 131 === マルチプロジェクトのセットアップ === #Settingupmultipleprojects 132 133 Trac の mod_python ハンドラには Subversion の `SvnParentPath` とよく似た `TracEnvParentDir` というコンフィグレーションオプションがあります。 134 {{{ 135 #!xml 136 <Location /projects> 103 137 SetHandler mod_python 104 138 PythonInterpreter main_interpreter 105 139 PythonHandler trac.web.modpython_frontend 106 PythonOption TracEnv /home/trac/107 PythonOption TracUriRoot /trac/108 Order deny,allow109 Deny from all110 Allow from 192.168.11.0/24111 AuthType Basic112 AuthName "Trac"113 AuthBasicProvider "ldap"114 AuthLDAPURL "ldap://127.0.0.1/dc=example,dc=co,dc=ke?uid?sub?(objectClass=inetOrgPerson)"115 authzldapauthoritative Off116 require valid-user117 </Location>118 }}}119 120 Microsoft Active Directory の LDAP インタフェースを使用する場合:121 122 {{{123 #!xml124 <Location /trac/>125 SetHandler mod_python126 PythonInterpreter main_interpreter127 PythonHandler trac.web.modpython_frontend128 PythonOption TracEnv /home/trac/129 PythonOption TracUriRoot /trac/130 Order deny,allow131 Deny from all132 Allow from 192.168.11.0/24133 AuthType Basic134 AuthName "Trac"135 AuthBasicProvider "ldap"136 AuthLDAPURL "ldap://adserver.company.com:3268/DC=company,DC=com?sAMAccountName?sub?(objectClass=user)"137 AuthLDAPBindDN ldap-auth-user@company.com138 AuthLDAPBindPassword "the_password"139 authzldapauthoritative Off140 # require valid-user141 require ldap-group CN=Trac Users,CN=Users,DC=company,DC=com142 </Location>143 }}}144 145 Note 1: このケースでは LDAP 検索で複数の OU をまとめて取得するために、 AD のグローバルカタログサーバ (Global Catalog Server) に接続しています (ポート番号が通常 LDAP で使用される 389 ではなく 3268 であることに注意してください) 。 GCS は基本的に "平らな" ツリーであり、ユーザが、どの OU に属するか不明な場合でも検索することができます。146 147 Note 2: Active Directory は、レコードにアクセスするために user/password (AuthLDAPBindDN と AuthLDAPBindPassword) による認証を必要とします。 (訳注: GC ではなく、通常の LDAP であれば Active Directory の ACL に認証なしユーザからの読み取り許可を設定すれば不要です)148 149 Note 3: "require ldap-group ..." ディレクティブはメンバのアクセスが許可されている AD のグループを指定します。150 151 152 === Python Egg Cache を設定する === #SettingthePythonEggCache153 154 Web サーバが Egg Cache に書き込みできない場合、パーミッションを変更するか、 Apache が書き込み可能な場所を指定する必要があります。設定しないと ''500 Internal Server Error'' や syslog へのエラー出力が発生します。155 156 {{{157 #!xml158 <Location /projects/myproject>159 ...160 PythonOption PYTHON_EGG_CACHE /tmp161 ...162 </Location>163 }}}164 165 166 === !PythonPath を設定する === #SettingthePythonPath167 168 もし Trac のインストールが、通常の Python ライブラリのパスの中に無い場合、 Apache が Trac の mod_python ハンドラを見つけられるように `PythonPath` ディレクティブで指定しなければなりません:169 {{{170 #!xml171 <Location /projects/myproject>172 ...173 PythonPath "sys.path + ['/path/to/trac']"174 ...175 </Location>176 }}}177 178 !PythonPath ディレクティブを使用するときは気をつけてください。そして、 `SetEnv PYTHONPATH` は動かないので ''使用しない'' で下さい。179 180 == マルチプロジェクトのセットアップ == #Settingupmultipleprojects181 182 Trac の mod_python ハンドラには Subversion の `SvnParentPath` とよく似た `TracEnvParentDir` というコンフィグレーションオプションがあります。183 {{{184 #!xml185 <Location /projects>186 SetHandler mod_python187 PythonInterpreter main_interpreter188 PythonHandler trac.web.modpython_frontend189 140 PythonOption TracEnvParentDir /var/trac 190 141 PythonOption TracUriRoot /projects … … 213 164 }}} 214 165 215 == 仮想ホストの設定== #VirtualHostConfiguration166 === 仮想ホストの設定 === #VirtualHostConfiguration 216 167 217 168 以下に示す例は Trac を仮想サーバーとしてセットアップするときに必要な設定です。 (例えば、!http://trac.mycompany.com といった … … 240 191 241 192 この設定は全てのケースでうまく動くわけではありません。動かない場合は以下を試してください: 242 * `<Location>` の代わりに `<LocationMatch>` を使用する 。243 * <Location /> はサーバの設定によっては、単にサーバのルートではなく完全なホスト名を参照していることがあります。このような場合、 (上記の例では下段にあたるログイン用ディレクトリを含む) 全てのリクエストが Python に送信され、認証が動かなくなります (認証を行おうとすると、認証が設定されていないというエラー画面が表示されます)。 URL を変更できるのであれば (/, /login の代わりに /web/, /web/login などのように) ルートではなくサブディレクトリを使ってみてください 。244 * Apache の `NameVirtualHost` を設定している場合、 `<VirtualHost *>` ではなく `<VirtualHost *:80>` を使用せねばならないかもしれません 。193 * `<Location>` の代わりに `<LocationMatch>` を使用する 194 * <Location /> はサーバの設定によっては、単にサーバのルートではなく完全なホスト名を参照していることがあります。このような場合、 (上記の例では下段にあたるログイン用ディレクトリを含む) 全てのリクエストが Python に送信され、認証が動かなくなります (認証を行おうとすると、認証が設定されていないというエラー画面が表示されます)。 URL を変更できるのであれば (/, /login の代わりに /web/, /web/login などのように) ルートではなくサブディレクトリを使ってみてください 195 * Apache の `NameVirtualHost` を設定している場合、 `<VirtualHost *>` ではなく `<VirtualHost *:80>` を使用せねばならないかもしれません 245 196 246 197 複数のプロジェクトをサポートする仮想ホストの設定では、 "`TracEnv`" /var/trac/myproject を "`TracEnvParentDir`" /var/trac/ に置き換えて下さい。 … … 261 212 複数プロジェクトの場合は、全てのプロジェクトでサーバを再起動してみてください。 262 213 263 === Expat-related のセグメンテーションフォルト === #expat 214 === 動作しないログイン === #LoginNotWorking 215 `<Location />` ディレクティブを使用した場合、 他のディレクティブ同様、`<Location /Login>` ディレクティブをオーバーライドします。 216 この問題を回避するには、次のように否定表現を使用します (マルチプロジェクト設定向け): 217 {{{ 218 #!xml 219 #this one for other pages 220 <Location ~ "/*(?!login)"> 221 SetHandler mod_python 222 PythonHandler trac.web.modpython_frontend 223 PythonOption TracEnvParentDir /projects 224 PythonOption TracUriRoot / 225 226 </Location> 227 #this one for login page 228 <Location ~ "/[^/]+/login"> 229 SetHandler mod_python 230 PythonHandler trac.web.modpython_frontend 231 PythonOption TracEnvParentDir /projects 232 PythonOption TracUriRoot / 233 234 #remove these if you don't want to force SSL 235 RewriteEngine On 236 RewriteCond %{HTTPS} off 237 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 238 239 AuthType Basic 240 AuthName "Trac" 241 AuthUserFile /projects/.htpasswd 242 Require valid-user 243 </Location> 244 }}} 245 246 === Expat-related segmentation faults === #expat 264 247 265 248 この問題は Unix 上で Python 2.4 を使用するとき、ほぼ確実に発生します。 266 Python 2.4 の使用する Expat (C で書かれた XML パーザライブラリ) と Apache の使用する Expat のバージョンが異なる場合に、セグメンテーションフォルトが発生します。 267 Trac 0.11 は Genshi (間接的に Expat が使用される) を使用しているため、以前 Trac 0.10 で正常に動いていたとしても、現在のあなたの環境で問題が起こり得ます。 249 Python 2.4 の使用する Expat (C で書かれた XML パーザライブラリ) と 250 Apache の使用する Expat のバージョンが異なる場合に、セグメンテーションフォルトが発生します。 251 Trac 0.11 は Genshi (間接的に Expat が使用される) を使用しているため、 252 以前 Trac 0.10 で正常に動いていたとしても、現在のあなたの環境で問題が起こり得ます。 268 253 269 254 Graham Dumpleton が、この問題について詳しく書いています。問題の [http://www.dscpl.com.au/wiki/ModPython/Articles/ExpatCausingApacheCrash 説明と回避方法] を確認してください。 … … 279 264 <Location /> で `SetHandler` を使用すると、すべてを mod_python でハンドルすることになりますが、いかなる CSS も image/icons もダウンロードできなくなります。この問題を回避するために、われわれは <Location /trac> で `SetHandler None` を使用しています。しかし、この方法がエレガントな解決方法だとは思っていません。 280 265 266 === Zip された egg での問題 === #Problemwithzippedegg 267 268 mod_python のバージョンによっては Zip された egg ファイルからモジュールを import できないことがあります。 Apache のログに `ImportError: No module named trac` が出力される場合、問題が発生している原因であると考えられます。 Python の site-packages ディレクトリを見てみてください。 Trac のモジュールが ''ディレクトリ'' ではなく ''ファイル'' として配置されている場合、問題の原因と考えられます。解決するためには、下記の上に `--always-unzip` オプションと伴に Trac をインストールしてみてください。 269 270 {{{ 271 easy_install --always-unzip Trac-0.12.zip 272 }}} 273 281 274 === .htaccess ファイルを使用する === #Using.htaccess 282 275 … … 286 279 287 280 成功した事例: 以下の設定値で成功した事例があります: 288 {{{ 281 {{{#!xml 289 282 SetHandler mod_python 290 283 PythonInterpreter main_interpreter 291 PythonHandler trac.web.modpython_frontend 284 PythonHandler trac.web.modpython_frontend 292 285 PythonOption TracEnv /system/path/to/this/directory 293 286 PythonOption TracUriRoot /path/on/apache … … 311 304 }}} 312 305 313 314 === Win32 での特記 === #Win32Issues306 === 特定のプラットフォームでの問題 === #Platformspecificissues 307 ==== Win32 での問題 ==== #Win32issues 315 308 Windows 上で mod_python 3.2 より前のバージョンで Trac を動かしている場合、添付ファイルのアップロードが '''動かない''' でしょう。この問題は 3.1.4 以降で解決されました。 mod_python をアップグレードしてこの問題を解決してください。 316 309 317 310 318 === OS X での特記=== #OSXissues311 ==== OS X での問題 ==== #OSXissues 319 312 320 313 OS X で mod_python を使用するとき、 `apachectl restart` コマンドで Apache の再起動ができないでしょう。これは、 mod_python 3.2 でおそらく修正されるでしょう。しかし、 [http://www.dscpl.com.au/projects/vampire/patches.html ここ] にあるパッチを適用すれば、 3.2 以前のバージョンでもこの問題を回避できます。 321 314 322 === SELinux での特記=== #SELinuxissues315 ==== SELinux での問題 ==== #SELinuxissues 323 316 324 317 もし、 Trac が ''Cannot get shared lock on db.lock'' というようなメッセージが出力したら、 … … 331 324 [http://subversion.tigris.org/faq.html#reposperms] も参考にして下さい 332 325 333 === FreeBSD での特記=== #FreeBSDissues326 ==== FreeBSD での問題 ==== #FreeBSDissues 334 327 mod_python と sqlite パッケージのインストールバージョンに注意して下さい。 Ports には両パッケージともいろいろなバージョンがありますが、初期の pysqlite と mod_python は組み合わせることができません。前者は python のスレッド機能サポートが必要ですし、 後者 は python のスレッド機能なしのインストールが必要です。 335 328 … … 341 334 }}} 342 335 343 === Subversion での特記 === #Subversionissues 336 337 ==== Fedora 7 での問題 ==== #Fedore7Issues 338 'python-sqlite2' を必ずインストールしてください。tracd では必須ではありませんが、 TracModPython では必須です。 339 340 341 === Subversion での問題 === #Subversionissues 344 342 345 343 コマンドラインや TracStandalone で使用しているときは動くのに、 mod_python を使用しているときのみ、 `Unsupported version control system "svn"` というエラーが出力される場合、 [wiki:"TracModPython#SettingthePythonPath" PythonPath] ディレクティブに Python bindings へのパスを追加するのを忘れている可能性があります。 (Python の `site-packages` ディレクトリに Python binding へのリンクを追加するか、 `.pth` ファイルを作っておくのがベターです。) … … 347 345 これに当てはまらない場合、使用している Subversion のライブラリが Apache が使用しているバージョンと適合性がないかもしれません。 (たいてい `apr` ライブラリの不適合性が原因になります。) その場合、 Apache の svn モジュール (`mod_dav_svn`) も使用できないでしょう。 348 346 349 また、ランタイムエラー ({{{argument number 2: a 'apr_pool_t *' is expected}}}) を抑止するためにも、複数のサブインタプリタを使用できる最近のバージョンの `mod_python` が必要になります。 3.2.8 では ''たぶん'' 動きますが、 [ http://trac.edgewall.org/ticket/3371#3371] に記述されている通り、メインインタプリタを使用するように強制するワークアラウンドを使用する方がおそらく良いでしょう:347 また、ランタイムエラー ({{{argument number 2: a 'apr_pool_t *' is expected}}}) を抑止するためにも、複数のサブインタプリタを使用できる最近のバージョンの `mod_python` が必要になります。 3.2.8 では ''たぶん'' 動きますが、 [trac:#3371] に記述されている通り、メインインタプリタを使用するように強制するワークアラウンドを使用する方がおそらく良いでしょう: 350 348 {{{ 351 349 PythonInterpreter main_interpreter 352 350 }}} 353 これは、よく知られている mod_python と Subversion の Python バインディングの他の問題 ([ http://trac.edgewall.org/ticket/2611 #2611], [http://trac.edgewall.org/ticket/3455 #3455]) について推奨しているワークアラウンドです。 [http://trac.edgewall.org/ticket/3455#comment:9#3455] Graham Dumpleton のコメントに問題点が指摘されています。351 これは、よく知られている mod_python と Subversion の Python バインディングの他の問題 ([trac:#2611], [trac:#3455]) について推奨しているワークアラウンドです。 [trac:comment:9:ticket:3455 #3455] Graham Dumpleton のコメントに問題点が指摘されています。 354 352 355 353 === ページレイアウトの問題 === #Pagelayoutissues … … 365 363 366 364 Note: 上記のコンフィグが効果を発揮するためには、プロジェクトの root 位置のコンフィグ後に追加しなければなりません。つまり {{{<Location /myproject />}}} 以降です。 365 366 また `PythonOptimize On` が設定されている場合、ページのヘッダとフッタの表示が乱れたり、マクロやプラグインのドキュメンテーションが表示されないことがあります ([trac:#8956] 参照)。オプションの設定によって影響を受ける箇所について充分考慮できない場合は `Off` に設定する方がよいでしょう。 367 367 368 368 === HTTPS の問題 === #HTTPSissues … … 379 379 }}} 380 380 381 === Fedora 7 の問題 === #Fedora7Issues382 必ず 'python-sqlite2' をインストールしてください。 TracModPython では必須です (tracd では必須ではありません)。383 384 381 385 382 === php5-mhash または その他の php5 モジュールのセグメンテーションフォルト === #Segmentationfaultwithphp5-mhashorotherphp5modules … … 389 386 390 387 ---- 391 See also: TracGuide, TracInstall, [wiki:TracModWSGI ModWSGI], [wiki:TracFastCgi FastCGI], [wiki:TracModPython ModPython], [http://trac.edgewall.org/wiki/TracNginxRecipe TracNginxRecipe]388 See also: TracGuide, TracInstall, [wiki:TracModWSGI ModWSGI], [wiki:TracFastCgi FastCGI], [trac:TracNginxRecipe TracNginxRecipe]