Changes between Version 1 and Version 2 of TracModWSGI


Ignore:
Timestamp:
2012/06/16 22:07:38 (9 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] 参照)。'' 
     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] を確認してください。 
    44 
    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 に比べて非常によいパフォーマンスを提供します。 
    66 
    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 という拡張子で保存します。 
     7Trac は mod_wsgi のトップレベルに application を定義するスクリプトだけで動作します。このスクリプトは単独の Python ファイルで、通常は .wsgi という拡張子で保存されます。このファイルを生成するためには '''trac-admin <env> deploy <dir>''' コマンドを使用します。コマンドを実行すると必要となるパスが自動的に設定されます。 
    108 
    119{{{ 
     10#!python 
    1211import os 
    1312 
     
    1918}}} 
    2019 
    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 
     26import os 
     27 
     28os.environ['PYTHON_EGG_CACHE'] = '/usr/local/trac/mysite/eggs' 
     29 
     30import trac.web.main 
     31def 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` を使用することで作成することができます。 
    2437 
    2538Trac と egg ファイルをインストールしたパスが通常と異なる場合、それらのパスを以下の要領で wsgi スクリプトの先頭に記述する必要があります: 
     39 
    2640{{{ 
     41#!python 
    2742import site 
    2843site.addsitedir('/usr/local/trac/lib/python2.4/site-packages') 
    2944}}} 
     45 
    3046パスはインストールした Trac のライブラリに位置に一致するように変更してください。 
    3147 
     
    5571 
    5672トラブルシューティングの 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}}} コマンドを使用した場合です: 
     82 
     83htpasswd ファイルを作成します: 
     84{{{ 
     85cd /home/trac-for-my-proj/the-env 
     86htpasswd -c htpasswd firstuser 
     87### and add more users to it as needed: 
     88htpasswd htpasswd seconduser 
     89}}} 
     90( セキュリティ面より、このファイルはドキュメントルートにおきます) 
     91 
     92以下の設定を含んだファイルを作成します。例 {{{/etc/apache2/sites-enabled/trac.my-proj.my-site.org.conf}}} (ubuntu): 
     93 
     94{{{ 
     95<Directory /home/trac-for-my-proj/the-deploy/cgi-bin/trac.wsgi> 
     96  WSGIApplicationGroup %{GLOBAL} 
     97  Order deny,allow 
     98  Allow from all 
     99</Directory> 
     100 
     101<VirtualHost *:80> 
     102  ServerName trac.my-proj.my-site.org 
     103  DocumentRoot /home/trac-for-my-proj/the-env/htdocs/ 
     104  WSGIScriptAlias / /home/trac-for-my-proj/the-deploy/cgi-bin/trac.wsgi 
     105  <Location '/'> 
     106    AuthType Basic 
     107    AuthName "Trac" 
     108    AuthUserFile /home/trac-for-my-proj/the-env/htpasswd 
     109    Require valid-user 
     110  </Location> 
     111</VirtualHost> 
     112 
     113}}} 
     114 
     115 
     116(サブドメインが適切に動くにようにするには、 /etc/hosts ファイルの変更や、ホストサーバの DNS の A レコードにサブドメインを追加する必要があります) 
    57117 
    58118== Trac と PostgreSQL == #TracwithPostgreSQL