Changes between Version 1 and Version 2 of TracModWSGI
- Timestamp:
- Oct 12, 2010, 8:57:27 PM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TracModWSGI
v1 v2 1 1 = Trac と mod_wsgi = #Tracandmod_wsgi 2 2 3 '''重要な Note:''' ''バージョン 1. 3 か 2.3 かそれ以降の `mod_wsgi` を使用してください。バージョン 2.0 には添付ファイルのダウンロードで問題を生じます ([http://trac.edgewall.org/ticket/7205 #7205] 参照)。''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 4 5 [http://code.google.com/p/modwsgi/ mod_wsgi] は WSGI 互換の Python アプリケーションを Apache 上で直接起動させることができる Apache のモジュールです。 5 [http://code.google.com/p/modwsgi/ mod_wsgi] は WSGI 互換の Python アプリケーションを Apache 上で直接起動させることができる Apache のモジュールです。 mod_wsgi アダプターは完全に C 言語で書かれており、 mod_python や CGI に比べて非常によいパフォーマンスを提供します。 6 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 という拡張子で保存します。 7 Trac は mod_wsgi のトップレベルに application を定義するスクリプトだけで動作します。このスクリプトは単独の Python ファイルで、通常は .wsgi という拡張子で保存されます。このファイルを生成するためには '''trac-admin <env> deploy <dir>''' コマンドを使用します。コマンドを実行すると必要となるパスが自動的に設定されます。 10 8 11 9 {{{ 10 #!python 12 11 import os 13 12 … … 19 18 }}} 20 19 21 環境変数 {{{TRAC_ENV}}} は通常通り Trac environment のディレクトリを指定します (複数の Trac environment を含むディレクトリであれば {{{TRAC_ENV_PARENT_DIR}}} を使うこともできます)。 {{{PYTHON_EGG_CACHE}}} は Python eggs を一時的に展開するのに使用するディレクトリを指定します。[[BR]] 22 明快さのために、このファイルの拡張子は {{{.wsgi}}} とすべきです。 Apache にアクセス権を開放できるのであれば、このファイルは自分が所有権を持つディレクトリに置くこともできます。 23 この .wsgi ファイルは TracAdmin のコマンド {{{deploy}}} を使用することで作成することができます。 20 環境変数 `TRAC_ENV` は通常通り Trac environment のディレクトリを指定します (複数の Trac environment を含むディレクトリであれば `TRAC_ENV_PARENT_DIR` を使うこともできます)。 `PYTHON_EGG_CACHE` は Python eggs を一時的に展開するのに使用するディレクトリを指定します。 21 22 '''重要な Note:''' 複数の `.wsgi` ファイルを使用する場合 (それぞれのファイルに別個の Trac environment を設定するケースなど) は、 `os.environ['TRAC_ENV']` には Trac environment のパスを ''設定しない'' でください。この方法を使うと、別の Trac environment の設定が Trac にロードされてしまうことがあります。 (以前にロードした Trac environment のパスが使われてしまいます。) この問題は `.wsgi` ファイルの内容を下記の通り変更することで回避できます: 23 24 {{{ 25 #!python 26 import os 27 28 os.environ['PYTHON_EGG_CACHE'] = '/usr/local/trac/mysite/eggs' 29 30 import trac.web.main 31 def application(environ, start_response): 32 environ['trac.env_path'] = '/usr/local/trac/mysite' 33 return trac.web.main.dispatch_request(environ, start_response) 34 }}} 35 36 分かりやすくするために、このファイルの拡張子は `.wsgi` とすべきです。 Apache にアクセス権を開放できるのであれば、このファイルは自分が所有権を持つディレクトリに置くこともできます。この .wsgi ファイルは TracAdmin のコマンド `deploy` を使用することで作成することができます。 24 37 25 38 Trac と egg ファイルをインストールしたパスが通常と異なる場合、それらのパスを以下の要領で wsgi スクリプトの先頭に記述する必要があります: 39 26 40 {{{ 41 #!python 27 42 import site 28 43 site.addsitedir('/usr/local/trac/lib/python2.4/site-packages') 29 44 }}} 45 30 46 パスはインストールした Trac のライブラリに位置に一致するように変更してください。 31 47 … … 56 72 トラブルシューティングの Tips は [TracModPython#Troubleshooting mod_python のトラブルシューティング] セクションも参考になります。 Apache に関連する問題の多くは似通っていて、多くの場合 mod_wsgi を使用する [http://code.google.com/p/modwsgi/wiki/ApplicationIssues アプリケーション側の問題] です。 57 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 58 76 == Trac と PostgreSQL == #TracwithPostgreSQL 59 77 … … 70 88 71 89 この設定で Trac ページを生成した後にコネクションを捨てるようになり、データベースへの接続数は最小に保たれます。 90 91 == SSPI および 'Require Group' 使用時に Trac を動かす方法 == #GettingTractoworknicelywithSSPIandRequireGroup 92 Trac を Win32 上の Apache で起動し、 SSPI 設定して 'Require group' オプションを構成している場合、 'SSPIOmitDomain' オプションはおそらく動作しません。 Trac にユーザ名が認識されない場合は、 'user' が 'DOMAIN\user' のように見えている可能性があります。 93 94 このような場合、以下のように WSGI スクリプトを修正すると解決すると思います: 95 {{{ 96 import os 97 import trac.web.main 98 99 os.environ['TRAC_ENV'] = '/usr/local/trac/mysite' 100 os.environ['PYTHON_EGG_CACHE'] = '/usr/local/trac/mysite/eggs' 101 102 def application(environ, start_response): 103 if "\\" in environ['REMOTE_USER']: 104 environ['REMOTE_USER'] = environ['REMOTE_USER'].split("\\", 1)[1] 105 return trac.web.main.dispatch_request(environ, start_response) 106 }}} 107 ---- 108 See also: TracGuide, TracInstall, [wiki:TracFastCgi FastCGI], [wiki:TracModPython ModPython], [http://trac.edgewall.org/wiki/TracNginxRecipe TracNginxRecipe]