Changes between Version 2 and Version 3 of TracFastCgi


Ignore:
Timestamp:
12/07/15 15:40:17 (8 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracFastCgi

    v2 v3  
    1212 
    1313 
    14 == 単純な Apache の設定 == #SimpleApacheconfiguration  
     14== 単純な Apache の設定 == #SimpleApacheconfiguration 
    1515 
    1616Apache で利用可能な FastCGI モジュールは 2 種類あります: `mod_fastcgi` と 
     
    2121CGI モジュールを使用する場合は注意してください。また、必ず Web サーバに cgi-bin フォルダの実行権限を持たせてください。 FastCGI では詳細な権限に関するエラーが出力されますが、mod_fcgid ではこの処理が行われていない場合には、不明瞭なエラーしか出力されません。(Connection reset by peer: mod_fcgid: error reading data from FastCGI server の様な) 
    2222 
    23 ==== `mod_fastcgi` でのセットアップ ==== #setupwithmod_fastcgi 
     23=== `mod_fastcgi` でのセットアップ === #setupwithmod_fastcgi 
    2424`mod_fastcgi` では `FastCgiIpcDir` と `FastCgiConfig` ディレクティブを使用して Apache の設定ファイルに設定を行います: 
    2525{{{ 
     
    2929<IfModule mod_fastcgi.c> 
    3030   AddHandler fastcgi-script .fcgi 
    31    FastCgiIpcDir /var/lib/apache2/fastcgi  
     31   FastCgiIpcDir /var/lib/apache2/fastcgi 
    3232</IfModule> 
    3333LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so 
     
    5050=== `mod_fcgid` でのセットアップ === #Setupwithmod_fcgid 
    5151`ScriptAlias` を設定します。 (詳細は TracCgi を参照してください)、 ただし 
    52 `trac.cgi` の代わりに `trac.fcgi` を呼び出します。 Note: 最後のスラッシュを忘れずに。とても重要です。 
     52trac.cgi` の代わりに `trac.fcgi` を呼び出します。 Note: 最後のスラッシュを忘れずに。とても重要です。 
    5353{{{ 
    5454ScriptAlias /trac /path/to/www/trac/cgi-bin/trac.fcgi/ 
     
    6868`trac.fcgi` スクリプト自体に書き込むことです。これによってサーバの環境変数を 
    6969設定する必要がなくなり、どちらの !FastCgi モジュール (および 
    70 [http://www.lighttpd.net/ lighttpd] や CGI など) でも、動作するようになります:  
     70[http://www.lighttpd.net/ lighttpd] や CGI など) でも、動作するようになります: 
    7171{{{ 
    7272import os 
     
    103103もしそのポート番号に到達できなければ、インタプリタコマンドは起動されたことになります。information source の定義において、 ''ローカルインタプリタ'' の代わりに、 ''リモートホスト'' を ''information source'' として使用するならば、 spawner を手動で起動する必要があることを覚えておいてください。 
    104104 
    105 そして、 Trac にアクセスするために SCGI ハンドラによって管理される新しいルールを作成しなければなりません。このルールは例えば、 trac.example.net という新しい仮想サーバ内で作成し、 2 つのルールのみを必要とします。 '''デフォルト''' ルールは以前に作成された information source に関する SCGI ハンドラで使用されます。  
     105そして、 Trac にアクセスするために SCGI ハンドラによって管理される新しいルールを作成しなければなりません。このルールは例えば、 trac.example.net という新しい仮想サーバ内で作成し、 2 つのルールのみを必要とします。 '''デフォルト''' ルールは以前に作成された information source に関する SCGI ハンドラで使用されます。 
    1061062 つ目のルールは Trac のインタフェースを正しく表示するために必要ないくつかの静的ファイルを扱うために設定します。ルールを ''/common'' の ''ディレクトリルール'' として作成し、 ''静的ファイル'' のハンドラを適切なファイルをポイントする ''ドキュメントルート'' と共に設定するだけです: ''$TRAC_LOCAL/htdocs/'' ($TRAC_LOCAL はユーザ又はローカル Trac リソース を置いたシステム管理者により定義されたディレクトリです) 
    107107 
     
    126126var.fcgi_binary="/path/to/cgi-bin/trac.fcgi" # 0.10 name of prior fcgi executable 
    127127fastcgi.server = ("/trac" => 
    128     
     128 
    129129                   ("trac" => 
    130130                     ("socket" => "/tmp/trac-fastcgi.sock", 
     
    138138}}} 
    139139 
    140 動かしたい Trac のインスタンス毎に `fastcgi.server` のエントリを追加する必要があります。別の方法として、上記の `TRAC_ENV` の代わりに `TRAC_ENV_PARENT_DIR` を使用でき、  
    141 `lighttpd.conf` に設定する代わりに `trac.fcgi` ファイルに  
     140動かしたい Trac のインスタンス毎に `fastcgi.server` のエントリを追加する必要があります。別の方法として、上記の `TRAC_ENV` の代わりに `TRAC_ENV_PARENT_DIR` を使用でき、 
     141`lighttpd.conf` に設定する代わりに `trac.fcgi` ファイルに 
    142142`bin-environment` (上記の Apache の設定 に書かれています) の2つのうちのどちらかを設定します。 
    143143 
    144 Note: lighttpd には 'SCRIPT_NAME' と 'PATH_INFO' に関するバグがあります。例として、 fastcgi.server の uri が '/trac' とするところを '/' としてしまいます。 ([http://trac.edgewall.org/ticket/2418 本家チケット 2418] 参照) このバグは lighttpd 1.4.23 以降で修正されています。 fastcgi.server のパラメータとして、 `"fix-root-scriptname" => "enable"` を追加する必要があるでしょう。 
     144Note: lighttpd には 'SCRIPT_NAME' と 'PATH_INFO' に関するバグがあります。例として、 fastcgi.server の uri が '/trac' とするところを '/' としてしまいます。 ([trac:#2418 本家チケット 2418] 参照) このバグは lighttpd 1.4.23 以降で修正されています。 fastcgi.server のパラメータとして、 `"fix-root-scriptname" => "enable"` を追加する必要があるでしょう。 
    145145 
    146146lighttpd で2つのプロジェクトを動かすには、 `lighttpd.conf` に以下の設定を追加します: 
     
    166166                ) 
    167167}}} 
    168 Note: 各フィールドの値が異なることに注意して下さい。もし、  
     168Note: 各フィールドの値が異なることに注意して下さい。もし、 
    169169`.fcgi` スクリプト内の環境変数を設定する方が好ましいならば、 `trac.fcgi` スクリプトを 
    170170例えば、 `first.fcgi` や `second.fcgi` というようにコピー / リネームして、上記設定の中でこれらのスクリプトを参照するようにしてください。 
     
    219219Note: バージョン 1.3.16 以前では lighttpd は 'valid-user' をサポートしていないので注意してください。 
    220220 
    221 条件付の設定は静的リソースをマッピングするときに便利です。例として FastCGI を経由せずに直接イメージファイルや CSS を参照するときなどです: 
     221条件付の設定は静的リソースをマッピングするときに便利です。例として FastCGI を経由せずに直接イメージファイルや CSS を参照するときなどです: 
    222222{{{ 
    223223# Aliasing functionality is needed 
     
    297297制限された権限で lighttpd を起動するにあたって気をつけること: 
    298298 
    299 もし、 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 を起動するユーザに適宜読み替えてください。)  
     299もし、 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 を起動するユーザに適宜読み替えてください。) 
    300300 
    301301 
     
    306306!LiteSpeed Web サーバはイベント駆動、非同期型であり、 Apache に代わるものとしてセキュアで拡張可能になるようにゼロからデザインされています。そして、最低限のリソースで操作できます。 !LiteSpeed は Apache の設定ファイルから直接操作でき、ビジネスに不可欠な環境をターゲットにしています。 
    307307 
    308  1. 最初に Trac プロジェクトをインストールして動作することを確認して下さい。最初のインストールでは、 "tracd" を使用します 
     308 1. 最初に Trac プロジェクトをインストールして動作することを確認して下さい。最初のインストールでは、 "tracd" を使用します 
    309309 
    310310 2. このセットアップでは仮想ホストを作成します。以下、この仮想ホストのことを !TracVhost と呼びます。このチュートリアルで、先ほど作ったプロジェクトが以下の URL 経由でアクセスできると仮定します: 
     
    314314}}} 
    315315 
    316  3. "!TracVhost → External Apps" タブへ移動し、新しい "External Application" を作成します 
    317  
    318 {{{ 
    319 Name: MyTracFCGI         
     316 3. "!TracVhost → External Apps" タブへ移動し、新しい "External Application" を作成します 
     317 
     318{{{ 
     319Name: MyTracFCGI 
    320320Address: uds://tmp/lshttpd/mytracfcgi.sock 
    321321Max Connections: 10 
     
    325325Persistent Connection   Yes 
    326326Connection Keepalive Timeout: 30 
    327 Response Bufferring: No  
     327Response Bufferring: No 
    328328Auto Start: Yes 
    329329Command: /usr/share/trac/cgi-bin/trac.fcgi  <--- path to trac.fcgi 
     
    332332}}} 
    333333 
    334  4. (非必須) htpasswd ベースの認証を使用するならば、 "!TracVhost → Security" タブへ移動し、新しいセキュリティ "Realm" を作成することができます 
     334 4. (非必須) htpasswd ベースの認証を使用するならば、 "!TracVhost → Security" タブへ移動し、新しいセキュリティ "Realm" を作成することができます 
    335335 
    336336{{{ 
     
    342342もし、 htpasswd ファイルを持っていない、もしくは作り方を知らない場合は、 http://sherylcanter.com/encrypt.php にアクセスし、ユーザ名:パスワード の一対を生成して下さい。 
    343343 
    344  5. "!PythonVhost → Contexts" へ移動し、新しい "FCGI Context" を作成します 
    345  
    346 {{{ 
    347 URI: /trac/                              <--- URI path to bind to python fcgi app we created     
     344 5. "!PythonVhost → Contexts" へ移動し、新しい "FCGI Context" を作成します 
     345 
     346{{{ 
     347URI: /trac/                              <--- URI path to bind to python fcgi app we created 
    348348Fast CGI App: [VHost Level] MyTractFCGI  <--- select the trac fcgi extapp we just created 
    349349Realm: TracUserDB                        <--- only if (4) is set. select realm created in (4) 
    350350}}} 
    351351 
    352  6. /fullpathto/mytracproject/conf/trac.ini を修正します 
     352 6. /fullpathto/mytracproject/conf/trac.ini を修正します 
    353353 
    354354{{{ 
     
    359359}}} 
    360360 
    361  7. !LiteSpeed を "lswsctrl restart" で再起動し、新しい Trac プロジェクトに以下の URL でアクセスします:  
     361 7. !LiteSpeed を "lswsctrl restart" で再起動し、新しい Trac プロジェクトに以下の URL でアクセスします: 
    362362 
    363363{{{ 
     
    451451     import trac.web._fcgi 
    452452 
    453      fcgiserv = trac.web._fcgi.WSGIServer(dispatch_request,  
     453     fcgiserv = trac.web._fcgi.WSGIServer(dispatch_request, 
    454454          bindAddress = sockaddr, umask = 7) 
    455455     fcgiserv.run() 
     
    476476 
    477477{{{ 
    478 trac@trac.example ~ $ ./trac-standalone-fcgi.py  
     478trac@trac.example ~ $ ./trac-standalone-fcgi.py 
    479479}}} 
    480480 
    481481上記設定は以下の条件だと仮定します: 
    482  * trac のインスタンスを実行するためのユーザ名を 'trac' とします。ホームディレクトリに trac Environment をおきます 
    483  * Trac environment は `/home/trac/instance` に配置します 
    484  * `/home/trac/htpasswd` に認証情報が含まれています 
    485  * `/home/trac/run` は nginx を起動しているグループが所有しています 
    486   * Linux を使用しているならば、 `/home/trac/run` に (`chmod g+s run`) を設定します 
    487   * [http://trac.edgewall.org/ticket/7239 本家チケット 7239] のパッチを適用し、ソケットファイルのパーミッションをそのつど修正しなければいけません。 
    488  
    489 残念ですが、 nginx は fastcgi_pass ディレクティブ内の変数展開をサポートしていません。  
    490 したがって、 1 つのサーバーブロックから複数の trac インスタンスを起動することができません。  
     482 * trac のインスタンスを実行するためのユーザ名を 'trac' とします。ホームディレクトリに trac Environment をおきます 
     483 * Trac environment は `/home/trac/instance` に配置します 
     484 * `/home/trac/htpasswd` に認証情報が含まれています 
     485 * `/home/trac/run` は nginx を起動しているグループが所有しています 
     486  * Linux を使用しているならば、 `/home/trac/run` に (`chmod g+s run`) を設定します 
     487  * [trac:#7239 本家チケット 7239] のパッチを適用し、ソケットファイルのパーミッションをそのつど修正しなければいけません 
     488 
     489残念ですが、 nginx は fastcgi_pass ディレクティブ内の変数展開をサポートしていません。 
     490したがって、 1 つのサーバーブロックから複数の trac インスタンスを起動することができません。 
    491491 
    492492セキュリティ面で不安があるならば、 各 Trac インスタンスを別々のユーザで起動してください。 
    493493 
    494 Trac を FCGI の外部アプリケーションとして起動するもう一つの方法は、[http://trac.edgewall.org/ticket/6224 本家チケット 6224] を参照して下さい。 
     494Trac を FCGI の外部アプリケーションとして起動するもう一つの方法は、[trac:#6224 本家チケット 6224] を参照して下さい。 
    495495 
    496496---- 
    497 See also:  TracGuide, TracInstall, [wiki:TracModWSGI ModWSGI], [wiki:TracCgi CGI], [wiki:TracModPython ModPython], [http://trac.edgewall.org/wiki/TracNginxRecipe TracNginxRecipe] 
     497See also:  TracGuide, TracInstall, [wiki:TracModWSGI ModWSGI], [wiki:TracCgi CGI], [wiki:TracModPython ModPython], [trac:TracNginxRecipe TracNginxRecipe]