TracFastCgiバージョン 1バージョン 2 との変更


以下の違いを無視:
日時:
2012/01/16 5:19:14 (13年前)
更新者:
trac
コメント:

--

凡例:

未変更
追加
削除
更新
  • TracFastCgi

    v1 v2  
    11= Trac を FastCGI で使用する = #TracwithFastCGI 
    22 
    3 バージョン 0.9 以降、 Trac は [http://www.fastcgi.com/ FastCGI] インタフェースに対応するようになりました。 [wiki:TracModPython mod_python] 同様、 Trac を常駐させるため、外部の各リクエストに対して新しいプロセスを生成する CGI インタフェースよりも処理速度が速いです。その上 `mod_python` とは異なり [http://httpd.apache.org/docs/suexec.html SuEXEC] に対応することも可能です。また、より多くの種類の Web サーバにサポートされています。 
    4  
    5 {{{ 
    6 #!html 
    7 <p style="background: #fdc; border: 2px solid #d00; font-style: italic; padding: 0 .5em; margin: 1em 0;"> 
    8 <strong>Windows 向けの Note:</strong> Trac の FCGI は Windows では使用できません。 Windows では_fcgi.py で使用されている Socket.fromfd が実装されていないためです。 
    9 </p> 
    10 }}} 
     3[http://www.fastcgi.com/ FastCGI] インタフェースを使用すると [wiki:TracModPython mod_python] 同様に Trac を常駐させることができます。そのため、外部からのリクエストごとに新しいプロセスを生成する CGI インタフェースよりも処理速度は速くなるうえ、 mod_python では実現出来ない [http://httpd.apache.org/docs/suexec.html Apache の SuEXEC] に対応させることができます (例えば、 Web サーバとは異なる権限で起動させることができます)。また、 mod_python より多くの種類の Web サーバでサポートされています。 
     4 
     5'''Windows 向けの Note:''' Trac の FCGI は Windows では使用できません。 `_fcgi.py` が必要とする `Socket.fromfd` が Windows では実装されていないためです。 IIS を使用しているのであれば、 [http://trac.edgewall.org/wiki/TracOnWindowsIisAjp AJP] を使うこともできます。 (訳注: Apache でも mod_proxy_ajp 経由で ajp を使用できます。) 
    116 
    127== 単純な Apache の設定 == #SimpleApacheconfiguration 
    138 
    14 Apache で利用可能な FastCGI モジュールは 2 種類あります: `mod_fastcgi` と  
    15 `mod_fcgid` です。これ以降に書かれている `FastCgiIpcDir` と `FastCgiConfig` ディレクティブ 
    16 は `mod_fastcgi` のディレクティブです; `DefaultInitEnv` は `mod_fcgid`  
    17 のディレクティブです。 
    18  
    19 `mod_fastcgi` では、 Apache の設定ファイルに以下の設定を追記します。 
    20 ファイル: 
     9Apache で利用可能な FastCGI モジュールは 2 種類あります: `mod_fastcgi` と 
     10`mod_fcgid` (推奨) です。後者の方がよりメンテナンスされています。 
     11 
     12==== `mod_fastcgi` でのセットアップ ==== #setupwithmod_fastcgi 
     13`mod_fastcgi` では `FastCgiIpcDir` と `FastCgiConfig` ディレクティブを使用して Apache の設定ファイルに設定を行います: 
    2114{{{ 
    2215# Enable fastcgi for .fcgi files 
     
    3124デフォルトの設定に問題がなければ、 `FastCgiIpcDir` の設定は必須ではありません。 `LoadModule` の行は `IfModule` グループの後になければいけないことに注意して下さい。 
    3225 
    33 `ScriptAlias` を設定するもしくは似たオプションが TracCgi で説明されていますが、  
    34 `trac.cgi` の代わりに `trac.fcgi` を呼びます 
     26`ScriptAlias` もしくは TracCgi で説明されている類似のオプションを設定しますが、 
     27`trac.cgi` の代わりに `trac.fcgi` を指定してください 
    3528 
    3629`TRAC_ENV` を以下のように設定することができます: 
     
    3932}}} 
    4033 
    41 もしくは複数の Trac プロジェクトを扱っているときは、このように設定します: 
     34複数の Trac プロジェクトを扱っているときは、このように設定します: 
    4235{{{ 
    4336FastCgiConfig -initial-env TRAC_ENV_PARENT_DIR=/parent/dir/of/projects 
    4437}}} 
    4538 
    46 これらの設定は、 `mod_fcgid` では動きません。似ていますが  
    47 `mod_fcgid` での部分的な解決策は以下の通りになります: 
     39==== `mod_fcgid` でのセットアップ ==== #setupwithmod_fcgid 
     40`ScriptAlias` を設定します。 (詳細は TracCgi を参照してください)、 ただし 
     41`trac.cgi` の代わりに `trac.fcgi` を呼び出します。 Note: 最後のスラッシュを忘れずに。とても重要です。 
     42{{{ 
     43ScriptAlias /trac /path/to/www/trac/cgi-bin/trac.fcgi/ 
     44}}} 
     45 
     46`mod_fcgid` で Trac environment を設定するには `DefaultInitEnv` 
     47ディレクティブを使用します。このディレクティブは `Direcotry` や `Location` 
     48コンテキストで使用できないので、複数のプロジェクトを設定する場合、 
     49下に記述する Environment を設定する別の方法を試してください。 
     50 
    4851{{{ 
    4952DefaultInitEnv TRAC_ENV /path/to/env/trac/ 
    5053}}} 
    51 しかし、これは `Directory` や `Location` コンテキストで使用することができません。 
    52 よって、複数のプロジェクトに対応するのは難しくなります。 
    53  
    54 これらのモジュールの両方 (同様に [http://www.lighttpd.net/ lighttpd] と CGI も) で動かすよりよい方法は、  
    55 `trac.fcgi` に以下の値を設定することです。  
    56 Web サーバに環境変数を設定する必要がなくなります。例: 
     54 
     55==== Environment を設定する別の方法 ==== #alternativeenvironmentsetup 
     56Trac environment へのパスを設定するための、より適した方法は、パスを 
     57`trac.fcgi` スクリプト自体に書き込むことです。これによってサーバの環境変数を 
     58設定する必要がなくなり、どちらの !FastCgi モジュール (および 
     59[http://www.lighttpd.net/ lighttpd] や CGI など) でも、動作するようになります: 
    5760{{{ 
    5861import os 
    5962os.environ['TRAC_ENV'] = "/path/to/projectenv" 
    6063}}} 
    61 or 
     64または 
    6265{{{ 
    6366import os 
     
    6568}}} 
    6669 
    67 プロジェクトごとの `ScriptAliases` と `.fcgi` スクリプトを設定すれば、 
    68 この方法を使用して複数のプロジェクトに対応することができます。  
    69 `trac.fcgi` をコピーして、ファイル名を適切に変更し、上記のコードをそれぞれのスクリプトに追記します。 
    70  
    71 この [https://coderanger.net/~coderanger/httpd/fcgi_example.conf fcgid 設定例] を見たところ、 !ScriptAlias ディレクティブでは末尾の / も含めて、このように設定する: 
     70プロジェクトごとの `ScriptAlias` と `.fcgi` スクリプトを設定すれば、 
     71起動スクリプトに `TRAC_ENV` 等を設定する方法を使用して複数のプロジェクトに対応することができます。 
     72 
     73この [https://coderanger.net/~coderanger/httpd/fcgi_example.conf fcgid 設定例] の通り、 !ScriptAlias ディレクティブでは末尾の / も含めて設定してください: 
    7274{{{ 
    7375ScriptAlias / /srv/tracsite/cgi-bin/trac.fcgi/ 
    7476}}} 
    7577 
    76 == Simple Cherokee Configuration == 
    77  
    78 Configuration wanted. 
    79  
    80 == 単純な Lighttpd の設定 == #SimpleLighttpdConfiguration 
     78== Cherokee の簡単な設定 == #SimpleCherokeeConfiguration 
     79 
     80Cherokee 側の設定はとても簡単です。 Trac を SCGI プロセスとして起動できるかどうかのみ知っている必要があります。 
     81Cherokee が起動していないときにはいつでも、 Cherokee が Trac を切り離せるようにすることによって、 Trac を手動で起動することも、いっそのこと自動的に起動することもできます。 
     82最初に、ローカルのインタプリタである cherokee-admin で information source を設定します。 
     83 
     84{{{ 
     85Host: 
     86localhost:4433 
     87 
     88Interpreter: 
     89/usr/bin/tracd —single-env —daemonize —protocol=scgi —hostname=localhost —port=4433 /path/to/project/ 
     90}}} 
     91 
     92もしそのポート番号に到達できなければ、インタプリタコマンドは起動されたことになります。information source の定義において、 ''ローカルインタプリタ'' の代わりに、 ''リモートホスト'' を ''information source'' として使用するならば、 spawner を手動で起動する必要があることを覚えておいてください。 
     93 
     94そして、 Trac にアクセスするために SCGI ハンドラによって管理される新しいルールを作成しなければなりません。このルールは例えば、 trac.example.net という新しい仮想サーバ内で作成し、 2 つのルールのみを必要とします。 '''デフォルト''' ルールは以前に作成された information source に関する SCGI ハンドラで使用されます。 
     952 つ目のルールは Trac のインタフェースを正しく表示するために必要ないくつかの静的ファイルを扱うために設定します。ルールを ''/chrome/common'' の ''ディレクトリルール'' として作成し、 ''静的ファイル'' のハンドラを適切なファイルをポイントする ''ドキュメントルート'' と共に設定するだけです: ''/usr/share/trac/htdocs/'' 
     96 
     97Note:\\ 
     98tracd プロセスが起動しない場合や cherokee が 503 エラーページを表示する場合、 [http://trac.saddi.com/flup python-flup] がインストールされていない可能性があります。\\ 
     99Python-flup は SCGI の能力を trac に与える従属関係にあります。 debian 基本システムからインストールできます: 
     100{{{ 
     101sudo apt-get install python-flup 
     102}}} 
     103 
     104== Lighttpd の簡単な設定 == #SimpleLighttpdConfiguration 
    81105 
    82106FastCGI フロントエンドは最初 [http://www.lighttpd.net/ lighttpd] のような、 Apache 以外の Web サーバのために開発されました。 
     
    85109他の Web サーバに比べて CPU や、メモリの占有率がとても少ないです。 
    86110 
    87 `trac.fcgi` を lighttpd で使用するためには、 lighttpd.conf に以下の行を追加します: 
    88 {{{ 
     111`trac.fcgi`(0.11 以前) / fcgi_frontend.py (0.11) を lighttpd で使用するためには、 lighttpd.conf に以下の行を追加します: 
     112{{{ 
     113#var.fcgi_binary="/usr/bin/python /path/to/fcgi_frontend.py" # 0.11 if installed with easy_setup, it is inside the egg directory 
     114var.fcgi_binary="/path/to/cgi-bin/trac.fcgi" # 0.10 name of prior fcgi executable 
    89115fastcgi.server = ("/trac" => 
     116    
    90117                   ("trac" => 
    91118                     ("socket" => "/tmp/trac-fastcgi.sock", 
    92                       "bin-path" => "/path/to/cgi-bin/trac.fcgi", 
     119                      "bin-path" => fcgi_binary, 
    93120                      "check-local" => "disable", 
    94121                      "bin-environment" => 
     
    99126}}} 
    100127 
    101 動かしたい Trac のインスタンス毎に `fastcgi.server` のエントリを追加する必要があります。別の方法として、上記の `TRAC_ENV` の代わりに `TRAC_ENV_PARENT_DIR` を使用でき、  
     128動かしたい Trac のインスタンス毎に `fastcgi.server` のエントリを追加する必要があります。別の方法として、上記の `TRAC_ENV` の代わりに `TRAC_ENV_PARENT_DIR` を使用でき、  
    102129`lighttpd.conf` に設定する代わりに `trac.fcgi` ファイルに  
    103130`bin-environment` (上記の Apache の設定 に書かれています) の2つのうちのどちらかを設定します。 
     131 
     132Note: lighttpd には fastcgi.server の uri が例えばこの例では、 '/trac' とするところを '/' としてしまう 'SCRIPT_NAME' と 'PATH_INFO' に関するバグがあります。詳細については、 [http://trac.edgewall.org/ticket/2418 本家チケット 2418] を参照して下さい。 このバグは lighttpd 1.4.23 以降で修正されています。 fastcgi.server のパラメータとして、 `"fix-root-scriptname" => "enable"` を追加する必要があるでしょう。 
    104133 
    105134lighttpd で2つのプロジェクトを動かすには、 `lighttpd.conf` に以下の設定を追加します: 
     
    108137                   ("first" => 
    109138                    ("socket" => "/tmp/trac-fastcgi-first.sock", 
    110                      "bin-path" => "/path/to/cgi-bin/trac.fcgi", 
     139                     "bin-path" => fcgi_binary, 
    111140                     "check-local" => "disable", 
    112141                     "bin-environment" => 
     
    117146                    ("second" => 
    118147                    ("socket" => "/tmp/trac-fastcgi-second.sock", 
    119                      "bin-path" => "/path/to/cgi-bin/trac.fcgi", 
     148                     "bin-path" => fcgi_binary, 
    120149                     "check-local" => "disable", 
    121150                     "bin-environment" => 
     
    125154                ) 
    126155}}} 
    127 各フィールドの値が異なることに注意して下さい。もし `.fcgi` スクリプトに 
    128 環境変数を設定するほうが好ましい場合は、 `trac.fcgi` をコピー/名前変更をして下さい。例として、 
    129 `first.fcgi` と `second.fcgi` が上記の設定では参照されるようにします 
    130 上記の設定で、両方のプロジェクトが 同じ `trac.fcgi` スクリプトで起動していても、 
     156Note: 各フィールドの値が異なることに注意して下さい。もし、  
     157`.fcgi` スクリプト内の環境変数を設定する方が好ましいならば、 `trac.fcgi` スクリプトを 
     158例えば、 `first.fcgi` や `second.fcgi` というようにコピー / リネームして、上記設定の中でこれらのスクリプトを参照するようにしてください 
     159両方のプロジェクトが同じ `trac.fcgi` スクリプトから起動しているとしても、 
    131160異なるプロセスになることに注意して下さい。 
    132161{{{ 
    133 #!html 
    134 <p style="background: #fdc; border: 2px solid #d00; font-style: italic; padding: 0 .5em; margin: 1em 0;"> 
    135 <strong>Note from c00i90wn:</strong> server.modules をロードする順番はとても重要です。もし、 mod_auth が mod_fastcgi より <strong> 先に </strong> ロードされる設定になっていない場合、サーバはユーザの認証に失敗します。 
    136 </p> 
     162#!div class=important 
     163'''Note''': server.modules をロードする順番はとても重要です。もし、 mod_auth が mod_fastcgi より '''先に''' mod_auth がロードされない設定になっていない場合、サーバはユーザ認証に失敗します。 
    137164}}} 
    138165認証のために lighttpd.conf の 'server.modules' 中で mod_auth を有効にして、 auth.backend と認証方法を選択して下さい: 
     
    174201 
    175202}}} 
    176 パスワードファイルがない場合、 lighttpd (確認したバージョンは 1.4.3) が停止するので注意して下さい。 
    177  
    178 バージョン 1.3.16 以前では lighttpd は 'valid-user' をサポートしていないので注意してください。 
     203Note: パスワードファイルがない場合、 lighttpd (確認したバージョンは 1.4.3) が停止するので注意して下さい。 
     204 
     205Note: バージョン 1.3.16 以前では lighttpd は 'valid-user' をサポートしていないので注意してください。 
    179206 
    180207条件付の設定は静的リソースをマッピングするときに便利です。例として FastCGI を経由せずに直接イメージファイルや CSS を参照するときなどです。: 
     
    193220                   ("trac" => 
    194221                     ("socket" => "/tmp/trac-fastcgi.sock", 
    195                       "bin-path" => "/path/to/cgi-bin/trac.fcgi", 
     222                      "bin-path" => fcgi_binary, 
    196223                      "check-local" => "disable", 
    197224                      "bin-environment" => 
     
    212239                        ( 
    213240                          "socket" => "/tmp/trac.sock", 
    214                           "bin-path" => "/path/to/cgi-bin/trac.fcgi", 
     241                          "bin-path" => fcgi_binary, 
    215242                          "check-local" => "disable", 
    216243                          "bin-environment" => 
     
    238265                   ("trac" => 
    239266                     ("socket" => "/tmp/trac-fastcgi.sock", 
    240                       "bin-path" => "/path/to/cgi-bin/trac.fcgi", 
     267                      "bin-path" => fcgi_binary, 
    241268                      "check-local" => "disable", 
    242269                      "bin-environment" => 
     
    249276使用言語指定の詳細については [http://trac.lighttpd.net/trac/wiki/TracFaq TracFaq] の 2.13 の質問を参照して下さい。 
    250277 
    251 その他重要な情報、例えば、 [http://trac.lighttpd.net/trac/wiki/TracInstall lighttpd の TracInstall] や、 [wiki:TracCgi#静的なリソースをマッピングする TracCgi] などは fast-cgi 固有ではありませんが、インストールの詳細をつかむのに有用でしょう。 
     278その他重要な情報、例えば、 [http://trac.lighttpd.net/trac/wiki/TracInstall lighttpd の TracInstall] や、 [wiki:TracCgi#MappingStaticResources TracCgi] などは fast-cgi 固有ではありませんが、インストールの詳細をつかむのに有用でしょう。 
    252279 
    253280trac-0.9 を使用している場合、[http://lists.edgewall.com/archive/trac/2005-November/005311.html 些細なバグ] について読んでください。 
     
    257284制限された権限で lighttpd を起動するにあたって気をつけること: 
    258285 
    259   もし、 trac.fcgi が lighttpd の設定で __server.username = "www-data"__ や __server.groupname = "www-data"__ を設定しても起動せずどうしようもないときは、 `bin-environment` セクションの `PYTHON_EGG_CACHE` を `www-data` のホームディレクトリまたは `www-data` アカウントで書き込みが可能なディレクトリに設定して下さい。 (訳注: debian 系 Linux に限定した話だと思われます。 `www-data` は lighttpd を起動するユーザに適宜読み替えてください。) 
    260  
    261  
    262 == 簡単な [http://trac.edgewall.org/wiki/LiteSpeed LiteSpeeed] の設定 == #SimpleLighttpdConfiguration 
     286  もし、 trac.fcgi が lighttpd の設定で `server.username = "www-data"` や `server.groupname = "www-data"` を設定しても起動せずどうしようもないときは、 `bin-environment` セクションの `PYTHON_EGG_CACHE` を `www-data` のホームディレクトリまたは `www-data` アカウントで書き込みが可能なディレクトリに設定して下さい。 (訳注: debian 系 Linux に限定した話だと思われます。 `www-data` は lighttpd を起動するユーザに適宜読み替えてください。) 
     287 
     288 
     289== !LiteSpeed の簡単な設定 == #SimpleLighttpdConfiguration 
    263290 
    264291FastCGI フロントエンドは最初 [http://www.litespeedtech.com/ LiteSpeed] のような、 Apache 以外の Web サーバのために開発されました。 
    265292 
    266 [http://trac.edgewall.org/wiki/LiteSpeed LiteSpeed] Web サーバはイベント駆動、非同期型であり、Apache に代わるものとしてセキュアで拡張可能になるようにゼロからデザインされています。そして、最低限のリソースで操作できます。 [http://trac.edgewall.org/wiki/LiteSpeed LiteSpeed] は Apache の設定ファイルから直接操作でき、ビジネスに不可欠な環境をターゲットにしています。 
    267  
    268 セットアップ 
    269  
    270 1) 最初に Trac プロジェクトをインストールして動作することを確認して下さい。最初のインストールでは、 "tracd" を使用します。 
    271  
    272 2) このセットアップでは仮想ホストを作成します。以下、この仮想ホストのことを !TracVhost と呼びます。このチュートリアルで、先ほど作ったプロジェクトが以下の URL 経由でアクセスできると仮定します: 
     293!LiteSpeed Web サーバはイベント駆動、非同期型であり、 Apache に代わるものとしてセキュアで拡張可能になるようにゼロからデザインされています。そして、最低限のリソースで操作できます。 !LiteSpeed は Apache の設定ファイルから直接操作でき、ビジネスに不可欠な環境をターゲットにしています。 
     294 
     295=== セットアップ === 
     296 
     297 1. 最初に Trac プロジェクトをインストールして動作することを確認して下さい。最初のインストールでは、 "tracd" を使用します。 
     298 
     299 2. このセットアップでは仮想ホストを作成します。以下、この仮想ホストのことを !TracVhost と呼びます。このチュートリアルで、先ほど作ったプロジェクトが以下の URL 経由でアクセスできると仮定します: 
    273300 
    274301{{{ 
     
    276303}}} 
    277304 
    278 3) "!TracVhost → External AApps" タブへ移動し、新しい "External Application" を作成します。 
     305 3. "!TracVhost → External Apps" タブへ移動し、新しい "External Application" を作成します。 
    279306 
    280307{{{ 
     
    294321}}} 
    295322 
    296 4) (非必須) "!TracVhost → Security" タブへ移動し、新しいセキュリティ "Realm" を作成することができます。 
     323 4. (非必須) htpasswd ベースの認証を使用するならば、 "!TracVhost → Security" タブへ移動し、新しいセキュリティ "Realm" を作成することができます。 
    297324 
    298325{{{ 
     
    304331もし、 htpasswd ファイルを持っていない、もしくは作り方を知らない場合は、 http://sherylcanter.com/encrypt.php にアクセスし、ユーザ名:パスワード の一対を生成して下さい。 
    305332 
    306 5) "!PythonVhost → Contexts" へ移動し、新しい "FCGI Context" を作成します。 
     333 5. "!PythonVhost → Contexts" へ移動し、新しい "FCGI Context" を作成します。 
    307334 
    308335{{{ 
     
    312339}}} 
    313340 
    314 6) /fullpathto/mytracproject/conf/trac.ini を修正します。 
     341 6. /fullpathto/mytracproject/conf/trac.ini を修正します。 
    315342 
    316343{{{ 
     
    321348}}} 
    322349 
    323 7) [http://trac.edgewall.org/wiki/LiteSpeed LiteSpeed] を "lswsctrl restart" で再起動し、新しい Trac プロジェクトに以下の URL でアクセスします: 
     350 7. !LiteSpeed を "lswsctrl restart" で再起動し、新しい Trac プロジェクトに以下の URL でアクセスします:  
    324351 
    325352{{{ 
     
    327354}}} 
    328355 
     356== Nginx 簡単な設定 == 
     357 
     358 1. Nginx 設定のスニペット - 0.6.32 で動作することを確認しました。 
     359{{{ 
     360    server { 
     361        listen       10.9.8.7:443; 
     362        server_name  trac.example; 
     363 
     364        ssl                  on; 
     365        ssl_certificate      /etc/ssl/trac.example.crt; 
     366        ssl_certificate_key  /etc/ssl/trac.example.key; 
     367 
     368        ssl_session_timeout  5m; 
     369 
     370        ssl_protocols  SSLv2 SSLv3 TLSv1; 
     371        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; 
     372        ssl_prefer_server_ciphers   on; 
     373 
     374        # (Or ``^/some/prefix/(.*)``. 
     375        if ($uri ~ ^/(.*)) { 
     376             set $path_info /$1; 
     377        } 
     378 
     379        # You can copy this whole location to ``location [/some/prefix]/login`` 
     380        # and remove the auth entries below if you want Trac to enforce 
     381        # authorization where appropriate instead of needing to authenticate 
     382        # for accessing the whole site. 
     383        # (Or ``location /some/prefix``.) 
     384        location / { 
     385            auth_basic            "trac realm"; 
     386            auth_basic_user_file /home/trac/htpasswd; 
     387 
     388            # socket address 
     389            fastcgi_pass   unix:/home/trac/run/instance.sock; 
     390 
     391            # python - wsgi specific 
     392            fastcgi_param HTTPS on; 
     393 
     394            ## WSGI REQUIRED VARIABLES 
     395            # WSGI application name - trac instance prefix. 
     396            # (Or ``fastcgi_param  SCRIPT_NAME  /some/prefix``.) 
     397            fastcgi_param  SCRIPT_NAME        ""; 
     398            fastcgi_param  PATH_INFO          $path_info; 
     399 
     400            ## WSGI NEEDED VARIABLES - trac warns about them 
     401            fastcgi_param  REQUEST_METHOD     $request_method; 
     402            fastcgi_param  SERVER_NAME        $server_name; 
     403            fastcgi_param  SERVER_PORT        $server_port; 
     404            fastcgi_param  SERVER_PROTOCOL    $server_protocol; 
     405            fastcgi_param  QUERY_STRING     $query_string; 
     406 
     407            # for authentication to work 
     408            fastcgi_param  AUTH_USER          $remote_user; 
     409            fastcgi_param  REMOTE_USER        $remote_user; 
     410        } 
     411    } 
     412}}} 
     413 
     414 2. trac.fcgi の変更: 
     415 
     416{{{ 
     417#!/usr/bin/env python 
     418import os 
     419sockaddr = '/home/trac/run/instance.sock' 
     420os.environ['TRAC_ENV'] = '/home/trac/instance' 
     421 
     422try: 
     423     from trac.web.main import dispatch_request 
     424     import trac.web._fcgi 
     425 
     426     fcgiserv = trac.web._fcgi.WSGIServer(dispatch_request,  
     427          bindAddress = sockaddr, umask = 7) 
     428     fcgiserv.run() 
     429 
     430except SystemExit: 
     431    raise 
     432except Exception, e: 
     433    print 'Content-Type: text/plain\r\n\r\n', 
     434    print 'Oops...' 
     435    print 
     436    print 'Trac detected an internal error:' 
     437    print 
     438    print e 
     439    print 
     440    import traceback 
     441    import StringIO 
     442    tb = StringIO.StringIO() 
     443    traceback.print_exc(file=tb) 
     444    print tb.getvalue() 
     445 
     446}}} 
     447 
     448 3. nginx をリロードし、 trac.fcgi をこのように起動します: 
     449 
     450{{{ 
     451trac@trac.example ~ $ ./trac-standalone-fcgi.py  
     452}}} 
     453 
     454上記設定は以下の条件だと仮定します: 
     455 * trac のインスタンスを実行するためのユーザ名を 'trac' とします。ホームディレクトリに trac Environment をおきます。 
     456 * Trac environment は `/home/trac/instance` に配置します。 
     457 * `/home/trac/htpasswd` に認証情報が含まれています。 
     458 * `/home/trac/run` は nginx を起動しているグループが所有しています。 
     459  * Linux を使用しているならば、 `/home/trac/run` に (`chmod g+s run`) を設定します。 
     460  * [http://trac.edgewall.org/ticket/7239 本家チケット 7239] のパッチを適用し、ソケットファイルのパーミッションをそのつど修正しなければいけません。 
     461 
     462残念ですが、 nginx は fastcgi_pass ディレクティブ内の変数展開をサポートしていません。  
     463したがって、 1 つのサーバーブロックから複数の trac インスタンスを起動することができません。  
     464 
     465セキュリティ面で不安があるならば、 各 Trac インスタンスを別々のユーザで起動してください。 
     466 
     467Trac を FCGI の外部アプリケーションとして起動するもう一つの方法は、[http://trac.edgewall.org/ticket/6224 本家チケット 6224] を参照して下さい。 
     468 
    329469---- 
    330 See also TracCgi, TracModPython, TracInstall, TracGuide 
     470See also:  TracGuide, TracInstall, [wiki:TracModWSGI ModWSGI], [wiki:TracCgi CGI], [wiki:TracModPython ModPython], [http://trac.edgewall.org/wiki/TracNginxRecipe TracNginxRecipe]