| 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"> |
| | 54 | Order allow,deny |
| | 55 | Allow from all |
| | 56 | </Location> |
| | 57 | }}} |
| | 58 | |
| | 59 | '''`TracUriRoot`''' オプションは不要な場合もあります。 `TracUriRoot` オプションを付けずに試し、 Trac が正しく URL を生成できないか、 "No handler matched request to..." というエラーが出るようであれば '''`TracUriRoot`''' を追加して下さい。 `Location` と '''`TracUriRoot`''' が同じパスになるようにしてください。 |
| | 60 | |
| | 61 | !PythonOption の一覧は以下の通りです。 |
| | 62 | {{{ |
| | 63 | # For a single project |
| | 64 | PythonOption TracEnv /var/trac/myproject |
| | 65 | # For multiple projects |
| | 66 | PythonOption TracEnvParentDir /var/trac/myprojects |
| | 67 | # For the index of multiple projects |
| | 68 | PythonOption TracEnvIndexTemplate /srv/www/htdocs/trac/project_list_template.html |
| | 69 | # A space delimitted list, with a "," between key and value pairs. |
| | 70 | PythonOption TracTemplateVars key1,val1 key2,val2 |
| | 71 | # Useful to get the date in the wanted order |
| | 72 | PythonOption TracLocale en_GB.UTF8 |
| | 73 | # See description above |
| | 74 | PythonOption TracUriRoot /projects/myproject |
| | 75 | }}} |
| | 76 | |
| | 77 | === Python Egg Cache === #PythonEggCache |
| | 78 | |
| | 79 | Genshi のように圧縮された Python egg は通常、実行するユーザのホームディレクトリ配下の `.python-eggs` ディレクトリに展開されます。 Apache のホームディレクトリは多くの場合、書き込みできないようになっているので、他のディレクトリを egg cache として指定しなければなりません: |
| | 80 | {{{ |
| | 81 | PythonOption PYTHON_EGG_CACHE /var/trac/myprojects/egg-cache |
| | 82 | }}} |
| | 83 | |
| | 84 | または Genshi の egg を解凍して展開することで、この問題を回避できます。 |
| | 85 | === 認証設定 === #ConfiguringAuthentication |
| | 86 | |
| | 87 | パスワードファイルを作成して、認証を構成するには [wiki:TracCgi#AddingAuthentication CGI] と同じように行います。 |
| | 88 | {{{ |
| | 89 | #!xml |
| | 90 | <Location /projects/myproject/login> |
| 47 | | === !PythonPath を設定する === |
| 48 | | |
| 49 | | もし Trac のインストールが、通常の Python ライブラリのパスの中に無い場合、 Apache が Trac の mod_python ハンドルを見つけられるように `PythonPath` ディレクティブで指定しなければなりません: |
| 50 | | {{{ |
| | 98 | Apache の mod_ldap 認証のコンフィグは少し扱いにくいです。(httpd 2.2.x と OpenLDAP: slapd 2.3.19) |
| | 99 | |
| | 100 | 1. Apache の httpd.conf に以下のモジュールをロードする必要があります |
| | 101 | {{{ |
| | 102 | LoadModule ldap_module modules/mod_ldap.so |
| | 103 | LoadModule authnz_ldap_module modules/mod_authnz_ldap.so |
| | 104 | }}} |
| | 105 | |
| | 106 | 2. httpd.conf は以下のような感じになります: |
| | 107 | |
| | 108 | {{{ |
| | 109 | #!xml |
| | 110 | <Location /trac/> |
| | 111 | SetHandler mod_python |
| | 112 | PythonInterpreter main_interpreter |
| | 113 | PythonHandler trac.web.modpython_frontend |
| | 114 | PythonOption TracEnv /home/trac/ |
| | 115 | PythonOption TracUriRoot /trac/ |
| | 116 | Order deny,allow |
| | 117 | Deny from all |
| | 118 | Allow from 192.168.11.0/24 |
| | 119 | AuthType Basic |
| | 120 | AuthName "Trac" |
| | 121 | AuthBasicProvider "ldap" |
| | 122 | AuthLDAPURL "ldap://127.0.0.1/dc=example,dc=co,dc=ke?uid?sub?(objectClass=inetOrgPerson)" |
| | 123 | authzldapauthoritative Off |
| | 124 | require valid-user |
| | 125 | </Location> |
| | 126 | }}} |
| | 127 | |
| | 128 | Microsoft Active Directory の LDAP インタフェースを使用する場合: |
| | 129 | |
| | 130 | {{{ |
| | 131 | #!xml |
| | 132 | <Location /trac/> |
| | 133 | SetHandler mod_python |
| | 134 | PythonInterpreter main_interpreter |
| | 135 | PythonHandler trac.web.modpython_frontend |
| | 136 | PythonOption TracEnv /home/trac/ |
| | 137 | PythonOption TracUriRoot /trac/ |
| | 138 | Order deny,allow |
| | 139 | Deny from all |
| | 140 | Allow from 192.168.11.0/24 |
| | 141 | AuthType Basic |
| | 142 | AuthName "Trac" |
| | 143 | AuthBasicProvider "ldap" |
| | 144 | AuthLDAPURL "ldap://adserver.company.com:3268/DC=company,DC=com?sAMAccountName?sub?(objectClass=user)" |
| | 145 | AuthLDAPBindDN ldap-auth-user@company.com |
| | 146 | AuthLDAPBindPassword "the_password" |
| | 147 | authzldapauthoritative Off |
| | 148 | # require valid-user |
| | 149 | require ldap-group CN=Trac Users,CN=Users,DC=company,DC=com |
| | 150 | </Location> |
| | 151 | }}} |
| | 152 | |
| | 153 | Note 1: このケースでは LDAP 検索で複数の OU をまとめて取得するために、 AD のグローバルカタログサーバ (Global Catalog Server) に接続しています (ポート番号が通常 LDAP で使用される 389 ではなく 3268 であることに注意してください) 。 GCS は基本的に "平らな" ツリーであり、ユーザが、どの OU に属するか不明な場合でも検索することができます。 |
| | 154 | |
| | 155 | Note 2: Active Directory は、レコードにアクセスするために user/password (AuthLDAPBindDN と AuthLDAPBindPassword) による認証を必要とします。 (訳注: GC ではなく、通常の LDAP であれば Active Directory の ACL に認証なしユーザからの読み取り許可を設定すれば不要です) |
| | 156 | |
| | 157 | Note 3: "require ldap-group ..." ディレクティブはメンバのアクセスが許可されている AD のグループを指定します。 |
| | 158 | |
| | 159 | |
| | 160 | === Python Egg Cache を設定する === #SettingthePythonEggCache |
| | 161 | |
| | 162 | Web サーバが Egg Cache に書き込みできない場合、パーミッションを変更するか、 Apache が書き込み可能な場所を指定する必要があります。設定しないと ''500 Internal Server Error'' や syslog へのエラー出力が発生します。 |
| | 163 | |
| | 164 | {{{ |
| | 165 | #!xml |
| | 166 | <Location /projects/myproject> |
| | 167 | ... |
| | 168 | PythonOption PYTHON_EGG_CACHE /tmp |
| | 169 | ... |
| | 170 | </Location> |
| | 171 | }}} |
| | 172 | |
| | 173 | |
| | 174 | === !PythonPath を設定する === #SettingthePythonPath |
| | 175 | |
| | 176 | もし Trac のインストールが、通常の Python ライブラリのパスの中に無い場合、 Apache が Trac の mod_python ハンドラを見つけられるように `PythonPath` ディレクティブで指定しなければなりません: |
| | 177 | {{{ |
| | 178 | #!xml |
| 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 での特記 === |
| 144 | | Windows 上で mod_python 3.2 より前のバージョンで Trac を動かしている場合、 添付ファイルのアップロードが '''動かない''' でしょう。この問題は 3.1.4 以降で解決されました。 mod_python をアップグレードしてこの問題を解決してください。 |
| 145 | | |
| 146 | | === OS X での特記 === |
| | 269 | 複数プロジェクトの場合は、全てのプロジェクトでサーバを再起動してみてください。 |
| | 270 | |
| | 271 | === Expat-related のセグメンテーションフォルト === #expat |
| | 272 | |
| | 273 | この問題は Unix 上で Python 2.4 を使用するとき、ほぼ確実に発生します。 |
| | 274 | Python 2.4 の使用する Expat (C で書かれた XML パーザライブラリ) と Apache の使用する Expat のバージョンが異なる場合に、セグメンテーションフォルトが発生します。 |
| | 275 | Trac 0.11 は Genshi (間接的に Expat が使用される) を使用しているため、以前 Trac 0.10 で正常に動いていたとしても、現在のあなたの環境で問題が起こり得ます。 |
| | 276 | |
| | 277 | Graham Dumpleton が、この問題について詳しく書いています。問題の [http://www.dscpl.com.au/wiki/ModPython/Articles/ExpatCausingApacheCrash 説明と回避方法] を確認してください。 |
| | 278 | |
| | 279 | === フォームを送信するときの問題 === #Formsubmissionproblems |
| | 280 | |
| | 281 | もし、 Trac で何かしらのフォームを送信したときに、トラブルに見舞われたら (送信後にスタートページにリダイレクトされてしまう、などがよくある問題です) {{{DocumentRoot}}} の中に mod_python をマッピングしたパスと同じフォルダやファイルが存在しないか確認してください。どういうわけか、 mod_python は静的リソースと同じところにマッピングされると混乱してしまいます。 |
| | 282 | |
| | 283 | === 仮想ホストの設定においての問題 === #Problemwithvirtualhostconfiguration |
| | 284 | |
| | 285 | <Location /> ディレクティブが使用されている場合に `DocumentRoot` を設定すると ''403 (Forbidden)'' エラーになることがあります。 `DocumentRoot` ディレクティブを削除するか、アクセスが許されているディレクトリに設定されているかどうかを確認して下さい (対応する `<Directory>` ブロックにて) |
| | 286 | |
| | 287 | <Location /> で `SetHandler` を使用すると、すべてを mod_python でハンドルすることになりますが、いかなる CSS も image/icons もダウンロードできなくなります。この問題を回避するために、われわれは <Location /trac> で `SetHandler None` を使用しています。しかし、この方法がエレガントな解決方法だとは思っていません。 |
| | 288 | |
| | 289 | === Zip された egg での問題 === #Problemwithzippedegg |
| | 290 | |
| | 291 | mod_python のバージョンによっては Zip された egg ファイルからモジュールを import できないことがあります。 Apache のログに `ImportError: No module named trac` が出力される場合、問題が発生している原因であると考えられます。 Python の site-packages ディレクトリを見てみてください; Trac のモジュールが ''ディレクトリ'' ではなく ''ファイル'' として配置されている場合、問題の原因と考えられます。解決するためには、下記の上に `--always-unzip` オプションと伴に Trac をインストールしてみてください。 |
| | 292 | |
| | 293 | {{{ |
| | 294 | easy_install --always-unzip Trac-0.12.zip |
| | 295 | }}} |
| | 296 | |
| | 297 | === .htaccess ファイルを使用する === #Using.htaccess |
| | 298 | |
| | 299 | ディレクトリの設定をほんのちょっと修正するには `.htaccess` ファイルを使用すればいいかもしれませんが、これは動作しません。 Apache が Trac の URL に "/" (スラッシュ) を追加すると、正しい動作を妨げてしまいます。 |
| | 300 | |
| | 301 | それでは、 mod_rewrite を使用すればいいように見えますが、これも動作しません。とにかく、百害あって一利なしです。指示に従ってください。 :) |
| | 302 | |
| | 303 | 成功した事例: 以下の設定値で成功した事例があります: |
| | 304 | {{{ |
| | 305 | SetHandler mod_python |
| | 306 | PythonInterpreter main_interpreter |
| | 307 | PythonHandler trac.web.modpython_frontend |
| | 308 | PythonOption TracEnv /system/path/to/this/directory |
| | 309 | PythonOption TracUriRoot /path/on/apache |
| | 310 | |
| | 311 | AuthType Basic |
| | 312 | AuthName "ProjectName" |
| | 313 | AuthUserFile /path/to/.htpasswd |
| | 314 | Require valid-user |
| | 315 | }}} |
| | 316 | |
| | 317 | `TracUriRoot` は Web ブラウザが取得する Trac のパスを明示的に設定するのに使用します。 (例: domain.tld/projects/trac) |
| | 318 | |
| | 319 | === .htaccess 使用時の特記事項 === #Additional.htaccesshelp |
| | 320 | |
| | 321 | .htaccess を使用している場合、 Trac のディレクトリが他のディレクトリで設定されたた .htaccess ディレクティブを継承し、問題を生じることがあります。このような場合、以下のように .htaccess ファイルに設定してみて下さい: |
| | 322 | |
| | 323 | {{{ |
| | 324 | <IfModule mod_rewrite.c> |
| | 325 | RewriteEngine Off |
| | 326 | </IfModule> |
| | 327 | }}} |
| | 328 | |
| | 329 | |
| | 330 | === Win32 での特記 === #Win32Issues |
| | 331 | Windows 上で mod_python 3.2 より前のバージョンで Trac を動かしている場合、添付ファイルのアップロードが '''動かない''' でしょう。この問題は 3.1.4 以降で解決されました。 mod_python をアップグレードしてこの問題を解決してください。 |
| | 332 | |
| | 333 | |
| | 334 | === OS X での特記 === #OSXissues |
| 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`) も使用できないでしょう。 |
| | 352 | apache2 を普通にコンパイルしてインストールした場合、 apache はスレッドのサポートなしになります (これが FreeBSD 上であまりよく動かない原因)。 --enable-threads を使用して ./configure を実行することで apache にスレッドのサポートありにすることができますが、これはお勧めできません。 |
| | 353 | 最良のオプションは /usr/local/apache2/bin/ennvars に下記の一行を追加することだと [http://modpython.org/pipermail/mod_python/2006-September/021983.html 考えられます。] |
| | 354 | |
| | 355 | {{{ |
| | 356 | export LD_PRELOAD=/usr/lib/libc_r.so |
| | 357 | }}} |
| | 358 | |
| | 359 | === Subversion での特記 === #Subversionissues |
| | 360 | |
| | 361 | コマンドラインや TracStandalone で使用しているときは動くのに、 mod_python を使用しているときのみ、 `Unsupported version control system "svn"` というエラーが出力される場合、 [wiki:"TracModPython#SettingthePythonPath" PythonPath] ディレクティブに Python bindings へのパスを追加するのを忘れている可能性があります。 (Python の `site-packages` ディレクトリに Python binding へのリンクを追加するか、 `.pth` ファイルを作っておくのがベターです。) |
| | 362 | |
| | 363 | これに当てはまらない場合、使用している Subversion のライブラリが Apache が使用しているバージョンと適合性がないかもしれません。 (たいてい `apr` ライブラリの不適合性が原因になります。) その場合、 Apache の svn モジュール (`mod_dav_svn`) も使用できないでしょう。 |
| | 364 | |
| | 365 | また、ランタイムエラー ({{{argument number 2: a 'apr_pool_t *' is expected}}}) を抑止するためにも、複数のサブインタプリタを使用できる最近のバージョンの `mod_python` が必要になります。 3.2.8 では ''たぶん'' 動きますが、 [http://trac.edgewall.org/ticket/3371 #3371] に記述されている通り、メインインタプリタを使用するように強制するワークアラウンドを使用する方がおそらく良いでしょう: |
| | 366 | {{{ |
| | 367 | PythonInterpreter main_interpreter |
| | 368 | }}} |
| | 369 | これは、よく知られている 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 のコメントに問題点が指摘されています。 |
| | 370 | |
| | 371 | === ページレイアウトの問題 === #Pagelayoutissues |
| | 372 | |
| | 373 | Trac のページフォーマットが奇妙に見えるなら、ページレイアウトを管理するスタイルシートが Web サーバによって適切に扱われていない可能性が考えられます。 Apache のコンフィグに以下を追加してみてください: |
| | 374 | {{{ |
| | 375 | #!xml |
| | 376 | Alias /myproject/css "/usr/share/trac/htdocs/css" |
| | 377 | <Location /myproject/css> |
| | 378 | SetHandler None |
| | 379 | </Location> |
| | 380 | }}} |
| | 381 | |
| | 382 | Note: 上記のコンフィグが効果を発揮するためには、プロジェクトの root 位置のコンフィグ後に追加しなければなりません。つまり {{{<Location /myproject />}}} 以降です。 |
| | 383 | |
| | 384 | また `PythonOptimize On` が設定されている場合、ページのヘッダとフッタの表示が乱れたり、マクロやプラグインのドキュメンテーションが表示されないことがあります ([http://trac.edgewall.org/ticket/8956 #8956] 参照)。オプションの設定によって影響を受ける箇所について充分考慮できない場合は `Off` に設定する方がよいでしょう。 |
| | 385 | |
| | 386 | === HTTPS の問題 === #HTTPSissues |
| | 387 | |
| | 388 | Trac を完全に https で実行したいにも関わらず、プレーンな http にリダイレクトされる場合、 Apache のコンフィグに以下を追加してください: |
| | 389 | {{{ |
| | 390 | #!xml |
| | 391 | <VirtualHost * > |
| | 392 | DocumentRoot /var/www/myproject |
| | 393 | ServerName trac.mycompany.com |
| | 394 | SetEnv HTTPS 1 |
| | 395 | .... |
| | 396 | </VirtualHost> |
| | 397 | }}} |
| | 398 | |
| | 399 | === Fedora 7 の問題 === #Fedora7Issues |
| | 400 | 必ず 'python-sqlite2' をインストールしてください。 TracModPython では必須です (tracd では必須ではありません)。 |
| | 401 | |
| | 402 | |
| | 403 | === php5-mhash または その他の php5 モジュールのセグメンテーションフォルト === #Segmentationfaultwithphp5-mhashorotherphp5modules |
| | 404 | php5-mhash モジュールがインストールされている場合、 (debian etch について報告された) セグメンテーションフォルトに遭遇するでしょう。 php-mhash を削除して、問題が解決するかを確かめてみてください。 debian のバグレポート [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=411487] を参考にして下さい。 |
| | 405 | |
| | 406 | システムライブラリの代わりに、サードパーティのライブラリでコンパイルされた php5 を使用する一部の人々にもトラブルが発生します。ここを確認してください [http://www.djangoproject.com/documentation/modpython/#if-you-get-a-segmentation-fault] |