Changes between Initial Version and Version 1 of TracFastCgi


Ignore:
Timestamp:
2010/10/12 00:14:07 (14 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracFastCgi

    v1 v1  
     1= Trac を FastCGI で使用する = #TracwithFastCGI 
     2 
     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 を使用できます。) 
     6 
     7== 単純な Apache の設定 == #SimpleApacheconfiguration 
     8 
     9Apache で利用可能な FastCGI モジュールは 2 種類あります: `mod_fastcgi` と 
     10`mod_fcgid` (推奨) です。後者の方がよりメンテナンスされています。 
     11 
     12==== `mod_fastcgi` でのセットアップ ==== #setupwithmod_fastcgi 
     13`mod_fastcgi` では `FastCgiIpcDir` と `FastCgiConfig` ディレクティブを使用して Apache の設定ファイルに設定を行います: 
     14{{{ 
     15# Enable fastcgi for .fcgi files 
     16# (If you're using a distro package for mod_fcgi, something like 
     17# this is probably already present) 
     18<IfModule mod_fastcgi.c> 
     19   AddHandler fastcgi-script .fcgi 
     20   FastCgiIpcDir /var/lib/apache2/fastcgi  
     21</IfModule> 
     22LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so 
     23}}} 
     24デフォルトの設定に問題がなければ、 `FastCgiIpcDir` の設定は必須ではありません。 `LoadModule` の行は `IfModule` グループの後になければいけないことに注意して下さい。 
     25 
     26`ScriptAlias` もしくは TracCgi で説明されている類似のオプションを設定しますが、 
     27`trac.cgi` の代わりに `trac.fcgi` を指定してください。 
     28 
     29`TRAC_ENV` を以下のように設定することができます: 
     30{{{ 
     31FastCgiConfig -initial-env TRAC_ENV=/path/to/env/trac 
     32}}} 
     33 
     34複数の Trac プロジェクトを扱っているときは、このように設定します: 
     35{{{ 
     36FastCgiConfig -initial-env TRAC_ENV_PARENT_DIR=/parent/dir/of/projects 
     37}}} 
     38 
     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 
     51{{{ 
     52DefaultInitEnv TRAC_ENV /path/to/env/trac/ 
     53}}} 
     54 
     55==== Environment を設定する別の方法 ==== #alternativeenvironmentsetup 
     56Trac environment へのパスを設定するための、より適した方法は、パスを 
     57`trac.fcgi` スクリプト自体に書き込むことです。これによってサーバの環境変数を 
     58設定する必要がなくなり、どちらの !FastCgi モジュール (および 
     59[http://www.lighttpd.net/ lighttpd] や CGI など) でも、動作するようになります: 
     60{{{ 
     61import os 
     62os.environ['TRAC_ENV'] = "/path/to/projectenv" 
     63}}} 
     64または 
     65{{{ 
     66import os 
     67os.environ['TRAC_ENV_PARENT_DIR'] = "/path/to/project/parent/dir" 
     68}}} 
     69 
     70プロジェクトごとの `ScriptAlias` と `.fcgi` スクリプトを設定すれば、 
     71起動スクリプトに `TRAC_ENV` 等を設定する方法を使用して複数のプロジェクトに対応することができます。 
     72 
     73この [https://coderanger.net/~coderanger/httpd/fcgi_example.conf fcgid 設定例] の通り、 !ScriptAlias ディレクティブでは末尾の / も含めて設定してください: 
     74{{{ 
     75ScriptAlias / /srv/tracsite/cgi-bin/trac.fcgi/ 
     76}}} 
     77 
     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 
     97== Lighttpd の簡単な設定 == #SimpleLighttpdConfiguration 
     98 
     99FastCGI フロントエンドは最初 [http://www.lighttpd.net/ lighttpd] のような、 Apache 以外の Web サーバのために開発されました。 
     100 
     101lighttpd はセキュアで高速で、規格に準拠したとても柔軟な Web サーバで、高いパフォーマンスの環境で最適化されます。 
     102他の Web サーバに比べて CPU や、メモリの占有率がとても少ないです。 
     103 
     104`trac.fcgi`(0.11 以前) / fcgi_frontend.py (0.11) を lighttpd で使用するためには、 lighttpd.conf に以下の行を追加します: 
     105{{{ 
     106#var.fcgi_binary="/usr/bin/python /path/to/fcgi_frontend.py" # 0.11 if installed with easy_setup, it is inside the egg directory 
     107var.fcgi_binary="/path/to/cgi-bin/trac.fcgi" # 0.10 name of prior fcgi executable 
     108fastcgi.server = ("/trac" => 
     109    
     110                   ("trac" => 
     111                     ("socket" => "/tmp/trac-fastcgi.sock", 
     112                      "bin-path" => fcgi_binary, 
     113                      "check-local" => "disable", 
     114                      "bin-environment" => 
     115                        ("TRAC_ENV" => "/path/to/projenv") 
     116                     ) 
     117                   ) 
     118                 ) 
     119}}} 
     120 
     121動かしたい Trac のインスタンス毎に `fastcgi.server` のエントリを追加する必要があります。別の方法として、上記の `TRAC_ENV` の代わりに `TRAC_ENV_PARENT_DIR` を使用でき、  
     122`lighttpd.conf` に設定する代わりに `trac.fcgi` ファイルに  
     123`bin-environment` (上記の Apache の設定 に書かれています) の2つのうちのどちらかを設定します。 
     124 
     125Note: 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"` を追加する必要があるでしょう。 
     126 
     127lighttpd で2つのプロジェクトを動かすには、 `lighttpd.conf` に以下の設定を追加します: 
     128{{{ 
     129fastcgi.server = ("/first" => 
     130                   ("first" => 
     131                    ("socket" => "/tmp/trac-fastcgi-first.sock", 
     132                     "bin-path" => fcgi_binary, 
     133                     "check-local" => "disable", 
     134                     "bin-environment" => 
     135                       ("TRAC_ENV" => "/path/to/projenv-first") 
     136                    ) 
     137                  ), 
     138                  "/second" => 
     139                    ("second" => 
     140                    ("socket" => "/tmp/trac-fastcgi-second.sock", 
     141                     "bin-path" => fcgi_binary, 
     142                     "check-local" => "disable", 
     143                     "bin-environment" => 
     144                       ("TRAC_ENV" => "/path/to/projenv-second") 
     145                    ) 
     146                  ) 
     147                ) 
     148}}} 
     149Note: 各フィールドの値が異なることに注意して下さい。もし、  
     150`.fcgi` スクリプト内の環境変数を設定する方が好ましいならば、 `trac.fcgi` スクリプトを 
     151例えば、 `first.fcgi` や `second.fcgi` というようにコピー / リネームして、上記設定の中でこれらのスクリプトを参照するようにしてください。 
     152両方のプロジェクトが同じ `trac.fcgi` スクリプトから起動しているとしても、 
     153異なるプロセスになることに注意して下さい。 
     154{{{ 
     155#!div class=important 
     156'''Note''': server.modules をロードする順番はとても重要です。もし、 mod_auth が mod_fastcgi より '''先に''' mod_auth がロードされない設定になっていない場合、サーバはユーザ認証に失敗します。 
     157}}} 
     158認証のために lighttpd.conf の 'server.modules' 中で mod_auth を有効にして、 auth.backend と認証方法を選択して下さい: 
     159{{{ 
     160server.modules              = ( 
     161... 
     162  "mod_auth", 
     163... 
     164) 
     165 
     166auth.backend               = "htpasswd" 
     167 
     168# Separated password files for each project 
     169# See "Conditional Configuration" in 
     170# http://trac.lighttpd.net/trac/file/branches/lighttpd-merge-1.4.x/doc/configuration.txt 
     171 
     172$HTTP["url"] =~ "^/first/" { 
     173  auth.backend.htpasswd.userfile = "/path/to/projenv-first/htpasswd.htaccess" 
     174} 
     175$HTTP["url"] =~ "^/second/" { 
     176  auth.backend.htpasswd.userfile = "/path/to/projenv-second/htpasswd.htaccess" 
     177} 
     178 
     179# Enable auth on trac URLs, see 
     180# http://trac.lighttpd.net/trac/file/branches/lighttpd-merge-1.4.x/doc/authentication.txt 
     181 
     182auth.require = ("/first/login" => 
     183                ("method"  => "basic", 
     184                 "realm"   => "First project", 
     185                 "require" => "valid-user" 
     186                ), 
     187                "/second/login" => 
     188                ("method"  => "basic", 
     189                 "realm"   => "Second project", 
     190                 "require" => "valid-user" 
     191                ) 
     192               ) 
     193 
     194 
     195}}} 
     196Note: パスワードファイルがない場合、 lighttpd (確認したバージョンは 1.4.3) が停止するので注意して下さい。 
     197 
     198Note: バージョン 1.3.16 以前では lighttpd は 'valid-user' をサポートしていないので注意してください。 
     199 
     200条件付の設定は静的リソースをマッピングするときに便利です。例として FastCGI を経由せずに直接イメージファイルや CSS を参照するときなどです。: 
     201{{{ 
     202# Aliasing functionality is needed 
     203server.modules += ("mod_alias") 
     204 
     205# Setup an alias for the static resources 
     206alias.url = ("/trac/chrome/common" => "/usr/share/trac/htdocs") 
     207 
     208# Use negative lookahead, matching all requests that ask for any resource under /trac, EXCEPT in 
     209# /trac/chrome/common, and use FastCGI for those 
     210$HTTP["url"] =~ "^/trac(?!/chrome/common)" { 
     211# Even if you have other fastcgi.server declarations for applications other than Trac, do NOT use += here 
     212fastcgi.server = ("/trac" => 
     213                   ("trac" => 
     214                     ("socket" => "/tmp/trac-fastcgi.sock", 
     215                      "bin-path" => fcgi_binary, 
     216                      "check-local" => "disable", 
     217                      "bin-environment" => 
     218                        ("TRAC_ENV" => "/path/to/projenv") 
     219                     ) 
     220                   ) 
     221                 ) 
     222} 
     223}}} 
     224複数のプロジェクトのそれぞれにエイリアスを作れば、複数のプロジェクトを動かすのは技術的には簡単です。 fastcgi.server を条件ブロックの中で宣言しラッピングします。 
     225複数のプロジェクトをハンドルするもう一つの方法があります。 TRAC_ENV_PARENT_DIR を TRAC_ENV の代わりに使用し、グローバルの認証機構を使用します。サンプルを見てみましょう: 
     226{{{ 
     227#  This is for handling multiple projects 
     228  alias.url       = ( "/trac/" => "/path/to/trac/htdocs/" ) 
     229 
     230  fastcgi.server += ("/projects"  => 
     231                      ("trac" => 
     232                        ( 
     233                          "socket" => "/tmp/trac.sock", 
     234                          "bin-path" => fcgi_binary, 
     235                          "check-local" => "disable", 
     236                          "bin-environment" => 
     237                            ("TRAC_ENV_PARENT_DIR" => "/path/to/parent/dir/of/projects/" ) 
     238                        ) 
     239                      ) 
     240                    ) 
     241#And here starts the global auth configuration 
     242  auth.backend = "htpasswd" 
     243  auth.backend.htpasswd.userfile = "/path/to/unique/htpassword/file/trac.htpasswd" 
     244  $HTTP["url"] =~ "^/projects/.*/login$" { 
     245    auth.require = ("/" => 
     246                     ( 
     247                       "method"  => "basic", 
     248                       "realm"   => "trac", 
     249                       "require" => "valid-user" 
     250                     ) 
     251                   ) 
     252  } 
     253}}} 
     254 
     255lighttpd では環境変数の LC_TIME を上書きして、日付/時間のフォーマットを変更することも出来ます。 
     256{{{ 
     257fastcgi.server = ("/trac" => 
     258                   ("trac" => 
     259                     ("socket" => "/tmp/trac-fastcgi.sock", 
     260                      "bin-path" => fcgi_binary, 
     261                      "check-local" => "disable", 
     262                      "bin-environment" => 
     263                        ("TRAC_ENV" => "/path/to/projenv", 
     264                        "LC_TIME" => "ru_RU") 
     265                     ) 
     266                   ) 
     267                 ) 
     268}}} 
     269使用言語指定の詳細については [http://trac.lighttpd.net/trac/wiki/TracFaq TracFaq] の 2.13 の質問を参照して下さい。 
     270 
     271その他重要な情報、例えば、 [http://trac.lighttpd.net/trac/wiki/TracInstall lighttpd の TracInstall] や、 [wiki:TracCgi#MappingStaticResources TracCgi] などは fast-cgi 固有ではありませんが、インストールの詳細をつかむのに有用でしょう。 
     272 
     273trac-0.9 を使用している場合、[http://lists.edgewall.com/archive/trac/2005-November/005311.html 些細なバグ] について読んでください。 
     274 
     275lighttpd を再起動し、ブラウザに `http://yourhost.example.org/trac` を入力して、 Trac にアクセスして下さい。 
     276 
     277制限された権限で lighttpd を起動するにあたって気をつけること: 
     278 
     279  もし、 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 を起動するユーザに適宜読み替えてください。) 
     280 
     281 
     282== !LiteSpeed の簡単な設定 == #SimpleLighttpdConfiguration 
     283 
     284FastCGI フロントエンドは最初 [http://www.litespeedtech.com/ LiteSpeed] のような、 Apache 以外の Web サーバのために開発されました。 
     285 
     286!LiteSpeed Web サーバはイベント駆動、非同期型であり、 Apache に代わるものとしてセキュアで拡張可能になるようにゼロからデザインされています。そして、最低限のリソースで操作できます。 !LiteSpeed は Apache の設定ファイルから直接操作でき、ビジネスに不可欠な環境をターゲットにしています。 
     287 
     288=== セットアップ === 
     289 
     290 1. 最初に Trac プロジェクトをインストールして動作することを確認して下さい。最初のインストールでは、 "tracd" を使用します。 
     291 
     292 2. このセットアップでは仮想ホストを作成します。以下、この仮想ホストのことを !TracVhost と呼びます。このチュートリアルで、先ほど作ったプロジェクトが以下の URL 経由でアクセスできると仮定します: 
     293 
     294{{{ 
     295http://yourdomain.com/trac/ 
     296}}} 
     297 
     298 3. "!TracVhost → External Apps" タブへ移動し、新しい "External Application" を作成します。 
     299 
     300{{{ 
     301Name: MyTracFCGI         
     302Address: uds://tmp/lshttpd/mytracfcgi.sock 
     303Max Connections: 10 
     304Environment: TRAC_ENV=/fullpathto/mytracproject/ <--- path to root folder of trac project 
     305Initial Request Timeout (secs): 30 
     306Retry Timeout (secs): 0 
     307Persistent Connection   Yes 
     308Connection Keepalive Timeout: 30 
     309Response Bufferring: No  
     310Auto Start: Yes 
     311Command: /usr/share/trac/cgi-bin/trac.fcgi  <--- path to trac.fcgi 
     312Back Log: 50 
     313Instances: 10 
     314}}} 
     315 
     316 4. (非必須) htpasswd ベースの認証を使用するならば、 "!TracVhost → Security" タブへ移動し、新しいセキュリティ "Realm" を作成することができます。 
     317 
     318{{{ 
     319DB Type: Password File 
     320Realm Name: MyTracUserDB               <--- any name you wish and referenced later 
     321User DB Location: /fullpathto/htpasswd <--- path to your htpasswd file 
     322}}} 
     323 
     324もし、 htpasswd ファイルを持っていない、もしくは作り方を知らない場合は、 http://sherylcanter.com/encrypt.php にアクセスし、ユーザ名:パスワード の一対を生成して下さい。 
     325 
     326 5. "!PythonVhost → Contexts" へ移動し、新しい "FCGI Context" を作成します。 
     327 
     328{{{ 
     329URI: /trac/                              <--- URI path to bind to python fcgi app we created     
     330Fast CGI App: [VHost Level] MyTractFCGI  <--- select the trac fcgi extapp we just created 
     331Realm: TracUserDB                        <--- only if (4) is set. select realm created in (4) 
     332}}} 
     333 
     334 6. /fullpathto/mytracproject/conf/trac.ini を修正します。 
     335 
     336{{{ 
     337#find/set base_rul, url, and link variables 
     338base_url = http://yourdomain.com/trac/ <--- base url to generate correct links to 
     339url = http://yourdomain.com/trac/      <--- link of project 
     340link = http://yourdomain.com/trac/     <--- link of graphic logo 
     341}}} 
     342 
     343 7. !LiteSpeed を "lswsctrl restart" で再起動し、新しい Trac プロジェクトに以下の URL でアクセスします:  
     344 
     345{{{ 
     346http://yourdomain.com/trac/ 
     347}}} 
     348 
     349== Nginx 簡単な設定 == 
     350 
     351 1. Nginx 設定のスニペット - 0.6.32 で動作することを確認しました。 
     352{{{ 
     353    server { 
     354        listen       10.9.8.7:443; 
     355        server_name  trac.example; 
     356 
     357        ssl                  on; 
     358        ssl_certificate      /etc/ssl/trac.example.crt; 
     359        ssl_certificate_key  /etc/ssl/trac.example.key; 
     360 
     361        ssl_session_timeout  5m; 
     362 
     363        ssl_protocols  SSLv2 SSLv3 TLSv1; 
     364        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; 
     365        ssl_prefer_server_ciphers   on; 
     366 
     367        # (Or ``^/some/prefix/(.*)``. 
     368        if ($uri ~ ^/(.*)) { 
     369             set $path_info /$1; 
     370        } 
     371 
     372        # You can copy this whole location to ``location [/some/prefix]/login`` 
     373        # and remove the auth entries below if you want Trac to enforce 
     374        # authorization where appropriate instead of needing to authenticate 
     375        # for accessing the whole site. 
     376        # (Or ``location /some/prefix``.) 
     377        location / { 
     378            auth_basic            "trac realm"; 
     379            auth_basic_user_file /home/trac/htpasswd; 
     380 
     381            # socket address 
     382            fastcgi_pass   unix:/home/trac/run/instance.sock; 
     383 
     384            # python - wsgi specific 
     385            fastcgi_param HTTPS on; 
     386 
     387            ## WSGI REQUIRED VARIABLES 
     388            # WSGI application name - trac instance prefix. 
     389            # (Or ``fastcgi_param  SCRIPT_NAME  /some/prefix``.) 
     390            fastcgi_param  SCRIPT_NAME        ""; 
     391            fastcgi_param  PATH_INFO          $path_info; 
     392 
     393            ## WSGI NEEDED VARIABLES - trac warns about them 
     394            fastcgi_param  REQUEST_METHOD     $request_method; 
     395            fastcgi_param  SERVER_NAME        $server_name; 
     396            fastcgi_param  SERVER_PORT        $server_port; 
     397            fastcgi_param  SERVER_PROTOCOL    $server_protocol; 
     398            fastcgi_param  QUERY_STRING     $query_string; 
     399 
     400            # for authentication to work 
     401            fastcgi_param  AUTH_USER          $remote_user; 
     402            fastcgi_param  REMOTE_USER        $remote_user; 
     403        } 
     404    } 
     405}}} 
     406 
     407 2. trac.fcgi の変更: 
     408 
     409{{{ 
     410#!/usr/bin/env python 
     411import os 
     412sockaddr = '/home/trac/run/instance.sock' 
     413os.environ['TRAC_ENV'] = '/home/trac/instance' 
     414 
     415try: 
     416     from trac.web.main import dispatch_request 
     417     import trac.web._fcgi 
     418 
     419     fcgiserv = trac.web._fcgi.WSGIServer(dispatch_request,  
     420          bindAddress = sockaddr, umask = 7) 
     421     fcgiserv.run() 
     422 
     423except SystemExit: 
     424    raise 
     425except Exception, e: 
     426    print 'Content-Type: text/plain\r\n\r\n', 
     427    print 'Oops...' 
     428    print 
     429    print 'Trac detected an internal error:' 
     430    print 
     431    print e 
     432    print 
     433    import traceback 
     434    import StringIO 
     435    tb = StringIO.StringIO() 
     436    traceback.print_exc(file=tb) 
     437    print tb.getvalue() 
     438 
     439}}} 
     440 
     441 3. nginx をリロードし、 trac.fcgi をこのように起動します: 
     442 
     443{{{ 
     444trac@trac.example ~ $ ./trac-standalone-fcgi.py  
     445}}} 
     446 
     447上記設定は以下の条件だと仮定します: 
     448 * trac のインスタンスを実行するためのユーザ名を 'trac' とします。ホームディレクトリに trac Environment をおきます。 
     449 * Trac environment は `/home/trac/instance` に配置します。 
     450 * `/home/trac/htpasswd` に認証情報が含まれています。 
     451 * `/home/trac/run` は nginx を起動しているグループが所有しています。 
     452  * Linux を使用しているならば、 `/home/trac/run` に (`chmod g+s run`) を設定します。 
     453  * [http://trac.edgewall.org/ticket/7239 本家チケット 7239] のパッチを適用し、ソケットファイルのパーミッションをそのつど修正しなければいけません。 
     454 
     455残念ですが、 nginx は fastcgi_pass ディレクティブ内の変数展開をサポートしていません。  
     456したがって、 1 つのサーバーブロックから複数の trac インスタンスを起動することができません。  
     457 
     458セキュリティ面で不安があるならば、 各 Trac インスタンスを別々のユーザで起動してください。 
     459 
     460Trac を FCGI の外部アプリケーションとして起動するもう一つの方法は、[http://trac.edgewall.org/ticket/6224 本家チケット 6224] を参照して下さい。 
     461 
     462---- 
     463See also:  TracGuide, TracInstall, [wiki:TracModWSGI ModWSGI], [wiki:TracCgi CGI], [wiki:TracModPython ModPython], [http://trac.edgewall.org/wiki/TracNginxRecipe TracNginxRecipe]