wiki:TracCgi

Version 3 (modified by trac, 11 years ago) (diff)

--

CGI として Trac をインストールする

Trac を CGI スクリプトとしてインストールするために、 Web サーバが trac.cgi を CGI として実行できるようにする必要があります。

Trac を CGI 経由で使用するのは、他のメソッド mod_pythonFastCGI よりも極めて遅いということに注意して下さい。

Apache HTTPD を使用している場合、設定方法は 2 通りあります:

  1. ScriptAlias を使用し、 trac.cgi スクリプトを URL にマップする。
  2. CGI プログラムが実行可能な、Web サーバ上のディレクトリ (通常は cgi-bin が使用される) に trac.cgi ファイルをコピーする。シンボリックリンクでも代用できますが、その場合 cgi-bin ディレクトリでは FollowSymLinks オプションを有効にして下さい。

CGI を分かりやすい URL にマッピングできるので、 1 番目のオプションを推奨します。

それでは、 Apache の設定ファイルに以下のブロックを追記し、ファイル名とロケーションを変更してください:

ScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi

このディレクティブを使用するには mod_alias モジュールをインストールし、有効にしておく必要があります。

Trac のプロジェクトが 1 つの場合、 TRAC_ENV 環境変数を使用してプロジェクトへのパスを指定する必要があります:

<Location "/trac">
  SetEnv TRAC_ENV "/path/to/projectenv"
</Location>

もしくは、複数のプロジェクトを扱うために、それらの親ディレクトリを TRAC_ENV_PARENT_DIR を使用して設定することができます。

<Location "/trac">
  SetEnv TRAC_ENV_PARENT_DIR "/path/to/project/parent/dir"
</Location>

SetEnv ディレクティブを使用するには mod_env モジュールをインストールし有効にしておく必要があります。

http://yourhost.example.org/trac のような URL で Trac が使用できるようになります。

Apache suEXEC 機能を使用している場合、 ApacheSuexec を参照して下さい。

システムによっては、trac.cgi ファイルの shebang 行を編集して、実際に Python がインストールされているパスを指すように修正する必要がある かもしれません。 Windows システム上では、 Windowsが .cgi ファイルを実行できるように設定する必要があるでしょう。 (エクスプローラ -> ツール -> フォルダオプション -> ファイルの種類 -> CGI を Python と関連付ける)

静的なリソースをマッピングする

このままでも Trac はスタイルシートや画像ファイルなどの静的なリソースを扱えますが、 CGI のセットアップとしては妥当な設定とは言えません。 Web サーバ自身がはるかに効率良くに直接扱うことができるドキュメントまで、 CGI スクリプトとして呼び出してしまうという結果になるからです。

Apache HTTPD のような Web サーバはリソースに対して "Alias" を設定することで仮想の URL を与え、サーバのファイルシステムのレイアウトとは異なる位置にマップすることができます。すでに CGI スクリプトに対して ScriptAlias を定義していますので、ファイルシステム上の静的リソースを含んだコンテンツをマッピングすることで CGI スクリプトの要求を回避します。

Apacheの設定ファイルを再び編集して、 CGI スクリプトの ScriptAlias を追記したブロックより 上に 以下のブロックを追記します。ファイル名とロケーションは適宜変更してください:

Alias /trac/chrome/common /usr/share/trac/htdocs
<Directory "/usr/share/trac/htdocs">
  Order allow,deny
  Allow from all
</Directory>

trac.cgi スクリプトにどんな URL をマッピングしたとしても、 /chrome/common というパスでは静的リソースのロケーションを使用するようになります。

例えば、Trac が /cgi-bin/trac.cgiにマッピングされているとしたら、AliasのURLは cgi-bin/trac.cgi/chrome/common となります。

代わりに、trac.ini のオプションで htdocs_location を設定することができます:

[trac]
htdocs_location = /trac-htdocs

Trac は HTML ページに静的リソースを組み込むときに、この URL を使用するようになります。もちろん、それでも、特定の URL が指定されたときに 例えば、 Web サーバーのドキュメントルートにディレクトリをコピーするなり、シンボリックリンクを張るなりして、Web サーバ経由で、 Trac が htdocs ディレクトリを利用できるようにしておく必要があります:

$ ln -s /usr/share/trac/htdocs /var/www/your_site.com/htdocs/trac-htdocs

認証を追加する

Apache で認証を追加する最も単純な方法はパスワードファイルを作ることです。 htpasswd プログラムを使用してパスワードファイルを作成します:

$ htpasswd -c /somewhere/trac.htpasswd admin
New password: <type password>
Re-type new password: <type password again>
Adding password for user admin

一番最初のユーザ以外は "-c" オプションは必要ありません:

$ htpasswd /somewhere/trac.htpasswd john
New password: <type password>
Re-type new password: <type password again>
Adding password for user john

htpasswd についての詳細は man を見てください。

ユーザを作成した後、 TracPermissions の記述通りユーザに権限を設定することができます。

Apache の設定ファイルの中にパスワードファイル名を記述し、認証を有効にする必要があります:

<Location "/trac/login">
  AuthType Basic
  AuthName "Trac"
  AuthUserFile /somewhere/trac.htpasswd
  Require valid-user
</Location>

複数のプロジェクトを持っている場合でも、パスワードファイルはプロジェクトで共通なものを使用することができます:

<LocationMatch "/trac/[^/]+/login">
  AuthType Basic
  AuthName "Trac"
  AuthUserFile /somewhere/trac.htpasswd
  Require valid-user
</LocationMatch>

より堅固なセキュリティのために、 SSL を有効にするか、少なくとも "基本認証" の代わりに "ダイジェスト認証" を使用することを推奨します。より詳しい情報については Apache HTTPD documentation を参照して下さい。


See also: TracGuide, TracInstall, TracFastCgi, TracModPython