Changes between Version 2 and Version 3 of TracFastCgi
- Timestamp:
- 12/07/15 15:40:17 (9 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TracFastCgi
v2 v3 12 12 13 13 14 == 単純な Apache の設定 == #SimpleApacheconfiguration 14 == 単純な Apache の設定 == #SimpleApacheconfiguration 15 15 16 16 Apache で利用可能な FastCGI モジュールは 2 種類あります: `mod_fastcgi` と … … 21 21 CGI モジュールを使用する場合は注意してください。また、必ず Web サーバに cgi-bin フォルダの実行権限を持たせてください。 FastCGI では詳細な権限に関するエラーが出力されますが、mod_fcgid ではこの処理が行われていない場合には、不明瞭なエラーしか出力されません。(Connection reset by peer: mod_fcgid: error reading data from FastCGI server の様な) 22 22 23 === = `mod_fastcgi` でのセットアップ ==== #setupwithmod_fastcgi23 === `mod_fastcgi` でのセットアップ === #setupwithmod_fastcgi 24 24 `mod_fastcgi` では `FastCgiIpcDir` と `FastCgiConfig` ディレクティブを使用して Apache の設定ファイルに設定を行います: 25 25 {{{ … … 29 29 <IfModule mod_fastcgi.c> 30 30 AddHandler fastcgi-script .fcgi 31 FastCgiIpcDir /var/lib/apache2/fastcgi 31 FastCgiIpcDir /var/lib/apache2/fastcgi 32 32 </IfModule> 33 33 LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so … … 50 50 === `mod_fcgid` でのセットアップ === #Setupwithmod_fcgid 51 51 `ScriptAlias` を設定します。 (詳細は TracCgi を参照してください)、 ただし 52 `trac.cgi` の代わりに `trac.fcgi` を呼び出します。 Note: 最後のスラッシュを忘れずに。とても重要です。52 trac.cgi` の代わりに `trac.fcgi` を呼び出します。 Note: 最後のスラッシュを忘れずに。とても重要です。 53 53 {{{ 54 54 ScriptAlias /trac /path/to/www/trac/cgi-bin/trac.fcgi/ … … 68 68 `trac.fcgi` スクリプト自体に書き込むことです。これによってサーバの環境変数を 69 69 設定する必要がなくなり、どちらの !FastCgi モジュール (および 70 [http://www.lighttpd.net/ lighttpd] や CGI など) でも、動作するようになります: 70 [http://www.lighttpd.net/ lighttpd] や CGI など) でも、動作するようになります: 71 71 {{{ 72 72 import os … … 103 103 もしそのポート番号に到達できなければ、インタプリタコマンドは起動されたことになります。information source の定義において、 ''ローカルインタプリタ'' の代わりに、 ''リモートホスト'' を ''information source'' として使用するならば、 spawner を手動で起動する必要があることを覚えておいてください。 104 104 105 そして、 Trac にアクセスするために SCGI ハンドラによって管理される新しいルールを作成しなければなりません。このルールは例えば、 trac.example.net という新しい仮想サーバ内で作成し、 2 つのルールのみを必要とします。 '''デフォルト''' ルールは以前に作成された information source に関する SCGI ハンドラで使用されます。 105 そして、 Trac にアクセスするために SCGI ハンドラによって管理される新しいルールを作成しなければなりません。このルールは例えば、 trac.example.net という新しい仮想サーバ内で作成し、 2 つのルールのみを必要とします。 '''デフォルト''' ルールは以前に作成された information source に関する SCGI ハンドラで使用されます。 106 106 2 つ目のルールは Trac のインタフェースを正しく表示するために必要ないくつかの静的ファイルを扱うために設定します。ルールを ''/common'' の ''ディレクトリルール'' として作成し、 ''静的ファイル'' のハンドラを適切なファイルをポイントする ''ドキュメントルート'' と共に設定するだけです: ''$TRAC_LOCAL/htdocs/'' ($TRAC_LOCAL はユーザ又はローカル Trac リソース を置いたシステム管理者により定義されたディレクトリです) 107 107 … … 126 126 var.fcgi_binary="/path/to/cgi-bin/trac.fcgi" # 0.10 name of prior fcgi executable 127 127 fastcgi.server = ("/trac" => 128 128 129 129 ("trac" => 130 130 ("socket" => "/tmp/trac-fastcgi.sock", … … 138 138 }}} 139 139 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` ファイルに 142 142 `bin-environment` (上記の Apache の設定 に書かれています) の2つのうちのどちらかを設定します。 143 143 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"` を追加する必要があるでしょう。144 Note: lighttpd には 'SCRIPT_NAME' と 'PATH_INFO' に関するバグがあります。例として、 fastcgi.server の uri が '/trac' とするところを '/' としてしまいます。 ([trac:#2418 本家チケット 2418] 参照) このバグは lighttpd 1.4.23 以降で修正されています。 fastcgi.server のパラメータとして、 `"fix-root-scriptname" => "enable"` を追加する必要があるでしょう。 145 145 146 146 lighttpd で2つのプロジェクトを動かすには、 `lighttpd.conf` に以下の設定を追加します: … … 166 166 ) 167 167 }}} 168 Note: 各フィールドの値が異なることに注意して下さい。もし、 168 Note: 各フィールドの値が異なることに注意して下さい。もし、 169 169 `.fcgi` スクリプト内の環境変数を設定する方が好ましいならば、 `trac.fcgi` スクリプトを 170 170 例えば、 `first.fcgi` や `second.fcgi` というようにコピー / リネームして、上記設定の中でこれらのスクリプトを参照するようにしてください。 … … 219 219 Note: バージョン 1.3.16 以前では lighttpd は 'valid-user' をサポートしていないので注意してください。 220 220 221 条件付の設定は静的リソースをマッピングするときに便利です。例として FastCGI を経由せずに直接イメージファイルや CSS を参照するときなどです 。:221 条件付の設定は静的リソースをマッピングするときに便利です。例として FastCGI を経由せずに直接イメージファイルや CSS を参照するときなどです: 222 222 {{{ 223 223 # Aliasing functionality is needed … … 297 297 制限された権限で lighttpd を起動するにあたって気をつけること: 298 298 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 を起動するユーザに適宜読み替えてください。) 300 300 301 301 … … 306 306 !LiteSpeed Web サーバはイベント駆動、非同期型であり、 Apache に代わるものとしてセキュアで拡張可能になるようにゼロからデザインされています。そして、最低限のリソースで操作できます。 !LiteSpeed は Apache の設定ファイルから直接操作でき、ビジネスに不可欠な環境をターゲットにしています。 307 307 308 1. 最初に Trac プロジェクトをインストールして動作することを確認して下さい。最初のインストールでは、 "tracd" を使用します 。308 1. 最初に Trac プロジェクトをインストールして動作することを確認して下さい。最初のインストールでは、 "tracd" を使用します 309 309 310 310 2. このセットアップでは仮想ホストを作成します。以下、この仮想ホストのことを !TracVhost と呼びます。このチュートリアルで、先ほど作ったプロジェクトが以下の URL 経由でアクセスできると仮定します: … … 314 314 }}} 315 315 316 3. "!TracVhost → External Apps" タブへ移動し、新しい "External Application" を作成します 。317 318 {{{ 319 Name: MyTracFCGI 316 3. "!TracVhost → External Apps" タブへ移動し、新しい "External Application" を作成します 317 318 {{{ 319 Name: MyTracFCGI 320 320 Address: uds://tmp/lshttpd/mytracfcgi.sock 321 321 Max Connections: 10 … … 325 325 Persistent Connection Yes 326 326 Connection Keepalive Timeout: 30 327 Response Bufferring: No 327 Response Bufferring: No 328 328 Auto Start: Yes 329 329 Command: /usr/share/trac/cgi-bin/trac.fcgi <--- path to trac.fcgi … … 332 332 }}} 333 333 334 4. (非必須) htpasswd ベースの認証を使用するならば、 "!TracVhost → Security" タブへ移動し、新しいセキュリティ "Realm" を作成することができます 。334 4. (非必須) htpasswd ベースの認証を使用するならば、 "!TracVhost → Security" タブへ移動し、新しいセキュリティ "Realm" を作成することができます 335 335 336 336 {{{ … … 342 342 もし、 htpasswd ファイルを持っていない、もしくは作り方を知らない場合は、 http://sherylcanter.com/encrypt.php にアクセスし、ユーザ名:パスワード の一対を生成して下さい。 343 343 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 {{{ 347 URI: /trac/ <--- URI path to bind to python fcgi app we created 348 348 Fast CGI App: [VHost Level] MyTractFCGI <--- select the trac fcgi extapp we just created 349 349 Realm: TracUserDB <--- only if (4) is set. select realm created in (4) 350 350 }}} 351 351 352 6. /fullpathto/mytracproject/conf/trac.ini を修正します 。352 6. /fullpathto/mytracproject/conf/trac.ini を修正します 353 353 354 354 {{{ … … 359 359 }}} 360 360 361 7. !LiteSpeed を "lswsctrl restart" で再起動し、新しい Trac プロジェクトに以下の URL でアクセスします: 361 7. !LiteSpeed を "lswsctrl restart" で再起動し、新しい Trac プロジェクトに以下の URL でアクセスします: 362 362 363 363 {{{ … … 451 451 import trac.web._fcgi 452 452 453 fcgiserv = trac.web._fcgi.WSGIServer(dispatch_request, 453 fcgiserv = trac.web._fcgi.WSGIServer(dispatch_request, 454 454 bindAddress = sockaddr, umask = 7) 455 455 fcgiserv.run() … … 476 476 477 477 {{{ 478 trac@trac.example ~ $ ./trac-standalone-fcgi.py 478 trac@trac.example ~ $ ./trac-standalone-fcgi.py 479 479 }}} 480 480 481 481 上記設定は以下の条件だと仮定します: 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 インスタンスを起動することができません。 491 491 492 492 セキュリティ面で不安があるならば、 各 Trac インスタンスを別々のユーザで起動してください。 493 493 494 Trac を FCGI の外部アプリケーションとして起動するもう一つの方法は、[ http://trac.edgewall.org/ticket/6224 本家チケット 6224] を参照して下さい。494 Trac を FCGI の外部アプリケーションとして起動するもう一つの方法は、[trac:#6224 本家チケット 6224] を参照して下さい。 495 495 496 496 ---- 497 See also: TracGuide, TracInstall, [wiki:TracModWSGI ModWSGI], [wiki:TracCgi CGI], [wiki:TracModPython ModPython], [ http://trac.edgewall.org/wiki/TracNginxRecipe TracNginxRecipe]497 See also: TracGuide, TracInstall, [wiki:TracModWSGI ModWSGI], [wiki:TracCgi CGI], [wiki:TracModPython ModPython], [trac:TracNginxRecipe TracNginxRecipe]