| | 63 | {{{#!div |
| | 64 | 一度、Windows サービスがインストールされると、上記の `reg add` コマンドを使用するよりも、レジストリエディタを起動するほうが簡単かもしれません。指定のパスへの移動:[[BR]] |
| | 65 | `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tracd\Parameters` |
| | 66 | |
| | 67 | 3 つの文字列のパラメータが提供されています: |
| | 68 | ||!AppDirectory ||C:\Python26\ || |
| | 69 | ||Application ||python.exe || |
| | 70 | ||!AppParameters ||scripts\tracd-script.py -p 8080 ... || |
| | 71 | |
| | 72 | Note: もし !AppDirectory が上記のように設定されているならば、実行ファイル ''と'' スクリプトのパス、パラメータの値は、設定したフォルダへの相対パスになります。ここ一点に絞って言うと、これにより Python をアップデートするときに変更箇所が限定されるため少しだけ楽になります。 |
| | 73 | (ドキュメントでは、 /full/path/to/htpasswd とフルパス指定するよう書いてあるかもしれませんが、これは、 .htpasswd ファイルについても同様のことが言えます。このファイルを Python ディレクトリ配下に配置したいと思わないかもしれません。) |
| | 74 | }}} |
| | 75 | |
| | 76 | Windows 7 ユーザは、 srvany.exe は使用できないかもしれません。代わりに [http://www.google.com/search?q=winserv.exe WINSERV] ユーティリティを使用して、起動してください: |
| | 77 | {{{ |
| | 78 | "C:\path\to\winserv.exe" install tracd -displayname "tracd" -start auto "C:\path\to\python.exe" c:\path\to\python\scripts\tracd-script.py <your tracd parameters>" |
| | 79 | |
| | 80 | net start tracd |
| | 81 | }}} |
| | 82 | |
| | 83 | === オプション 2 === #Option2 |
| | 84 | |
| | 85 | [http://trac-hacks.org/ Trac Hacks] より [http://trac-hacks.org/wiki/WindowsServiceScript WindowsServiceScript] を入手して下さい。 Trac のサービスを インストール、削除、開始、停止などできます。 |
| | 86 | |
| | 87 | === オプション 3 === #Option3 |
| | 88 | |
| | 89 | cygwin の cygrunsrv.exe を使用することもできます: |
| | 90 | {{{ |
| | 91 | $ cygrunsrv --install tracd --path /cygdrive/c/Python27/Scripts/tracd.exe --args '--port 8000 --env-parent-dir E:\IssueTrackers\Trac\Projects' |
| | 92 | $ net start tracd |
| | 93 | }}} |
| | 94 | |
| 63 | | tracd は Apache の .htpasswd ファイルを使用できます: |
| 64 | | |
| 65 | | .htpasswd ファイルは htpasswd コマンドを使用して作成します: |
| 66 | | |
| | 97 | Tracd は基本認証とダイジェスト認証の両方に対応しています。ダイジェスト認証の方がより安全です。以降の例ではダイジェスト認証を使用しています。基本認証を使用するためには、下記のコマンドライン入力時に `--auth` を `--basic-auth` に置き換えて下さい。 |
| | 98 | |
| | 99 | 認証を使用する際の一般的なフォーマット: |
| | 100 | {{{ |
| | 101 | $ tracd -p port --auth="base_project_dir,password_file_path,realm" project_path |
| | 102 | }}} |
| | 103 | オプションについて: |
| | 104 | * '''base_project_dir''': 下記の通りプロジェクトのベースのディレクトリを特定する: |
| | 105 | * 複数のプロジェクトを立てているとき: `project_path` への ''相対パス'' |
| | 106 | * 1 つのみプロジェクトを立てているとき (`-s` オプション使用): プロジェクトのディレクトリの名前 |
| | 107 | 絶対パスを使用しないで下さい。 ''Note:'' このパラメータは、 Windows の環境であっても大文字小文字を区別します。 |
| | 108 | * '''password_file_path''': パスワードファイルへのパス |
| | 109 | * '''realm''': realm の名前 ( なんでも指定できます ) |
| | 110 | * '''project_path''': プロジェクトへのパス |
| | 111 | |
| | 112 | * **`--auth`** 上記の例では、ダイジェスト認証を使用しています。基本認証を使用する際は `--auth` を `--basic-auth` に置き換えてください。基本認証は "realm" を必要としませんが、コマンドとしては、最後の引用句に空のレルム名前が直接続くことになるので、2つ目のコンマは必要になります |
| | 113 | |
| | 114 | 例: |
| | 115 | |
| | 116 | {{{ |
| | 117 | $ tracd -p 8080 \ |
| | 118 | --auth="project1,/path/to/passwordfile,mycompany.com" /path/to/project1 |
| | 119 | }}} |
| | 120 | |
| | 121 | もちろん、パスワードファイルは 1 つ以上のプロジェクトで共有することができます。 |
| | 122 | {{{ |
| | 123 | $ tracd -p 8080 \ |
| | 124 | --auth="project1,/path/to/passwordfile,mycompany.com" \ |
| | 125 | --auth="project2,/path/to/passwordfile,mycompany.com" \ |
| | 126 | /path/to/project1 /path/to/project2 |
| | 127 | }}} |
| | 128 | |
| | 129 | パスワードファイルを共有するもう一つの方法として、プロジェクトの名前を指定するところで、 "*" を使用します: |
| | 130 | {{{ |
| | 131 | $ tracd -p 8080 \ |
| | 132 | --auth="*,/path/to/users.htdigest,mycompany.com" \ |
| | 133 | /path/to/project1 /path/to/project2 |
| | 134 | }}} |
| | 135 | |
| | 136 | === 基本認証: htpasswd パスワードを使用する === #BaseicAuthorizationUsingahtpasswdpasswordfile |
| | 137 | このセクションでは、 `tracd` と Apache の .htpasswd ファイルの使用方法について記述します。 |
| | 138 | |
| | 139 | Note: htpasswd のフォーマットを解読するために、(少なくとも Python 2.6 は) fcrypt パッケージをインストールする必要があります。 |
| | 140 | Trac のソースコードでは、まず `import crypt` を試みますが、 |
| | 141 | Python 2.6 にそのようなパッケージはありません。 `SHA-1` パスワードのみ、このモジュールなしで対応します。( Trac 1.0 から) |
| | 142 | |
| | 143 | Apache の `htpasswd` コマンドを使用して、 .htpasswd ファイルを作成します。 ( Apache を使用せずにこれらのファイルを作成する方法については [#GeneratingPasswordsWithoutApache 下記] を参照して下さい): |
| 74 | | tracd の起動オプションにファイルを指定してください (Windows の場合 --basic-auth のあとの "=" を飛ばしてください): |
| 75 | | {{{ |
| 76 | | $ tracd -p 8080 --basic-auth=environmentname,/fullpath/environmentname/.htpasswd,/fullpath/environmentname /fullpath/environmentname |
| 77 | | }}} |
| 78 | | |
| 79 | | Tracd は基本認証とダイジェスト認証の両方に対応しています。デフォルトはダイジェスト認証です; 基本認証を使用するためには、以降の例で使用する `--auth` を `--basic-auth` に置き換えて下さい。 (ダイアログに使用する "realm" を指定しなければなりません。 BASICAUTH には カンマ を末尾に指定した空の文字列を指定することができます。) |
| 80 | | |
| 81 | | ''基本認証への対応はバージョン 0.9 以降で追加されました。'' |
| 82 | | |
| 83 | | 認証を使用するための一般的なコマンドは以下の通りです (Windows の場合 --auth のあとの "=" を飛ばしてください): |
| 84 | | |
| 85 | | {{{ |
| 86 | | $ tracd -p port --auth=base_project_dir,password_file_path,realm project_path |
| 87 | | }}} |
| 88 | | |
| 89 | | オプションについて: |
| 90 | | |
| 91 | | * '''base_project_dir''' はプロジェクトのベースディレクトリ; Note: これはプロジェクト名ではありません。そして Windows の環境においても、大文字と小文字を区別します。 |
| 92 | | * '''password_file_path''' パスワードファイルのパス |
| 93 | | * '''realm''' レルム |
| 94 | | * '''project_path''' プロジェクトのパス |
| 95 | | |
| 96 | | 使用例 (Windows の場合 --auth のあとの "=" を飛ばしてください): |
| 97 | | |
| 98 | | {{{ |
| 99 | | $ tracd -p 8080 \ |
| 100 | | --auth=project1,/path/to/users.htdigest,mycompany.com /path/to/project1 |
| 101 | | }}} |
| 102 | | もちろん、ダイジェストファイルは複数のプロジェクト間で共有することが出来ます: |
| 103 | | {{{ |
| 104 | | $ tracd -p 8080 \ |
| 105 | | --auth=project1,/path/to/users.htdigest,mycompany.com \ |
| 106 | | --auth=project2,/path/to/users.htdigest,mycompany.com \ |
| 107 | | /path/to/project1 /path/to/project2 |
| 108 | | }}} |
| 109 | | |
| 110 | | ダイジェストファイルを共有するもうひとつの方法は、プロジェクトの名前に "*" |
| 111 | | を指定することです: |
| 112 | | {{{ |
| 113 | | $ tracd -p 8080 \ |
| 114 | | --auth="*",/path/to/users.htdigest,mycompany.com \ |
| 115 | | /path/to/project1 /path/to/project2 |
| 116 | | }}} |
| 117 | | `-s` パラメータを使用すると、一つの Trac environment をドメインのルートとして提供するようになり、プロジェクト名として `*` を使用せねばなりません。 |
| 118 | | |
| 119 | | == htdigest パスワードファイルの設定方法 == #Howtosetupanhtdigestpasswordfile |
| | 151 | |
| | 152 | そして、 `tracd` をこのように起動します: |
| | 153 | {{{ |
| | 154 | $ tracd -p 8080 --basic-auth="projectdirname,/fullpath/environmentname/.htpasswd,realmname" /fullpath/environmentname |
| | 155 | }}} |
| | 156 | |
| | 157 | 例: |
| | 158 | {{{ |
| | 159 | $ tracd -p 8080 --basic-auth="testenv,/srv/tracenv/testenv/.htpasswd,My Test Env" /srv/tracenv/testenv |
| | 160 | }}} |
| | 161 | ''Note:'' いくつかのプラットフォーム (OpenBSD) では、htpasswd に "-m" をパラメータで渡す必要があるかもしれません。 |
| | 162 | |
| | 163 | === ダイジェスト認証: htdigest パスワードファイルの設定方法 === #DigestauthentitionUsingahtdigestpasswordfile |
| 168 | | Note: --basic-auth を使用したければ、 .htpasswd ファイルを作成するのに Apache サーバの htpasswd ツールを使用する必要があります。 他の部分についてはダイジェスト認証を行う場合とほとんど同じ方法です。しかしレルムには必ず empty 値 (すなわち、パス後のカンマのみ) を指定するようにしてください。 Windows で使用する場合は必ず -m オプションを使用してください。 (*nix ではテストしなかったので、その場合は不明です) Apache がない環境では、 [http://trac.edgewall.org/browser/tags/trac-0.11b2/contrib/htpasswd.py htpasswd.py] を使うとよいでしょう。 (このスクリプトは `crypt` か `fcrypt` モジュールが必要です; ソースのコメントに詳細が書いてあります。) |
| 169 | | |
| 170 | | md5sum ユーティリティを使用するとダイジェストパスワードを作成することができます: |
| 171 | | {{{ |
| 172 | | $ printf "${user}:trac:${password}" | md5sum - >>user.htdigest |
| 173 | | }}} |
| 174 | | 'to-file' は手で編集が必要です。行末の " -" を削除し、行頭に "${user}:trac:" を追加してください。 |
| | 214 | ==== `md5sum` を使用する |
| | 215 | `md5sum` ユーティリティを使用するとダイジェスト認証のパスワードファイルを作成することができます: |
| | 216 | {{{ |
| | 217 | user= |
| | 218 | realm= |
| | 219 | password= |
| | 220 | path_to_file= |
| | 221 | echo ${user}:${realm}:$(printf "${user}:${realm}:${password}" | md5sum - | sed -e 's/\s\+-//') > ${path_to_file} |
| | 222 | }}} |
| | 223 | |
| | 224 | == リファレンス == #Reference |
| | 225 | |
| | 226 | これはリマインダとして、オンラインヘルプです。 (`tracd --help`): |
| | 227 | {{{ |
| | 228 | Usage: tracd [options] [projenv] ... |
| | 229 | |
| | 230 | Options: |
| | 231 | --version show program's version number and exit |
| | 232 | -h, --help show this help message and exit |
| | 233 | -a DIGESTAUTH, --auth=DIGESTAUTH |
| | 234 | [projectdir],[htdigest_file],[realm] |
| | 235 | --basic-auth=BASICAUTH |
| | 236 | [projectdir],[htpasswd_file],[realm] |
| | 237 | -p PORT, --port=PORT the port number to bind to |
| | 238 | -b HOSTNAME, --hostname=HOSTNAME |
| | 239 | the host name or IP address to bind to |
| | 240 | --protocol=PROTOCOL http|scgi|ajp|fcgi |
| | 241 | -q, --unquote unquote PATH_INFO (may be needed when using ajp) |
| | 242 | --http10 use HTTP/1.0 protocol version instead of HTTP/1.1 |
| | 243 | --http11 use HTTP/1.1 protocol version (default) |
| | 244 | -e PARENTDIR, --env-parent-dir=PARENTDIR |
| | 245 | parent directory of the project environments |
| | 246 | --base-path=BASE_PATH |
| | 247 | the initial portion of the request URL's "path" |
| | 248 | -r, --auto-reload restart automatically when sources are modified |
| | 249 | -s, --single-env only serve a single project without the project list |
| | 250 | -d, --daemonize run in the background as a daemon |
| | 251 | --pidfile=PIDFILE when daemonizing, file to which to write pid |
| | 252 | --umask=MASK when daemonizing, file mode creation mask to use, in |
| | 253 | octal notation (default 022) |
| | 254 | --group=GROUP the group to run as |
| | 255 | --user=USER the user to run as |
| | 256 | }}} |
| | 257 | |
| | 258 | tracd を起動させたターミナルウィンドウを閉じる場合には、tracd がハングアップしないように -d オプションを使用してください。 |
| 189 | | Wiki には、相対リンクシンタックスを使用して、 |
| 190 | | `[/<project_name>/chrome/site/software-0.1.tar.gz]` と書くことができます。 (訳注: `[/chrome/site/software-0.1.tar.gz]` が正しい) |
| 191 | | |
| 192 | | Trac 0.10 以降では新しく `htdocs:` に対応します。 TracLinks は |
| 193 | | 上記のようなシンタックスになります。これによって、上記の例のリンクはただ単に |
| 194 | | `htdocs:software-0.1.tar.gz` と書くことができます。 |
| 195 | | |
| 196 | | === Apache の書き換え規則を使用する === #Usingapacherewriterules |
| 197 | | Apache のビハインドで tracd を使用すると、いくつかの状況で不正なホストまたはプロトコルに URL をリダイレクトされる問題が発生するかもしれません。この場合 (この場合だけ) `[trac] use_base_url_for_redirect` を `true` に設定することができます。これによって Trac がやむを得ず `[trac] base_url` の値を使用するためリダイレクトを行います。 |
| 198 | | |
| 199 | | === 検索パスとは別のベースパス (/) === #Servingadifferentbasepaththan |
| 200 | | Tracd は、プロジェクト毎に異なるベース URL 、および /<project> をサポートします。コマンドは以下の通りです。 |
| | 273 | 代わりに `htdocs:software-0.1.tar.gz` (TracLinks のシンタックス) や `[/<project_name>/chrome/site/software-0.1.tar.gz]` (相対リンクのシンタックス) で記述することができます。 |
| | 274 | |
| | 275 | ''TracLinks における `htdocs:` のサポートは Trac のバージョン 0.10 で追加されました。'' |
| | 276 | |
| | 277 | === tracd をプロキシの背後で使用する === #Usingtracdbehindaproxy |
| | 278 | |
| | 279 | ある状況において tracd を Apache もしくは他のウェブサーバの背後で使用するときについてです。 |
| | 280 | |
| | 281 | この状況において、間違ったホストやプロトコルにリダイレクトされてしまったなどの経験があるかもしれません。この場合 (そして、この場合に限って) `[trac] use_base_url_for_redirect` を `true` に設定することによって、リダイレクトを行なう際 Trac に `[trac] base_url` の値を強制的に使用させることができます。 |
| | 282 | |
| | 283 | もし、`tracd` に接続するために AJP プロトコルを使用しているならば (flup をインストールしているならば可能です) 、ダブルクオテーションの問題にぶつかったことがあるかもしれません。その際は、 `--unquote` パラメータを追加することを考えてください。 |
| | 284 | |
| | 285 | [trac:TracOnWindowsIisAjp], [trac:TracNginxRecipe] も参照してください。 |
| | 286 | |
| | 287 | === プロキシ背後の tracd の認証 === #Authenticationfortracdbehindaproxy |
| | 288 | {{{--basic-auth}}} を使用する代わりに、tracd のインスタンスに外部認証を提供しても有効です。この方法については [trac:#9206 #9206] で議論されています。 |
| | 289 | |
| | 290 | 下記は Apache 2.2 、mod_proxy、mod_authnz_ldap を使用した場合の設定例です。 |
| | 291 | |
| | 292 | まず Apache のネームスペースに tracd を定義します。 |
| | 293 | |
| | 294 | {{{ |
| | 295 | <Location /project/proxified> |
| | 296 | Require ldap-group cn=somegroup, ou=Groups,dc=domain.com |
| | 297 | Require ldap-user somespecificusertoo |
| | 298 | ProxyPass http://localhost:8101/project/proxified/ |
| | 299 | # Turns out we don't really need complicated RewriteRules here at all |
| | 300 | RequestHeader set REMOTE_USER %{REMOTE_USER}s |
| | 301 | </Location> |
| | 302 | }}} |
| | 303 | |
| | 304 | HTTP_REMOTE_USER ヘッダを有効な認証ソースとして認識させるためには単一ファイルのプラグインが必要です。'''HTTP_FOO_BAR''' のような HTTP ヘッダは '''Foo-Bar''' に変換されます。'''remote-user-auth.py''' のようなファイル名をつけ、'''proxified/plugins''' ディレクトリ内に配置してください: |
| | 305 | {{{ |
| | 306 | #!python |
| | 307 | from trac.core import * |
| | 308 | from trac.config import BoolOption |
| | 309 | from trac.web.api import IAuthenticator |
| | 310 | |
| | 311 | class MyRemoteUserAuthenticator(Component): |
| | 312 | |
| | 313 | implements(IAuthenticator) |
| | 314 | |
| | 315 | obey_remote_user_header = BoolOption('trac', 'obey_remote_user_header', 'false', |
| | 316 | """Whether the 'Remote-User:' HTTP header is to be trusted for user logins |
| | 317 | (''since ??.??').""") |
| | 318 | |
| | 319 | def authenticate(self, req): |
| | 320 | if self.obey_remote_user_header and req.get_header('Remote-User'): |
| | 321 | return req.get_header('Remote-User') |
| | 322 | return None |
| | 323 | |
| | 324 | }}} |
| | 325 | |
| | 326 | TracIni にパラメータを追加します: |
| | 327 | {{{ |
| | 328 | ... |
| | 329 | [trac] |
| | 330 | ... |
| | 331 | obey_remote_user_header = true |
| | 332 | ... |
| | 333 | }}} |
| | 334 | |
| | 335 | tracd を起動します: |
| | 336 | {{{ |
| | 337 | tracd -p 8101 -r -s proxified --base-path=/project/proxified |
| | 338 | }}} |
| | 339 | |
| | 340 | もしプラグインをすべてのプロジェクトにインストールしたい場合、 [TracPlugins#Plugindiscovery 共有pluginsディレクトリ] に格納し、共有 trac.ini でプラグインのコンポーネントを有効に設定しなければいけません。 |
| | 341 | |
| | 342 | 共有 config (例えば `/srv/trac/conf/trac.ini`): |
| | 343 | {{{ |
| | 344 | [components] |
| | 345 | remote-user-auth.* = enabled |
| | 346 | [inherit] |
| | 347 | plugins_dir = /srv/trac/plugins |
| | 348 | [trac] |
| | 349 | obey_remote_user_header = true |
| | 350 | }}} |
| | 351 | |
| | 352 | 各プロジェクトの config (例えば `/srv/trac/envs/myenv`): |
| | 353 | {{{ |
| | 354 | [inherit] |
| | 355 | file = /srv/trac/conf/trac.ini |
| | 356 | }}} |
| | 357 | |
| | 358 | === / (root) とは異なるベースパスで起動する === #Servingadifferentbasepaththan |
| | 359 | Tracd は /<project> とは異なるベース URL でプロジェクトを提供することをサポートします。変更するためのパラメータは以下の通りです。 |