wiki:TracCgi

Version 1 (modified by trac, 7 years ago) (diff)

--

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

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

Trac を CGI 経由で使用するのは、 mod_pythonFastCGI , Windows では IIS/AJP のような他の方法よりも極めて遅いということに注意して下さい。

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

  1. ScriptAlias を使用し、 trac.cgi スクリプトを URL にマップする。
  2. CGI プログラムが実行可能な、 Web サーバ上のディレクトリ (通常は cgi-bin が使用される) に trac.cgi ファイルをコピーする。 (Windows Server 2003 のマシンを使用している場合で、リポジトリから直接ファイルをコピーするのが難しい場合、新しいテキストファイルを作成し、内容をコピーして新しいファイルに貼り付けてください。) シンボリックリンクでも代用できますが、その場合 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 モジュールをインストールし有効にしておく必要があります。そうでなければ、 trac.cgi に TRAC_ENV を設定することができます。 "try" と "from trac.web ..." の間に以下のコードを加えてください:

    import os
    os.environ['TRAC_ENV'] = "/path/to/projectenv"

もしくは、 TRAC_ENV_PARENT_DIR を設定します:

    import os
    os.environ['TRAC_ENV_PARENT_DIR'] = "/path/to/project/parent/dir"

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 を追記したブロックより 上に 以下のブロックを追記します。ファイル名とロケーションは適宜変更してください (訳注: 0.11 以降は、静的リソースは Trac をインストールした場所の trac/htdocs になります):

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 となります。

同様に、静的なリソースを使用している場合、 プロジェクトディレクトリの htdocs に Apache の設定を行うことが出来ます (再度、 CGI スクリプトの ScriptAlias を追記したブロックより 上に、以下のブロックを追記します。ファイル名とロケーションは適宜変更してください):

Alias /trac/chrome/site /path/to/projectenv/htdocs
<Directory "/path/to/projectenv/htdocs">
  Order allow,deny
  Allow from all
</Directory>

あるいは、trac.inihtdocs_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

Note: htdocs ディレクトリの内容を取得するには、最初に TracAdmindeploy コマンドを使用して、対応する Trac リソースを展開する必要があります。

deploy <directory>

    Extract static resources from Trac and all plugins

認証を追加する

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 を参照して下さい。例えば、Dian 4.0r1 (etch) システムの上では、Apache 構成における関連セクションは下記のように記述できます。

<Location "/trac/login">
    LoadModule auth_digest_module /usr/lib/apache2/modules/mod_auth_digest.so
    AuthType Digest
    AuthName "trac"
    AuthDigestDomain /trac
    AuthUserFile /somewhere/trac.htpasswd
    Require valid-user
</Location>

.htpasswd ファイルは htpasswd の代わりに htdigest を使って、以下の通りに作成する必要があります:

# htdigest /somewhere/trac.htpasswd trac admin

上記の "trac" パラメータは 上の AuthName と同じ値にします (apache-docs の "Realm")。


See also: TracGuide, TracInstall, wiki:TracModWSGI, TracFastCgi, TracModPython