v2 | v3 | |
---|---|---|
1 | 1 | = CGI として Trac をインストールする = #InstallingTracasCGI |
2 | ||
3 | ||
4 | 2 | |
5 | 3 | {{{ |
6 | 4 | #!div class=important |
7 | ''Trac を CGI 経由で使用するのは、 |
|
5 | ''Trac を CGI 経由で使用するのは、他の方法である [TracModPython mod_python], [TracFastCgi FastCGI] や Windows 上の [trac:TracOnWindowsIisAjp IIS/AJP] よりも極めて遅いことに注意して下さい。'' | |
8 | 6 | }}} |
9 | 7 | |
10 | [http://httpd.apache.org/ Apache HTTPD] を使用している場合、設定方法は 2 通りあります: | |
8 | CGI スクリプトは、 Web サーバがリクエストを受信した時にアプリケーションを起動するためのエントリポイントになります。下記のスクリプトで `trac.cgi` を生成できます: | |
9 | {{{ | |
10 | trac-admin /path/to/env deploy /path/to/www/trac | |
11 | }}} | |
12 | `trac.cgi` は、 Web ブラウザから実行可能なパスの通った `cgi-bin` フォルダに置きます。このコマンドは与えられたパスの `htdocs` に `静的リソース` ファイルをコピーします。 | |
11 | 13 | |
12 | 1. `ScriptAlias` を使用し、 `trac.cgi` スクリプトを URL にマップする。 | |
13 | 2. CGI プログラムが実行可能な、 Web サーバ上のディレクトリ (通常は `cgi-bin` が使用される) に `trac.cgi` ファイルをコピーする。 (Windows Server 2003 のマシンを使用している場合で、リポジトリから直接ファイルをコピーするのが難しい場合、新しいテキストファイルを作成し、内容をコピーして新しいファイルに貼り付けてください。) シンボリックリンクでも代用できますが、その場合 `cgi-bin` ディレクトリでは `FollowSymLinks` オプションを有効にして下さい。 | |
14 | == Apache web-server 設定 == #Apacheweb-serverconfiguration | |
14 | 15 | |
15 | CGI を分かりやすい URL にマッピングできるので、 1 番目のオプションを推奨します。 | |
16 | [http://httpd.apache.org/ Apache HTTPD] を使用している場合、 Trac で CGI を動作させる設定方法は 2 通りあります: | |
16 | 17 | |
17 | それでは、 Apache の設定ファイルに以下のブロックを追記し、ファイル名とロケーションを変更してください: | |
18 | 1. `ScriptAlias` を使用し、 `trac.cgi` スクリプトを URL にマップする。(推奨) | |
19 | 2. CGI プログラムが実行可能な、 Web サーバ上のディレクトリ (通常は `cgi-bin` が使用される) に `trac.cgi` ファイルをコピーする。シンボリックリンクでも代用できますが、その場合 `cgi-bin` ディレクトリでは `FollowSymLinks` オプションを有効にして下さい。 | |
20 | ||
21 | `http://yourhost.example.org/trac` で Trac を実行するには、インストールしたマシンのApache の設定ファイルに、 `trac.cgi` パスに変更した上で、`ScriptAlias` ディレクティブを追加します。 | |
18 | 22 | {{{ |
19 | ScriptAlias /trac / |
|
23 | ScriptAlias /trac /path/to/www/trac/cgi-bin/trac.cgi | |
20 | 24 | }}} |
21 | 25 | |
22 | ''このディレクティブを使用するには `mod_alias` モジュールを |
|
26 | ''このディレクティブを使用するには `mod_alias` モジュールを有効にしておく必要があります。'' | |
23 | 27 | |
24 | 28 | Trac のプロジェクトが 1 つの場合、 `TRAC_ENV` 環境変数を使用してプロジェクトへのパスを指定する必要があります: |
… | … | |
36 | 40 | }}} |
37 | 41 | |
38 | '' |
|
42 | ''Note: `SetEnv` ディレクティブを使用するには `mod_env` モジュールをインストールし有効にしておく必要があります。 trac.cgi に TRAC_ENV を設定することで代用できます。 "try" と "from trac.web ..." の間に以下のコードを加えてください:'' | |
39 | 43 | |
40 | 44 | {{{ |
… | … | |
43 | 47 | }}} |
44 | 48 | |
45 | '' |
|
49 | ''もしくは、 TRAC_ENV_PARENT_DIR を設定します:'' | |
46 | 50 | |
47 | 51 | {{{ |
… | … | |
49 | 53 | os.environ['TRAC_ENV_PARENT_DIR'] = "/path/to/project/parent/dir" |
50 | 54 | }}} |
51 | ||
52 | ||
53 | 55 | |
54 | 56 | [http://httpd.apache.org/docs/suexec.html Apache suEXEC] 機能を使用している場合、 [http://trac.edgewall.org/wiki/ApacheSuexec ApacheSuexec] を参照して下さい。 |
… | … | |
58 | 60 | == 静的なリソースをマッピングする == #MappingStaticResources |
59 | 61 | |
60 | このままでも Trac はスタイルシートや画像ファイルなどの静的なリソースを扱えますが、 CGI のセットアップとしては |
|
62 | このままでも Trac はスタイルシートや画像ファイルなどの静的なリソースを扱えますが、 CGI のセットアップとしては '''妥当な設定とは言えません'''。 Web サーバ自身がはるかに効率良くに直接扱うことができるドキュメントまで、 CGI スクリプトとして呼び出してしまうという結果になるからです。 | |
61 | 63 | |
62 | [http://httpd.apache.org/ Apache |
|
64 | [http://httpd.apache.org/ Apache] のような Web サーバはリソースに対して "Alias" を設定することで仮想の URL を与え、サーバのファイルシステムのレイアウトとは異なる位置にマップすることができます。すでに CGI スクリプトに対して `ScriptAlias` を定義していますので、ファイルシステム上の静的リソースを含んだコンテンツをマッピングすることで CGI スクリプトの要求を回避します。 | |
63 | 65 | |
64 | Apacheの設定ファイルを再び編集して、 CGI スクリプトの `ScriptAlias` を追記したブロックより '''上に''' 以下のブロックを追記します。ファイル名とロケーションは適宜変更してください (訳注: 0.11 以降は、静的リソースは Trac をインストールした場所の `trac/htdocs` になります): | |
66 | 静的なリソースに対する主要な URL パスとして `/chrome/common` と `/chrome/site` があります。プラグインを使用している場合、各々の静的リソースとして `/chrome/plugin` のようなパスが追加されていることがありますが、主要なパスに対して追加を行えるだけなので、 `/chrome` に対して `Alias` を設定しても、プラグインが提供する静的リソースに対してアクセスできる訳ではありません。(訳注: このような場合 `trac-admin` の `deploy` で作成された `htdocs` ディレクトリに対して `Alias` を使用してください) | |
67 | ||
68 | CGI スクリプトの `ScriptAlias` を追記したブロックより '''上に''' 以下のブロックを追記します。ファイル名とロケーションは適宜変更してください: | |
65 | 69 | {{{ |
66 | Alias /trac/chrome/common /usr/share/trac/htdocs | |
67 | <Directory "/usr/share/trac/htdocs"> | |
70 | Alias /trac/chrome/common /path/to/trac/htdocs/common | |
71 | Alias /trac/chrome/site /path/to/trac/htdocs/site | |
72 | <Directory "/path/to/www/trac/htdocs"> | |
68 | 73 | Order allow,deny |
69 | 74 | Allow from all |
… | … | |
71 | 76 | }}} |
72 | 77 | |
73 | `trac.cgi` スクリプトにどんな URL をマッピングしたとしても、 `/chrome/common` というパスでは静的リソースのロケーションを使用するようになります。 | |
78 | もし、 mod_python を使用しているならば、この設定も追加したいかもしれません ( mod_python を使用していないなら、このエイリアスは無視されます): | |
79 | {{{ | |
80 | <Location "/trac/chrome/common/"> | |
81 | SetHandler None | |
82 | </Location> | |
83 | }}} | |
84 | ||
85 | Note: `trac.cgi` スクリプトを `/trac` にマップしている場合、その一部である `/chrome/common` を加えたパスに対するリクエストは、静的リソースで処理するように割り込みを加えます。 | |
74 | 86 | |
75 | 87 | 例えば、Trac が `/cgi-bin/trac.cgi` にマッピングされているとしたら、 Alias の URL は `cgi-bin/trac.cgi/chrome/common` となります。 |
76 | 88 | |
77 | 同様に、静的なリソースを |
|
89 | 同様に、静的なリソースを project の htdocs ディレクトリで使用している場合 (テーマの中で /chrome/site を参照しているなど)、 プロジェクトディレクトリの htdocs に Apache の設定を行うことが出来ます (再度、 CGI スクリプトの `ScriptAlias` を追記したブロックより '''上に'''、以下のブロックを追記します。ファイル名とロケーションは適宜変更してください): | |
78 | 90 | |
79 | 91 | {{{ |
… | … | |
85 | 97 | }}} |
86 | 98 | |
87 | あるいは |
|
99 | あるいは `/trac/chrome/site` をハックする場合は、 [wiki:TracIni trac.ini] に `htdocs_location` のオプションを設定することができます。 | |
88 | 100 | {{{ |
89 | 101 | [trac] |
90 | htdocs_location = |
|
102 | htdocs_location = http://yourhost.example.org/trac-htdocs | |
91 | 103 | }}} |
92 | 104 | |
93 | 105 | Trac は HTML ページに静的リソースを組み込むときに、この URL を使用するようになります。もちろん、それでも、特定の URL が指定されたときに 例えば、 Web サーバーのドキュメントルートにディレクトリをコピーするなり、シンボリックリンクを張るなりして、Web サーバ経由で、 Trac が `htdocs` ディレクトリを利用できるようにしておく必要があります: |
94 | 106 | {{{ |
95 | $ ln -s / |
|
107 | $ ln -s /path/to/www/trac/htdocs /var/www/yourhost.example.org/trac-htdocs | |
96 | 108 | }}} |
97 | 109 | |
… | … | |
160 | 172 | |
161 | 173 | ---- |
162 | See also: TracGuide, TracInstall, |
|
174 | See also: TracGuide, TracInstall, [wiki:TracModWSGI], TracFastCgi, TracModPython |