Changes between Version 1 and Version 2 of TracModWSGI
- Timestamp:
- Jun 17, 2013, 1:35:49 PM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TracModWSGI
v1 v2 1 1 = Trac と mod_wsgi = #Tracandmod_wsgi 2 2 3 '''重要な Note:''' ''バージョン 1.6 または 2.4 以降の `mod_wsgi` を使用してください。 2.X ブランチの 2.4 以前のバージョンでは、 Apache の特定の設定下において WSGI の file_wrapper 拡張の扱いに問題があります。この拡張は Trac では添付ファイルおよび、スタイルシートなどの静的メディアファイルを提供する箇所で使われています。この問題の影響を受けてしまった場合、添付ファイルは空ファイルとして扱われてしまい、 HTML ページではスタイルシートがロードされないため描画が正しく行われなくなります。詳細は mod_wsgi のチケット [http://code.google.com/p/modwsgi/issues/detail?id=100 #100] と [http://code.google.com/p/modwsgi/issues/detail?id=132 #132] を確認してください。 4 5 [http://code.google.com/p/modwsgi/ mod_wsgi] は WSGI 互換の Python アプリケーションを Apache 上で直接起動させることができる Apache のモジュールです。 mod_wsgi アダプターは完全に C 言語で書かれており、 mod_python や CGI に比べて非常によいパフォーマンスを提供します。 6 7 Trac は mod_wsgi のトップレベルに application を定義するスクリプトだけで動作します。このスクリプトは単独の Python ファイルで、通常は .wsgi という拡張子で保存されます。このファイルを生成するためには '''trac-admin <env> deploy <dir>''' コマンドを使用します。コマンドを実行すると必要となるパスが自動的に設定されます。 8 9 {{{ 10 #!python 3 4 [http://code.google.com/p/modwsgi/ mod_wsgi] は WSGI 互換の Python アプリケーションを Apache 上で直接起動させることができる Apache のモジュールです。 mod_wsgi アダプターは完全に C 言語で書かれており、すばらしいパフォーマンスを提供します。 5 6 [[PageOutline(2-3,Overview,inline)]] 7 8 == `trac.wsgi` スクリプト == #trac.wsgiscript 9 10 Trac は以下に記すスクリプトによって mod_wsgi のトップで実行されます。これらスクリプトは単なる Python ファイルで、通常は `.wsgi` という拡張子で保存されます。 11 12 === 基本的なスクリプト === #Averybasicscript 13 もっともシンプルな形式: 14 15 {{{#!python 11 16 import os 12 17 … … 20 25 環境変数 `TRAC_ENV` は通常通り Trac environment のディレクトリを指定します (複数の Trac environment を含むディレクトリであれば `TRAC_ENV_PARENT_DIR` を使うこともできます)。 `PYTHON_EGG_CACHE` は Python eggs を一時的に展開するのに使用するディレクトリを指定します。 21 26 22 '''重要な Note:''' 複数の `.wsgi` ファイルを使用する場合 (それぞれのファイルに別個の Trac environment を設定するケースなど) は、 `os.environ['TRAC_ENV']` には Trac environment のパスを ''設定しない'' でください。この方法を使うと、別の Trac environment の設定が Trac にロードされてしまうことがあります。 (以前にロードした Trac environment のパスが使われてしまいます。) この問題は `.wsgi` ファイルの内容を下記の通り変更することで回避できます: 23 24 {{{ 25 #!python 27 === 複雑なスクリプト === #Amoreelaboratescript 28 29 複数の `.wsgi` ファイルを使用する場合 (それぞれのファイルに別個の Trac environment を設定するケースなど) は、 `os.environ['TRAC_ENV']` に Trac environment のパスを ''設定しない'' でください。この方法を使うと、別の Trac environment のコンテンツが読み込まれたり、直前に表示した Trac environment のパスが使われてしまうことがあります。 30 31 この問題は `.wsgi` ファイルの内容を下記の通り変更することで回避できます: 32 {{{#!python 26 33 import os 27 34 … … 30 37 import trac.web.main 31 38 def application(environ, start_response): 32 environ['trac.env_path'] = '/usr/local/trac/mysite' 39 environ['trac.env_path'] = '/usr/local/trac/mysite' 33 40 return trac.web.main.dispatch_request(environ, start_response) 34 41 }}} 35 42 36 分かりやすくするために、このファイルの拡張子は `.wsgi` とすべきです。 Apache にアクセス権を開放できるのであれば、このファイルは自分が所有権を持つディレクトリに置くこともできます。 この .wsgi ファイルは TracAdmin のコマンド `deploy` を使用することで作成することができます。43 分かりやすくするために、このファイルの拡張子は `.wsgi` とすべきです。 Apache にアクセス権を開放できるのであれば、このファイルは自分が所有権を持つディレクトリに置くこともできます。 37 44 38 45 Trac と egg ファイルをインストールしたパスが通常と異なる場合、それらのパスを以下の要領で wsgi スクリプトの先頭に記述する必要があります: 39 46 40 {{{ 41 #!python 47 {{{#!python 42 48 import site 43 49 site.addsitedir('/usr/local/trac/lib/python2.4/site-packages') 44 50 }}} 45 51 46 パスはインストールした Trac のライブラリに位置に一致するように変更してください。 47 48 wsgi-script の準備ができたら、以下のように httpd.conf に設定を追加してください。 52 パスはインストールした Trac のライブラリに一致するように変更してください。 53 54 === 推奨される `trac.wsgi` スクリプト === #Recommendedtrac.wsgiscript 55 56 比較的堅牢で汎用的なファイルを生成するためには `trac-admin <env> deploy <dir>` コマンドを使用します。コマンドを実行すると必要となるパスが自動的に設定されます (TracInstall#cgi-bin 参照) 。 57 58 59 == スクリプトのリクエストをマッピングする == #Mappingrequeststothescript 60 61 .wsgi スクリプトを作成したら、Apache の設定ファイル (例えば `httpd.conf`) に以下を追記してください。 49 62 50 63 {{{ … … 58 71 }}} 59 72 60 Trac environment のサブディレクトリにスクリプトがある場合、 Apache がスクリプトを起動する為には、スクリプトが含まれるディレクトリまで完全に Apache がアクセスできなければなりません。 {{{WSGIApplicationGroup}}} ディレクティブを使用すると、常に mod_wsgi が作成した最初の Python インタプリタ内で Trac が起動することが保証されます; これは Trac で使用している Subversion の Python バインディングがサブインタプリタでは動作しないことがあるため必要になります。リクエストがハングし、 Apache がクラッシュしたような結果が返ります。この設定を行った後は Apache を再起動しないと反映されません。 61 62 Apache, mod_wsgi, Python 本体 (Trac とその依存ライブラリを除く) の設定をテストしたい場合、簡単な wsgi アプリケーションを使用するとリクエストが処理されているか確認することができます (以下に示す内容だけを持つ .wsgi スクリプトを使用してください): 63 64 {{{ 73 スクリプトは Trac environment のサブディレクトリにあります。 74 75 [trac:TracInstall#cgi-bin Trac cgi-bin ディレクトリを生成する] のならば、Apache の設定ファイルには以下のように記述してください: 76 77 {{{ 78 WSGIScriptAlias /trac /usr/share/trac/cgi-bin/trac.wsgi 79 80 <Directory /usr/share/trac/cgi-bin> 81 WSGIApplicationGroup %{GLOBAL} 82 Order deny,allow 83 Allow from all 84 </Directory> 85 }}} 86 87 Apache がスクリプトを起動する為には、スクリプトが含まれるディレクトリまで完全に Apache がアクセスできなければなりません。 `WSGIApplicationGroup` ディレクティブを使用すると、常に mod_wsgi が作成した最初の Python インタプリタ内で Trac が起動することが保証されます。これは Trac で使用している Subversion の Python バインディングがサブインタプリタでは動作しないことがあるため必要になります。リクエストがハングし、 Apache がクラッシュしたような結果が返ります。この設定を行った後は Apache を再起動しないと反映されません。 88 89 Apache, mod_wsgi, Python 本体 (Trac とその依存ライブラリを除く) の設定をテストしたい場合、簡単な wsgi アプリケーションを使用するとリクエストが処理されているか確認することができます (以下に示す内容だけを持つ `.wsgi` スクリプトを使用してください): 90 91 {{{#!python 65 92 def application(environ, start_response): 66 93 start_response('200 OK',[('Content-type','text/html')]) … … 68 95 }}} 69 96 70 mod_wsgi の [http://code.google.com/p/modwsgi/wiki/IntegrationWithTrac インストール例] に Trac の情報が掲載されています。 71 72 トラブルシューティングの Tips は [TracModPython#Troubleshooting mod_python のトラブルシューティング] セクションも参考になります。 Apache に関連する問題の多くは似通っていて、多くの場合 mod_wsgi を使用する [http://code.google.com/p/modwsgi/wiki/ApplicationIssues アプリケーション側の問題] です。 73 74 ''Note: 私の環境では mod_wsgi 2.5 と Python 2.6.1 を使うと Internal Server Error が発生しました (Apache 2.2.11 および Trac 0.11.2.1)。 Python 2.6.2 にアップグレードすると解決しました。 ([http://www.mail-archive.com/modwsgi@googlegroups.com/msg01917.html ここ] に書いてある通り)[[BR]]-- Graham Shanks'' 75 76 == mod_wsgi 使用におけるTrac での Apache 基本認証 == #ApacheBasicAuthenticationforTracthrumod_wsgi 77 78 上記の mod_wsgi のドキュメントには、 Apache の設定例 a) trac をバーチャルホストでサブドメインを作成して動かす例と b) Trac の認証として、 Apache の基本認証を設定する例が記載されています。 79 80 81 例えば、 trac を !http://trac.my-proj.my-site.org としてホストし、{{{/home/trac-for-my-proj}}} フォルダから起動する場合で、 {{{the-env}}} を作成するために、 {{{trac-admin the-env initenv}}} コマンドを使用し、 {{{the-deploy}}} フォルダを作成するために、 {{{trac-admin the-env deploy the-deploy}}} コマンドを使用した場合です: 97 mod_wsgi の特定ディレクティブの使用方法についての詳細は、 [http://code.google.com/p/modwsgi/wiki/ mod_wsgi's wiki] または [http://code.google.com/p/modwsgi/wiki/IntegrationWithTrac インストール例] を参照してください。 98 99 100 == 認証の設定 == #ConfiguringAuthentication 101 102 このセクション内では認証の設定方法をいくつか記述します。 103 104 Apache ガイドの [http://httpd.apache.org/docs/2.2/howto/auth.html 認証、許可、アクセスコントロール] も参照してください。 105 106 === 基本認証 === #UsingBasicAuthentication 107 108 Apache で認証を追加する最も簡単な方法は、パスワードファイルを作成することです。 `htpasswd` プログラムを使用してパスワードファイルを作成します: 109 {{{ 110 $ htpasswd -c /somewhere/trac.htpasswd admin 111 New password: <type password> 112 Re-type new password: <type password again> 113 Adding password for user admin 114 }}} 115 116 一番最初のユーザ以外は "-c" オプションは必要ありません: 117 {{{ 118 $ htpasswd /somewhere/trac.htpasswd john 119 New password: <type password> 120 Re-type new password: <type password again> 121 Adding password for user john 122 }}} 123 124 '' `htpasswd` についての詳細は man を参照してください。'' 125 126 ユーザを作成した後、TracPermissions の記述通りユーザに権限を設定することができます。 127 128 Apache の設定ファイルの中にパスワードファイルを記述し、認証を有効にする必要があります: 129 {{{ 130 <Location "/trac/login"> 131 AuthType Basic 132 AuthName "Trac" 133 AuthUserFile /somewhere/trac.htpasswd 134 Require valid-user 135 </Location> 136 }}} 137 138 複数のプロジェクトを持っている場合でも、共通のパスワードファイルを使用することができます: 139 {{{ 140 <LocationMatch "/trac/[^/]+/login"> 141 AuthType Basic 142 AuthName "Trac" 143 AuthUserFile /somewhere/trac.htpasswd 144 Require valid-user 145 </LocationMatch> 146 }}} 147 Note: 'login' という名のファイルやディレクトリが必要なわけではありません。[[BR]] 148 [http://httpd.apache.org/docs/2.2/mod/mod_auth_basic.html mod_auth_basic] も参照してください。 149 150 === ダイジェスト認証 === #UsingDigestAuthentication 151 152 セキュリティ強化のために、SSL を有効にするか、少なくとも "基本認証" の代わりに "ダイジェスト認証" を使用することを推奨します。 153 154 以下のように、`htpasswd` の代わりに `htdigest` コマンドを使用して `.htpasswd` ファイルを作成してください: 155 {{{ 156 # htdigest -c /somewhere/trac.htpasswd trac admin 157 }}} 158 159 上記の "trac" パラメータは "realm" です。Apache の設定ファイルの !AuthName ディレクティブで再度指定してください: 160 161 {{{ 162 <Location "/trac/login"> 163 164 AuthType Digest 165 AuthName "trac" 166 AuthDigestDomain /trac 167 AuthUserFile /somewhere/trac.htpasswd 168 Require valid-user 169 </Location> 170 }}} 171 172 複数の environment を持っている場合、上記に記述した方法で、同じ `LocationMatch` を使用することができます。 173 174 必ず mod_auth_digest をアクティブにしてください。 Debian 4.0r1 (etch) の例: 175 {{{ 176 LoadModule auth_digest_module /usr/lib/apache2/modules/mod_auth_digest.so 177 }}} 178 179 180 [http://httpd.apache.org/docs/2.2/mod/mod_auth_digest.html mod_auth_digest] も参照してください。 181 182 === LDAP 認証 === #UsingLDAPAuthentication 183 184 Apache の [http://httpd.apache.org/docs/2.2/mod/mod_ldap.html mod_ldap] 認証の設定ファイルは少し扱いにくいです。(httpd 2.2.x OpenLDAP: slapd 2.3.19) 185 186 1. Apache の httpd.conf に以下のモジュールをロードする必要があります 187 {{{ 188 LoadModule ldap_module modules/mod_ldap.so 189 LoadModule authnz_ldap_module modules/mod_authnz_ldap.so 190 }}} 191 192 2. httpd.conf は以下のようになります: 193 194 {{{ 195 <Location /trac/> 196 # (if you're using it, mod_python specific settings go here) 197 Order deny,allow 198 Deny from all 199 Allow from 192.168.11.0/24 200 AuthType Basic 201 AuthName "Trac" 202 AuthBasicProvider "ldap" 203 AuthLDAPURL "ldap://127.0.0.1/dc=example,dc=co,dc=ke?uid?sub?(objectClass=inetOrgPerson)" 204 authzldapauthoritative Off 205 Require valid-user 206 </Location> 207 }}} 208 209 210 3. Microsoft Active Directory の LDAP インターフェースを使用することもできます: 211 212 213 以下を LDAP URL に使用します: 214 {{{ 215 AuthLDAPURL "ldap://directory.example.com:3268/DC=example,DC=com?sAMAccountName?sub?(objectClass=user)" 216 }}} 217 218 認証情報をチェックするために Apache にアカウントを提供する必要があります。 219 このパスワードは設定ファイル内のプレーンテキストにリストアップされるので、 220 このタスク専用のアカウントを使用すべきです: 221 {{{ 222 AuthLDAPBindDN ldap-auth-user@example.com 223 AuthLDAPBindPassword "password" 224 }}} 225 226 セクション全体はこのようになります: 227 {{{ 228 <Location /trac/> 229 # (if you're using it, mod_python specific settings go here) 230 Order deny,allow 231 Deny from all 232 Allow from 192.168.11.0/24 233 AuthType Basic 234 AuthName "Trac" 235 AuthBasicProvider "ldap" 236 AuthLDAPURL "ldap://adserver.company.com:3268/DC=company,DC=com?sAMAccountName?sub?(objectClass=user)" 237 AuthLDAPBindDN ldap-auth-user@company.com 238 AuthLDAPBindPassword "the_password" 239 authzldapauthoritative Off 240 # require valid-user 241 require ldap-group CN=Trac Users,CN=Users,DC=company,DC=com 242 </Location> 243 }}} 244 245 Note 1: このケースでは LDAP 検索で複数の OU をまとめて取得するために、 AD のグローバルカタログサーバ (Global Catalog Server) に接続しています (ポート番号が通常 LDAP で使用される 389 ではなく 3268 であることに注意してください) 。 GCS は基本的に "平らな" ツリーであり、ユーザが、どの OU に属するか不明な場合でも検索することができます。 246 247 Note 2: 有効なログインを持っているかの代わりに、 248 LDAP グループに所属しているかを要求することができます: 249 {{{ 250 Require ldap-group CN=Trac Users,CN=Users,DC=example,DC=com 251 }}} 252 253 関連ページ: 254 - [http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html mod_authnz_ldap], mod_authnz_ldap に関するドキュメンテーション 255 256 - [http://httpd.apache.org/docs/2.2/mod/mod_ldap.html mod_ldap], mod_ldap に関するドキュメンテーション。コネクションプールや共有のキャッシュを提供します 257 - [http://trac-hacks.org/wiki/LdapPlugin TracHacks:LdapPlugin], LDAP の TracPermissions を格納するプラグイン 258 259 === SSPI 認証 === #UsingSSPIAuthentication 260 261 Windows 上で Apache を使用しているのであれば、シングルサインオン機能を提供する mod_auth_sspi を使用することができます。 262 !SourceForge の [http://sourceforge.net/projects/mod-auth-sspi/ mod-auth-sspi プロジェクト] からモジュールをダウンロードし、 263 バーチャルホストに以下を追記してください。 264 {{{ 265 <Location /trac/login> 266 AuthType SSPI 267 AuthName "Trac Login" 268 SSPIAuth On 269 SSPIAuthoritative On 270 SSPIDomain MyLocalDomain 271 SSPIOfferBasic On 272 SSPIOmitDomain Off 273 SSPIBasicPreferred On 274 Require valid-user 275 </Location> 276 }}} 277 278 SSPI 認証を使用すると、Trac のユーザ名が `DOMAIN\username` という形式になるので、 279 パーミッションなどを追加しなおす必要があります。ユーザ名にドメインを入れたくない場合は、 280 `SSPIOmitDomain On` と代わりに設定してください。 281 282 SSPI 認証に関する共通の問題: [trac:#1055 本家チケット 1055], [trac:#1168 本家チケット 1168], [trac:#3338 本家チケット 3338] 。 283 284 [trac:TracOnWindows/Advanced] も参照してください。 285 286 === !AccountManagerPlugin のログインフォームを使用した Apache 認証 === #UsingApacheauthenticationwiththeAccountManagerplugin'sLoginform 287 288 まず、!AccountManagerPlugin の [http://trac-hacks.org/wiki/AccountManagerPlugin/Modules#LoginModule Login モジュール] と [http://trac-hacks.org/wiki/AccountManagerPlugin/AuthStores#HttpAuthStore HttpAuthStore authentication モジュール] の基本的な仕様を参照してください。 289 290 '''Note:''' acct_mgr-0.4 より前のバージョンの !AccountManager を使用していると、WSGI で !HttpAuthStore を動かすことは難しいです。アップグレードを推奨します。 291 292 単一のプロジェクトに acct_mgr-0.4 を使用した例: 293 {{{ 294 [components] 295 ; be sure to enable the component 296 acct_mgr.http.HttpAuthStore = enabled 297 298 [account-manager] 299 ; configure the plugin to use a page that is secured with http authentication 300 authentication_url = /authFile 301 password_store = HttpAuthStore 302 }}} 303 Apache の設定ファイルはこのようになります: 304 {{{ 305 <Location /authFile> 306 …HTTP authentication configuration… 307 Require valid-user 308 </Location> 309 }}} 310 '''authFile''' が存在する必要はありません。前述の !HttpAuthStore へのリンク先から、複数の Trac プロジェクトをサーバー上でホスティングした場合を説明する箇所などを参照してください。 311 312 === 例: バーチャルホストのルートが Trac である Apache/mod_wsgi 基本認証 === #Example:Apache/mod_wsgiwithBasicAuthentication,Trac beingattherootofavirtual host 313 314 上記の mod_wsgi のドキュメントには、 Apache の設定例 a) Trac のインスタンスをバーチャルホストでサブドメインを作成して動かす例と b) Trac の認証として、 Apache の基本認証を設定する例が記載されています。 315 316 317 例えば、 trac を !http://trac.my-proj.my-site.org としてホストし、`/home/trac-for-my-proj` フォルダから起動する場合で、 `the-env` を作成するために、 `trac-admin the-env initenv` コマンドを使用し、 `the-deploy` フォルダを作成するために、 `trac-admin the-env deploy the-deploy` コマンドを使用した場合です: 82 318 83 319 htpasswd ファイルを作成します: … … 88 324 htpasswd htpasswd seconduser 89 325 }}} 90 ( セキュリティ面より、このファイルはドキュメントルートにおきます)91 92 以下の設定を含んだファイルを作成します。例 {{{/etc/apache2/sites-enabled/trac.my-proj.my-site.org.conf}}}(ubuntu):326 (セキュリティのため、このファイルはドキュメントルートにおきます) 327 328 以下の設定を含んだファイルを作成します。例 `/etc/apache2/sites-enabled/trac.my-proj.my-site.org.conf` (ubuntu): 93 329 94 330 {{{ … … 113 349 }}} 114 350 115 116 (サブドメインが適切に動くにようにするには、 /etc/hosts ファイルの変更や、ホストサーバの DNS の A レコードにサブドメインを追加する必要があります) 117 118 == Trac と PostgreSQL == #TracwithPostgreSQL 119 120 mod_wsgi アダプタを使用し、 Trac のインスタンスを複数ホストしている場合に、 PostgreSQL (もしかすると MySQL も?) をデータベースバックエンドとして使用していると、大量のデータベース接続が生成され (PostgreSQL のプロセスも大量に発生し) てしまいます。 121 122 さしあたり動く解決方法として、 Trac が持つコネクションプールを無効化する方法があります。これは trac.db.postgres_backend の PostgreSQLConnection クラスで定義されている poolable を False に設定することで適用できます。 123 124 この方法を適用するために、 Trac のソースを変更する必要はありません。以下に示す行を trac.wsgi に追加してください: 125 126 {{{ 127 import trac.db.postgres_backend 128 trac.db.postgres_backend.PostgreSQLConnection.poolable = False 129 }}} 130 131 この設定で Trac ページを生成した後にコネクションを捨てるようになり、データベースへの接続数は最小に保たれます。 132 133 == SSPI および 'Require Group' 使用時に Trac を動かす方法 == #GettingTractoworknicelywithSSPIandRequireGroup 351 Note: サブドメインが適切に動くにようにするには、 /etc/hosts ファイルの変更や、ホストサーバの DNS の A レコードにサブドメインを追加する必要があります。 352 353 354 == トラブルシューティング == #Troubleshooting 355 356 === 最新バージョンを使う === #Usearecentversion 357 358 `mod_wsgi` のバージョンは 1.6 か 2.4 かそれより新しいものを使用してください。2.4 以前のバージョン 2.X のブランチは WSGI ファイルラッパー拡張機能を使用する Apache の設定にいくつか問題があります。この拡張機能は Trac 内でスタイルシートのような添付ファイルや静的メディアファイルを提供するのに使用します。この問題の影響を受けると、添付ファイルは何もないように見えてしまったり、スタイルシートがうまくロードできなくなることで HTML ページのフォーマットが機能していないように見えてしまったりします。他に 2 進数の添付ファイルが省略されてしまうといった問題も頻繁に起こります。mod_wsgi に関するチケット [http://code.google.com/p/modwsgi/issues/detail?id=100 #100] と [http://code.google.com/p/modwsgi/issues/detail?id=132 #132] を参照してください。 359 360 ''Note: mod_wsgi 2.5 と Python 2.6.1 を使用していると、システム上 (Apache 2.2.11 と Trac 0.11.2.1) で Internal Server Error が発生しました。Python 2.6.2 にアップグレードすることで([http://www.mail-archive.com/modwsgi@googlegroups.com/msg01917.html こちら] で勧められています) 私の場合は解決しました。[[BR]]-- Graham Shanks'' 361 362 もし 'mod_wsgi' を Windows の組み込みモードでの使用や Linux 上で MPM worker と併用することを予定している場合, バージョン 0.3.4 以上が必要です。 (詳細については、 [trac:#10675] を参照してください) 363 364 === SSPI および 'Require Group' 使用時に Trac を動かす方法 === #GettingTractoworknicelywithSSPIandRequireGroup 134 365 Trac を Win32 上の Apache で起動し、 SSPI 設定して 'Require group' オプションを構成している場合、 'SSPIOmitDomain' オプションはおそらく動作しません。 Trac にユーザ名が認識されない場合は、 'user' が 'DOMAIN\user' のように見えている可能性があります。 135 366 136 367 このような場合、以下のように WSGI スクリプトを修正すると解決すると思います: 137 {{{ 368 {{{#!python 138 369 import os 139 370 import trac.web.main … … 147 378 return trac.web.main.dispatch_request(environ, start_response) 148 379 }}} 380 381 382 === Trac と PostgreSQL === #TracwithPostgreSQL 383 384 mod_wsgi アダプタを使用し、 Trac のインスタンスを複数ホストしている場合に、 PostgreSQL (もしかすると MySQL も?)をデータベースバックエンドとして使用していると、大量のデータベース接続が生成され、PostgreSQL のプロセスも大量に発生してしまう''かも''しれません。 385 386 荒々しい方法ですが解決策として、Trac が持つコネクションプールを無効化する方法があります。これは `trac.db.postgres_backend` の `PostgreSQLConnection` クラスに `poolable = False` と設定することで適用できます。 387 388 この方法を適用するために、 Trac のソースを変更する必要はありません。以下に示す行を `trac.wsgi` に追加してください: 389 390 {{{ 391 import trac.db.postgres_backend 392 trac.db.postgres_backend.PostgreSQLConnection.poolable = False 393 }}} 394 395 または 396 397 {{{ 398 import trac.db.mysql_backend 399 trac.db.mysql_backend.MySQLConnection.poolable = False 400 }}} 401 402 この設定で Trac ページを生成した後にコネクションを捨てるようになり、データベースへの接続数は最小に保たれます。 403 404 //この方法は推奨されたものではありません。[http://code.google.com/p/modwsgi/wiki/IntegrationWithTrac mod_wsgi の IntegrationWithTrac] ページの最後も参照してください。// 405 406 === その他の資料 === #Otherresources 407 408 [TracModPython#Troubleshooting mod_python のトラブルシューティング] セクションも参照してください。 Apache に関連する問題の多くは似通っていて、多くの場合 mod_wsgi を使用する [http://code.google.com/p/modwsgi/wiki/ApplicationIssues アプリケーション側の問題] です。 wsgi ページにも [http://code.google.com/p/modwsgi/wiki/IntegrationWithTrac Integration With Trac] ドキュメントがあります。 409 410 149 411 ---- 150 See also: TracGuide, TracInstall, [wiki:TracFastCgi FastCGI], [wiki:TracModPython ModPython], [ http://trac.edgewall.org/wiki/TracNginxRecipe TracNginxRecipe]412 See also: TracGuide, TracInstall, [wiki:TracFastCgi FastCGI], [wiki:TracModPython ModPython], [trac:TracNginxRecipe TracNginxRecipe]