| 1 | = Tracd = |
| 2 | |
| 3 | Tracd は軽量なスタンドアロンの Trac web サーバです。ほとんどのケースでは [wiki:TracCgi CGI] よりセットアップが簡単で、処理速度も速くなります。 |
| 4 | |
| 5 | == 利点 == |
| 6 | |
| 7 | * 依存性が低い: apache その他 web サーバをインストールする必要がありません。 |
| 8 | * 速い: [wiki:TracModPython mod_python] バージョンと同じくらい速いでしょう。 ([wiki:TracCgi CGI] よりはずっと速い)。 |
| 9 | * 自動リロード: 開発のために、 Tracd は ''auto_reload'' モードを使用しています。そのため、コード ( Trac 自身またはプラグインのコード ) を更新したときに、自動的にサーバが再起動します。 |
| 10 | |
| 11 | == 欠点 == |
| 12 | |
| 13 | * 機能が少ない: Tracd に実装されている web サーバはとてもシンプルで、 Apache HTTPD のように拡張性のある設定ができません。 |
| 14 | * ネイティブで HTTPS に対応しない: 代わりに [http://www.rickk.com/sslwrap/ sslwrap] または |
| 15 | [http://trac.edgewall.org/wiki/STunnelTracd stunnel -- tracd と stunnel を使うためのチュートリアル] または Apache の mod_proxy を使用します。 |
| 16 | |
| 17 | == 使用例 == |
| 18 | |
| 19 | ポート 8080 に単一のプロジェクトを作成します。 (http://localhost:8080/) |
| 20 | {{{ |
| 21 | $ tracd -p 8080 /path/to/project |
| 22 | }}} |
| 23 | 複数のプロジェクト(http://localhost:8080/project1/ と http://localhost:8080/project2/) |
| 24 | {{{ |
| 25 | $ tracd -p 8080 /path/to/project1 /path/to/project2 |
| 26 | }}} |
| 27 | |
| 28 | Trac は異なるプロジェクト間の URL の一意性を保つために、パスの一番最後の文字列を使用するため、プロジェクト間でパスの一番最後の部分を同じにすることは出来ません。 |
| 29 | もし、 `/project1/path/to` と `/project2/path/to` を同時に指定した場合、二つ目のプロジェクトだけしか見えなくなります。 |
| 30 | |
| 31 | 複数のプロジェクトを動かすもう一つの方法は、 `-e` オプションで親ディレクトリを指定し、サブディレクトリに TracEnvironment を配置します。上記の例は以下のように書き換えられます: |
| 32 | {{{ |
| 33 | $ tracd -p 8080 -e /path/to |
| 34 | }}} |
| 35 | |
| 36 | == 認証を使用する == |
| 37 | |
| 38 | Tracd は基本認証とダイジェスト認証の両方に対応しています。デフォルトはダイジェスト認証です; 基本認証を使用するためには、以降の例で使用する `--auth` を `--basic-auth` に置き換え、レルムの指定を削除して下さい。 |
| 39 | |
| 40 | ''基本認証への対応はバージョン 0.9 以降で追加されました。'' |
| 41 | |
| 42 | ファイル `/path/to/users.htdigest` に project1 のユーザアカウントをレルム "mycompany.com" として保持している場合、以下に示すコマンドラインで tracd を起動します: |
| 43 | {{{ |
| 44 | $ tracd -p 8080 --auth project1,/path/to/users.htdigest,mycompany.com /path/to/project1 |
| 45 | }}} |
| 46 | |
| 47 | '''Note''': `--auth` オプションで指定するプロジェクトの "名前" はそのプロジェクトの TracEnvironment ディレクトリの basename です。 |
| 48 | |
| 49 | もちろん、ダイジェストファイルは複数のプロジェクト間で共有することが出来ます: |
| 50 | {{{ |
| 51 | $ tracd -p 8080 \ |
| 52 | --auth project1,/path/to/users.htdigest,mycompany.com \ |
| 53 | --auth project2,/path/to/users.htdigest,mycompany.com \ |
| 54 | /path/to/project1 /path/to/project2 |
| 55 | }}} |
| 56 | |
| 57 | ダイジェストファイルを共有するもうひとつの方法は、プロジェクトの名前に "*" |
| 58 | を指定することです: |
| 59 | {{{ |
| 60 | $ tracd -p 8080 \ |
| 61 | --auth *,/path/to/users.htdigest,mycompany.com \ |
| 62 | /path/to/project1 /path/to/project2 |
| 63 | }}} |
| 64 | |
| 65 | == htdigest パスワードファイルの設定方法 == |
| 66 | |
| 67 | もし、 Apache がインストールされているなら、パスワードファイルを生成するのに、 htdigest コマンドを使用することができます。 'htdigest' とタイプして使用方法を見るか、詳細な使用方法を見るために Apache のマニュアル [http://httpd.apache.org/docs/2.0/programs/htdigest.html このページ] を読んでください。ユーザを生成するたびに、パスワードを入力するように求められます。パスワードファイルの名前には好きな名前をつけることができますが、 `users.htdigest` というような名前にしておけば、ファイルに何が含まれているかを覚えておけるでしょう。指示通り、それを <projectname>/conf フォルダに [TracIni trac.ini] ファイルと一緒において下さい。 |
| 68 | |
| 69 | 引数 --auth なしで tracd をスタートできることに注意して下さい。ただし、 ''ログイン'' リンクをクリックするとエラーになるでしょう。 |
| 70 | |
| 71 | == Apache 以外の環境でパスワードを生成する == |
| 72 | |
| 73 | もし Apache が使用できない場合でも、簡単な Python スクリプトでパスワードを生成できます: |
| 74 | |
| 75 | {{{ |
| 76 | from optparse import OptionParser |
| 77 | import md5 |
| 78 | |
| 79 | # build the options |
| 80 | usage = "usage: %prog [options]" |
| 81 | parser = OptionParser(usage=usage) |
| 82 | parser.add_option("-u", "--username",action="store", dest="username", type = "string", |
| 83 | help="the username for whom to generate a password") |
| 84 | parser.add_option("-p", "--password",action="store", dest="password", type = "string", |
| 85 | help="the password to use") |
| 86 | (options, args) = parser.parse_args() |
| 87 | |
| 88 | # check options |
| 89 | if (options.username is None) or (options.password is None): |
| 90 | parser.error("You must supply both the username and password") |
| 91 | |
| 92 | # Generate the string to enter into the htdigest file |
| 93 | realm = 'trac' |
| 94 | kd = lambda x: md5.md5(':'.join(x)).hexdigest() |
| 95 | print ':'.join((options.username, realm, kd([options.username, realm, options.password]))) |
| 96 | }}} |
| 97 | |
| 98 | Note: もし tracd を --basic-auth ではなくて、 --auth オプションを使用して起動するときに、上記のスクリプトを使わないといけないとしたら --auth の値に 'trac' を( シングルクォートなしで ) 指定し、レルムを設定しなければなりません。( 上記スクリプトを trac-digest.py として保存したとします) |
| 99 | |
| 100 | {{{ |
| 101 | python trac-digest.py -u username -p password >> c:\digest.txt |
| 102 | python tracd --port 8000 --auth proj_name,c:\digest.txt,trac c:\path\to\proj_name |
| 103 | }}} |
| 104 | |
| 105 | == Tips == |
| 106 | |
| 107 | === 静的なリソースを扱う === |
| 108 | |
| 109 | もし、 `tracd` が単一のプロジェクトのみを扱う Web サーバだとしたら、 |
| 110 | 静的なリソースを割り当てるのに使用することができます。 |
| 111 | (tar アーカイブ, Doxygen ドキュメントなど) |
| 112 | |
| 113 | この静的なリソースは `$TRAC_ENV/htdocs` フォルダに置き、 |
| 114 | `<project_URL>/chrome/site/...` という URL でアクセスします。 |
| 115 | |
| 116 | 例: ファイル名が `$TRAC_ENV/htdocs/software-0.1.tar.gz` だったとき、 |
| 117 | 対応する URL は `/<project_name>/chrome/site/software-0.1.tar.gz` となるでしょう。 |
| 118 | そして、wiki には、相対リンクシンタックスを使用して、 |
| 119 | `[/<project_name>/chrome/site/software-0.1.tar.gz]` と書くことができます。 |
| 120 | |
| 121 | Trac の開発バージョンでは新しく `htdocs:` に対応します。 TracLinks は |
| 122 | 上記のようなシンタックスになります。これによって、上記の例のリンクはただ単に |
| 123 | `htdocs:software-0.1.tar.gz` と書くことができます。 |
| 124 | |
| 125 | ---- |
| 126 | See also: TracInstall, TracCgi, TracModPython, TracGuide |
| 127 | |
| 128 | ---- |
| 129 | '''Translation:''' |
| 130 | * [https://opensvn.csie.org/traccgi/trac_rus/wiki/StandAloneTracForTeapot Russian] (перевод на Русский) |