Changes between Version 1 and Version 2 of TracModWSGI


Ignore:
Timestamp:
09/18/14 10:48:12 (5 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracModWSGI

    v1 v2  
    11= Trac と mod_wsgi = #Tracandmod_wsgi 
    22 
    3 '''重要な Note:''' ''バージョン 1.3 か 2.3 かそれ以降の `mod_wsgi` を使用してください。バージョン 2.0 には添付ファイルのダウンロードで問題を生じます ([http://trac.edgewall.org/ticket/7205 #7205] 参照)。'' 
    4  
    5 [http://code.google.com/p/modwsgi/ mod_wsgi] は WSGI 互換の Python アプリケーションを Apache 上で直接起動させることができる Apache のモジュールです。 
    6  
    7   mod_wsgi アダプタは、 Python ベースの Web アプリケーションを Apache にホスティングするための WSGI 互換のインタフェースを提供する Apacheのモジュールです。アダプタは Apache の C 言語ランタイム向けに完全に C 言語で書かれており、 Apache 内部にホストされる WSGI アプリケーションでは、従来からある mod_python や CGI 向けの WSGI アダプタ使用する場合に比べて相当よい性能を出すことができます。 
    8  
    9 すでに Trac は mod_wsgi の top で起動させることができるようになっています。下記に示すようにアプリケーションスクリプトを Python のファイルとして作成してください。一般的にこのスクリプトは、 .wsgi という拡張子で保存します。 
    10  
    11 {{{ 
     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` スクリプト == #Thetrac.wsgiscript 
     9 
     10Trac は以下に記すスクリプトによって mod_wsgi のトップで実行されます。これらスクリプトは単なる Python ファイルで、通常は `.wsgi` という拡張子で保存されます。 
     11 
     12=== 基本的なスクリプト === #Averybasicscript 
     13もっともシンプルな形式: 
     14 
     15{{{#!python 
    1216import os 
    1317 
     
    1923}}} 
    2024 
    21 環境変数 {{{TRAC_ENV}}} は通常通り Trac environment のディレクトリを指定します (複数の Trac environment を含むディレクトリであれば {{{TRAC_ENV_PARENT_DIR}}} を使うこともできます)。 {{{PYTHON_EGG_CACHE}}} は Python eggs を一時的に展開するのに使用するディレクトリを指定します。[[BR]] 
    22 明快さのために、このファイルの拡張子は {{{.wsgi}}} とすべきです。 Apache にアクセス権を開放できるのであれば、このファイルは自分が所有権を持つディレクトリに置くこともできます。 
    23 この .wsgi ファイルは TracAdmin のコマンド {{{deploy}}} を使用することで作成することができます。 
     25環境変数 `TRAC_ENV` は通常通り Trac environment のディレクトリを指定します (複数の Trac environment を含むディレクトリであれば `TRAC_ENV_PARENT_DIR` を使うこともできます)。 `PYTHON_EGG_CACHE` は Python eggs を一時的に展開するのに使用するディレクトリを指定します。 
     26 
     27=== 複雑なスクリプト === #Amoreelaboratescript 
     28 
     29複数の `.wsgi` ファイルを使用する場合 (それぞれのファイルに別個の Trac environment を設定するケースなど) は、 `os.environ['TRAC_ENV']` に Trac environment のパスを ''設定しない'' でください。この方法を使うと、別の Trac environment のコンテンツが読み込まれたり、直前に表示した Trac environment のパスが使われてしまうことがあります。 
     30 
     31この問題は `.wsgi` ファイルの内容を下記の通り変更することで回避できます: 
     32{{{#!python 
     33import os 
     34 
     35os.environ['PYTHON_EGG_CACHE'] = '/usr/local/trac/mysite/eggs' 
     36 
     37import trac.web.main 
     38def application(environ, start_response): 
     39  environ['trac.env_path'] = '/usr/local/trac/mysite' 
     40  return trac.web.main.dispatch_request(environ, start_response) 
     41}}} 
     42 
     43分かりやすくするために、このファイルの拡張子は `.wsgi` とすべきです。 Apache にアクセス権を開放できるのであれば、このファイルは自分が所有権を持つディレクトリに置くこともできます。 
    2444 
    2545Trac と egg ファイルをインストールしたパスが通常と異なる場合、それらのパスを以下の要領で wsgi スクリプトの先頭に記述する必要があります: 
    26 {{{ 
     46 
     47{{{#!python 
    2748import site 
    2849site.addsitedir('/usr/local/trac/lib/python2.4/site-packages') 
    2950}}} 
    30 パスはインストールした Trac のライブラリに位置に一致するように変更してください。 
    31  
    32 wsgi-script の準備ができたら、以下のように httpd.conf に設定を追加してください。 
     51 
     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`) に以下を追記してください。 
    3362 
    3463{{{ 
     
    4271}}} 
    4372 
    44 Trac environment のサブディレクトリにスクリプトがある場合、 Apache がスクリプトを起動する為には、スクリプトが含まれるディレクトリまで完全に Apache がアクセスできなければなりません。 {{{WSGIApplicationGroup}}} ディレクティブを使用すると、常に mod_wsgi が作成した最初の Python インタプリタ内で Trac が起動することが保証されます; これは Trac で使用している Subversion の Python バインディングがサブインタプリタでは動作しないことがあるため必要になります。リクエストがハングし、 Apache がクラッシュしたような結果が返ります。この設定を行った後は Apache を再起動しないと反映されません。 
    45  
    46 Apache, mod_wsgi, Python 本体 (Trac とその依存ライブラリを除く) の設定をテストしたい場合、簡単な wsgi アプリケーションを使用するとリクエストが処理されているか確認することができます (以下に示す内容だけを持つ .wsgi スクリプトを使用してください): 
    47  
    48 {{{ 
     73スクリプトは Trac environment のサブディレクトリにあります。 
     74 
     75[http://trac.edgewall.org/wiki/TracInstall#cgi-bin Trac cgi-bin ディレクトリを生成する] のならば、Apache の設定ファイルには以下のように記述してください。 
     76 
     77{{{ 
     78WSGIScriptAlias /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 
     87Apache がスクリプトを起動する為には、スクリプトが含まれるディレクトリまで完全に Apache がアクセスできなければなりません。 `WSGIApplicationGroup` ディレクティブを使用すると、常に mod_wsgi が作成した最初の Python インタプリタ内で Trac が起動することが保証されます; これは Trac で使用している Subversion の Python バインディングがサブインタプリタでは動作しないことがあるため必要になります。リクエストがハングし、 Apache がクラッシュしたような結果が返ります。この設定を行った後は Apache を再起動しないと反映されません。 
     88 
     89Apache, mod_wsgi, Python 本体 (Trac とその依存ライブラリを除く) の設定をテストしたい場合、簡単な wsgi アプリケーションを使用するとリクエストが処理されているか確認することができます (以下に示す内容だけを持つ `.wsgi` スクリプトを使用してください): 
     90 
     91{{{#!python 
    4992def application(environ, start_response): 
    5093        start_response('200 OK',[('Content-type','text/html')]) 
     
    5295}}} 
    5396 
    54 mod_wsgi の [http://code.google.com/p/modwsgi/wiki/IntegrationWithTrac インストール例] に Trac の情報が掲載されています。 
    55  
    56 トラブルシューティングの Tips は [TracModPython#Troubleshooting mod_python のトラブルシューティング] セクションも参考になります。 Apache に関連する問題の多くは似通っていて、多くの場合 mod_wsgi を使用する [http://code.google.com/p/modwsgi/wiki/ApplicationIssues アプリケーション側の問題] です。 
    57  
    58 == Trac と PostgreSQL == #TracwithPostgreSQL 
    59  
    60 mod_wsgi アダプタを使用し、 Trac のインスタンスを複数ホストしている場合に、 PostgreSQL (もしかすると MySQL も?) をデータベースバックエンドとして使用していると、大量のデータベース接続が生成され (PostgreSQL のプロセスも大量に発生し) てしまいます。 
    61  
    62 さしあたり動く解決方法として、 Trac が持つコネクションプールを無効化する方法があります。これは trac.db.postgres_backend の PostgreSQLConnection クラスで定義されている poolable を False に設定することで適用できます。 
    63  
    64 この方法を適用するために、 Trac のソースを変更する必要はありません。以下に示す行を trac.wsgi に追加してください: 
    65  
    66 {{{ 
    67 import trac.db.postgres_backend 
    68 trac.db.postgres_backend.PostgreSQLConnection.poolable = False 
    69 }}} 
    70  
    71 この設定で Trac ページを生成した後にコネクションを捨てるようになり、データベースへの接続数は最小に保たれます。 
    72  
    73 == SSPI および 'Require Group' 使用時に Trac を動かす方法 == #GettingTractoworknicelywithSSPIandRequireGroup 
     97mod_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 
     104Apache ガイドの [http://httpd.apache.org/docs/2.2/howto/auth.html 認証、許可、アクセスコントロール] も参照してください。 
     105 
     106=== 基本認証 === #UsingBasicAuthentication 
     107 
     108Apache で認証を追加する最も簡単な方法は、パスワードファイルを作成することです。 `htpasswd` プログラムを使用してパスワードファイルを作成します: 
     109{{{ 
     110$ htpasswd -c /somewhere/trac.htpasswd admin 
     111New password: <type password> 
     112Re-type new password: <type password again> 
     113Adding password for user admin 
     114}}} 
     115 
     116一番最初のユーザ以外は "-c" オプションは必要ありません: 
     117{{{ 
     118$ htpasswd /somewhere/trac.htpasswd john 
     119New password: <type password> 
     120Re-type new password: <type password again> 
     121Adding password for user john 
     122}}} 
     123 
     124  '' `htpasswd` についての詳細は man を参照してください。'' 
     125 
     126ユーザを作成した後、TracPermissions の記述通りユーザに権限を設定することができます。 
     127 
     128Apache の設定ファイルの中にパスワードファイルを記述し、認証を有効にする必要があります: 
     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}}} 
     147Note: '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 
     184Apache の [http://httpd.apache.org/docs/2.2/mod/mod_ldap.html mod_ldap] 認証の設定ファイルは少し扱いにくいです。(httpd 2.2.x  OpenLDAP: slapd 2.3.19) 
     185 
     1861. Apache の httpd.conf に以下のモジュールをロードする必要があります 
     187{{{ 
     188LoadModule ldap_module modules/mod_ldap.so 
     189LoadModule authnz_ldap_module modules/mod_authnz_ldap.so 
     190}}} 
     191 
     1922. 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 
     2103. 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 
     245Note 1: このケースでは LDAP 検索で複数の OU をまとめて取得するために、 AD のグローバルカタログサーバ (Global Catalog Server) に接続しています (ポート番号が通常 LDAP で使用される 389 ではなく 3268 であることに注意してください) 。 GCS は基本的に "平らな" ツリーであり、ユーザが、どの OU に属するか不明な場合でも検索することができます。 
     246 
     247Note 2: 有効なログインを持っているかの代わりに、 
     248LDAP グループに所属しているかを要求することができます。 
     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 
     261Windows 上で 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 
     278SSPI 認証を使用すると、Trac のユーザ名が `DOMAIN\username` という形式になるので、 
     279パーミッションなどを追加しなおす必要があります。ユーザ名にドメインを入れたくない場合は、 
     280`SSPIOmitDomain On` と代わりに設定してください。 
     281 
     282SSPI 認証に関する共通の問題: [http://trac.edgewall.org/ticket/1055 本家チケット 1055], [http://trac.edgewall.org/ticket/1168 本家チケット 1168], [http://trac.edgewall.org/ticket/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 
     296acct_mgr.http.HttpAuthStore = enabled 
     297 
     298[account-manager] 
     299; configure the plugin to use a page that is secured with http authentication 
     300authentication_url = /authFile 
     301password_store = HttpAuthStore 
     302}}} 
     303Apache の設定ファイルはこのようになります: 
     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` コマンドを使用した場合です: 
     318 
     319htpasswd ファイルを作成します: 
     320{{{ 
     321cd /home/trac-for-my-proj/the-env 
     322htpasswd -c htpasswd firstuser 
     323### and add more users to it as needed: 
     324htpasswd htpasswd seconduser 
     325}}} 
     326(セキュリティのため、このファイルはドキュメントルートにおきます) 
     327 
     328以下の設定を含んだファイルを作成します。例 `/etc/apache2/sites-enabled/trac.my-proj.my-site.org.conf` (ubuntu): 
     329 
     330{{{ 
     331<Directory /home/trac-for-my-proj/the-deploy/cgi-bin/trac.wsgi> 
     332  WSGIApplicationGroup %{GLOBAL} 
     333  Order deny,allow 
     334  Allow from all 
     335</Directory> 
     336 
     337<VirtualHost *:80> 
     338  ServerName trac.my-proj.my-site.org 
     339  DocumentRoot /home/trac-for-my-proj/the-env/htdocs/ 
     340  WSGIScriptAlias / /home/trac-for-my-proj/the-deploy/cgi-bin/trac.wsgi 
     341  <Location '/'> 
     342    AuthType Basic 
     343    AuthName "Trac" 
     344    AuthUserFile /home/trac-for-my-proj/the-env/htpasswd 
     345    Require valid-user 
     346  </Location> 
     347</VirtualHost> 
     348 
     349}}} 
     350 
     351Note: サブドメインが適切に動くにようにするには、 /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 
    74365Trac を Win32 上の Apache で起動し、 SSPI 設定して 'Require group' オプションを構成している場合、 'SSPIOmitDomain' オプションはおそらく動作しません。 Trac にユーザ名が認識されない場合は、 'user' が 'DOMAIN\user' のように見えている可能性があります。 
    75366 
    76367このような場合、以下のように WSGI スクリプトを修正すると解決すると思います: 
    77 {{{ 
     368{{{#!python 
    78369import os 
    79370import trac.web.main 
     
    87378    return trac.web.main.dispatch_request(environ, start_response) 
    88379}}} 
     380 
     381 
     382== Trac と PostgreSQL == #TracwithPostgreSQL 
     383 
     384mod_wsgi アダプタを使用し、 Trac のインスタンスを複数ホストしている場合に、 PostgreSQL (もしかすると MySQL も?)をデータベースバックエンドとして使用していると、大量のデータベース接続が生成され、PostgreSQL のプロセスも大量に発生してしまう''かも''しれません。 
     385 
     386荒々しい方法ですが解決策として、Trac が持つコネクションプールを無効化する方法があります。これは `trac.db.postgres_backend` の `PostgreSQLConnection` クラスに `poolable = False` と設定することで適用できます。 
     387 
     388この方法を適用するために、 Trac のソースを変更する必要はありません。以下に示す行を trac.wsgi に追加してください: 
     389 
     390{{{ 
     391import trac.db.postgres_backend 
     392trac.db.postgres_backend.PostgreSQLConnection.poolable = False 
     393}}} 
     394 
     395または 
     396 
     397{{{ 
     398import trac.db.mysql_backend 
     399trac.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 
    89411---- 
    90412See also:  TracGuide, TracInstall, [wiki:TracFastCgi FastCGI], [wiki:TracModPython ModPython], [http://trac.edgewall.org/wiki/TracNginxRecipe TracNginxRecipe]