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 | | '''Note for Windows:''' Trac's FCGI does not run under Windows, as Windows does not implement `Socket.fromfd`, which is used by `_fcgi.py`. If you want to connect to IIS, your choice may be [trac:TracOnWindowsIisAjp AJP]. |
6 | | '''Windows 向けの Note:''' Trac の FCGI は Windows では使用できません。 `_fcgi.py` が必要とする `Socket.fromfd` が Windows では実装されていないためです。 IIS を使用しているのであれば、 [http://trac.edgewall.org/wiki/TracOnWindowsIisAjp AJP] を使うこともできます。 (訳注: Apache でも mod_proxy_ajp 経由で ajp を使用できます。) |
7 | | |
8 | | == 単純な Apache の設定 == #SimpleApacheconfiguration |
9 | | |
10 | | Apache で利用可能な FastCGI モジュールは 2 種類あります: `mod_fastcgi` と |
11 | | `mod_fcgid` です。これ以降に書かれている `FastCgiIpcDir` と `FastCgiConfig` ディレクティブ |
12 | | は `mod_fastcgi` のディレクティブです; `DefaultInitEnv` は `mod_fcgid` |
13 | | のディレクティブです。 |
14 | | |
15 | | `mod_fastcgi` では、 Apache の設定ファイルに以下の設定を追記します。 |
16 | | ファイル: |
| 5 | [http://www.fastcgi.com/ FastCGI] インターフェースを使用すると [wiki:TracModPython mod_python] や [wiki:TracModWSGI mod_wsgi] と同様に Trac を常駐させることができます。リクエスト毎に新しいプロセスを開始しなければならない CGI インターフェースよりも処理速度は速くなります。加えて、多種多様の Web サーバでサポートされています。 |
| 6 | |
| 7 | Note: mod_python とは異なり、FastCGI では [http://httpd.apache.org/docs/suexec.html Apache SuEXEC] をサポートしています。つまり、Web サーバを実行しているユーザとは、異なる権限でプログラムを実行することができます。(`mod_wsgi` でサポートしている `WSGIDaemonProcess` におけるユーザ / グループと同じ効果を得ることができます) |
| 8 | |
| 9 | '''Windows 向け:''' Trac の FastCGI は Windows 環境下で動作しません。これは、`_fcgi.py` で用いられる `Socket.fromfd` が Windows では実行されないからです。もし IIS へ接続したい場合は、[trac:TracOnWindowsIisAjp AJP]/[trac:TracOnWindowsIisAjp ISAPI] に挑戦してみて下さい。 |
| 10 | |
| 11 | [[PageOutline(2-3,Overview,inline)]] |
| 12 | |
| 13 | |
| 14 | == 単純な Apache の設定 == #SimpleApacheconfiguration |
| 15 | |
| 16 | Apache で利用可能な FastCGI モジュールは 2 種類あります: `mod_fastcgi` と |
| 17 | `mod_fcgid` (推奨) です。後者の方がよりメンテナンスされています。 |
| 18 | |
| 19 | 次の項目では、FCGI の特定のセットアップに焦点を合わせています。Apache の認証の設定方法については [wiki:TracModWSGI#ConfiguringAuthentication] を参照してください。 |
| 20 | |
| 21 | CGI モジュールを使用する場合は注意してください。また、必ず Web サーバに cgi-bin フォルダの実行権限を持たせてください。 FastCGI では詳細な権限に関するエラーが出力されますが、mod_fcgid ではこの処理が行われていない場合には、不明瞭なエラーしか出力されません。(Connection reset by peer: mod_fcgid: error reading data from FastCGI server の様な) |
| 22 | |
| 23 | ==== `mod_fastcgi` でのセットアップ ==== #setupwithmod_fastcgi |
| 24 | `mod_fastcgi` では `FastCgiIpcDir` と `FastCgiConfig` ディレクティブを使用して Apache の設定ファイルに設定を行います: |
42 | | これらの設定は、 `mod_fcgid` では動きません。似ていますが |
43 | | `mod_fcgid` での部分的な解決策は以下の通りになります: |
| 50 | === `mod_fcgid` でのセットアップ === #Setupwithmod_fcgid |
| 51 | `ScriptAlias` を設定します。 (詳細は TracCgi を参照してください)、 ただし |
| 52 | `trac.cgi` の代わりに `trac.fcgi` を呼び出します。 Note: 最後のスラッシュを忘れずに。とても重要です。 |
| 53 | {{{ |
| 54 | ScriptAlias /trac /path/to/www/trac/cgi-bin/trac.fcgi/ |
| 55 | }}} |
| 56 | |
| 57 | `mod_fcgid` で Trac environment を設定するには `DefaultInitEnv` |
| 58 | ディレクティブを使用します。このディレクティブは `Direcotry` や `Location` |
| 59 | コンテキストで使用できないので、複数のプロジェクトを設定する場合、 |
| 60 | 以下に記述する Environment を設定する別の方法を試してください。 |
| 61 | |
47 | | しかし、これは `Directory` や `Location` コンテキストで使用することができません。 |
48 | | よって、複数のプロジェクトに対応するのは難しくなります。 |
49 | | |
50 | | これらのモジュールの両方 (同様に [http://www.lighttpd.net/ lighttpd] と CGI も) で動かすよりよい方法は、 |
51 | | `trac.fcgi` に以下の値を設定することです。 |
52 | | Web サーバに環境変数を設定する必要がなくなります。例: |
| 65 | |
| 66 | === Environment を設定する別の方法 === #alternativeenvironmentsetup |
| 67 | Trac environment へのパスを設定するための、より適した方法は、パスを |
| 68 | `trac.fcgi` スクリプト自体に書き込むことです。これによってサーバの環境変数を |
| 69 | 設定する必要がなくなり、どちらの !FastCgi モジュール (および |
| 70 | [http://www.lighttpd.net/ lighttpd] や CGI など) でも、動作するようになります: |
72 | | == Simple Cherokee Configuration == |
73 | | |
74 | | The configuration on Cherokee's side is quite simple. You will only need to know that you can spawn Trac as an SCGI process. |
75 | | You can either start it manually, or better yet, automatically by letting Cherokee spawn the server whenever it is down. |
76 | | First set up an information source in cherokee-admin with a local interpreter. |
| 89 | == Cherokee の簡単な設定 == #SimpleCherokeeConfiguration |
| 90 | |
| 91 | Cherokee 側の設定はとても簡単です。 Trac を SCGI プロセスとして起動できるかどうかのみ知っている必要があります。 |
| 92 | Cherokee が起動していないときにはいつでも、 Cherokee が Trac を切り離せるようにすることによって、 Trac を手動で起動することも、いっそのこと自動的に起動することもできます。 |
| 93 | 最初に、ローカルのインタプリタである cherokee-admin で information source を設定します。 |
86 | | If the port was not reachable, the interpreter command would be launched. Note that, in the definition of the information source, you will have to manually launch the spawner if you use a ''Remote host'' as ''Information source'' instead of a ''Local interpreter''. |
87 | | |
88 | | After doing this, we will just have to create a new rule managed by the SCGI handler to access Trac. It can be created in a new virtual server, trac.example.net for instance, and will only need two rules. The '''default''' one will use the SCGI handler associated to the previously created information source. |
89 | | The second rule will be there to serve the few static files needed to correctly display the Trac interface. Create it as ''Directory rule'' for ''/chrome/common'' and just set it to the ''Static files'' handler and with a ''Document root'' that points to the appropriate files: ''/usr/share/trac/htdocs/'' |
90 | | |
91 | | == 単純な Lighttpd の設定 == #SimpleLighttpdConfiguration |
| 103 | もしそのポート番号に到達できなければ、インタプリタコマンドは起動されたことになります。information source の定義において、 ''ローカルインタプリタ'' の代わりに、 ''リモートホスト'' を ''information source'' として使用するならば、 spawner を手動で起動する必要があることを覚えておいてください。 |
| 104 | |
| 105 | そして、 Trac にアクセスするために SCGI ハンドラによって管理される新しいルールを作成しなければなりません。このルールは例えば、 trac.example.net という新しい仮想サーバ内で作成し、 2 つのルールのみを必要とします。 '''デフォルト''' ルールは以前に作成された information source に関する SCGI ハンドラで使用されます。 |
| 106 | 2 つ目のルールは Trac のインタフェースを正しく表示するために必要ないくつかの静的ファイルを扱うために設定します。ルールを ''/common'' の ''ディレクトリルール'' として作成し、 ''静的ファイル'' のハンドラを適切なファイルをポイントする ''ドキュメントルート'' と共に設定するだけです: ''$TRAC_LOCAL/htdocs/'' ($TRAC_LOCAL はユーザ又はローカル Trac リソース を置いたシステム管理者により定義されたディレクトリです) |
| 107 | |
| 108 | Note:\\ |
| 109 | tracd プロセスが起動しない場合や cherokee が 503 エラーページを表示する場合、 [http://trac.saddi.com/flup python-flup] がインストールされていない可能性があります。\\ |
| 110 | Python-flup は SCGI の能力を trac に与える従属関係にあります。 debian 基本システムからインストールできます: |
| 111 | {{{ |
| 112 | sudo apt-get install python-flup |
| 113 | }}} |
| 114 | |
| 115 | |
| 116 | == Lighttpd の簡単な設定 == #SimpleLighttpdConfiguration |
141 | | 各フィールドの値が異なることに注意して下さい。もし `.fcgi` スクリプトに |
142 | | 環境変数を設定するほうが好ましい場合は、 `trac.fcgi` をコピー/名前変更をして下さい。例として、 |
143 | | `first.fcgi` と `second.fcgi` が上記の設定では参照されるようにします。 |
144 | | 上記の設定で、両方のプロジェクトが 同じ `trac.fcgi` スクリプトで起動していても、 |
| 168 | Note: 各フィールドの値が異なることに注意して下さい。もし、 |
| 169 | `.fcgi` スクリプト内の環境変数を設定する方が好ましいならば、 `trac.fcgi` スクリプトを |
| 170 | 例えば、 `first.fcgi` や `second.fcgi` というようにコピー / リネームして、上記設定の中でこれらのスクリプトを参照するようにしてください。 |
| 171 | 両方のプロジェクトが同じ `trac.fcgi` スクリプトから起動しているとしても、 |
271 | | もし、 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 を起動するユーザに適宜読み替えてください。) |
272 | | |
273 | | |
274 | | == 簡単な !LiteSpeeed の設定 == #SimpleLiteSpeedConfiguration |
275 | | |
276 | | FastCGI フロントエンドは [http://www.litespeedtech.com/ LiteSpeed] のような、 Apache 以外の Web サーバのために開発されました。 |
277 | | |
278 | | !LiteSpeed Web サーバはイベント駆動、非同期型であり、Apache に代わるものとしてセキュアで拡張可能になるようにゼロからデザインされています。そして、最低限のリソースで操作できます。 !LiteSpeed は Apache の設定ファイルから直接操作でき、ビジネスに不可欠な環境をターゲットにしています。 |
279 | | |
280 | | セットアップ |
281 | | |
282 | | 1) 最初に Trac プロジェクトをインストールして動作することを確認して下さい。最初のインストールでは、 "tracd" を使用します。 |
283 | | |
284 | | 2) このセットアップでは仮想ホストを作成します。以下、この仮想ホストのことを !TracVhost と呼びます。このチュートリアルで、先ほど作ったプロジェクトが以下の URL 経由でアクセスできると仮定します: |
| 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 | |
| 301 | |
| 302 | == !LiteSpeed の簡単な設定 == #SimpleLighttpdConfiguration |
| 303 | |
| 304 | FastCGI フロントエンドは最初 [http://www.litespeedtech.com/ LiteSpeed] のような、 Apache 以外の Web サーバのために開発されました。 |
| 305 | |
| 306 | !LiteSpeed Web サーバはイベント駆動、非同期型であり、 Apache に代わるものとしてセキュアで拡張可能になるようにゼロからデザインされています。そして、最低限のリソースで操作できます。 !LiteSpeed は Apache の設定ファイルから直接操作でき、ビジネスに不可欠な環境をターゲットにしています。 |
| 307 | |
| 308 | 1. 最初に Trac プロジェクトをインストールして動作することを確認して下さい。最初のインストールでは、 "tracd" を使用します。 |
| 309 | |
| 310 | 2. このセットアップでは仮想ホストを作成します。以下、この仮想ホストのことを !TracVhost と呼びます。このチュートリアルで、先ほど作ったプロジェクトが以下の URL 経由でアクセスできると仮定します: |
439 | | The above assumes that: |
440 | | * There is a user named 'trac' for running trac instances and keeping trac environments in its home directory. |
441 | | * /home/trac/instance contains a trac environment |
442 | | * /home/trac/htpasswd contains authentication information |
443 | | * /home/trac/run is owned by the same group the nginx runs under |
444 | | * and if your system is Linux the /home/trac/run has setgid bit set (chmod g+s run) |
445 | | * and patch from ticket #T7239 is applied, or you'll have to fix the socket file permissions every time |
446 | | |
447 | | Unfortunately nginx does not support variable expansion in fastcgi_pass directive. |
448 | | Thus it is not possible to serve multiple trac instances from one server block. |
449 | | |
450 | | If you worry enough about security, run trac instances under separate users. |
451 | | |
452 | | Another way to run trac as a FCGI external application is offered in ticket #T6224 |
| 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 インスタンスを起動することができません。 |
| 491 | |
| 492 | セキュリティ面で不安があるならば、 各 Trac インスタンスを別々のユーザで起動してください。 |
| 493 | |
| 494 | Trac を FCGI の外部アプリケーションとして起動するもう一つの方法は、[http://trac.edgewall.org/ticket/6224 本家チケット 6224] を参照して下さい。 |