Changes between Version 1 and Version 2 of TracStandalone


Ignore:
Timestamp:
09/18/14 10:48:12 (11 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracStandalone

    v1 v2  
    1 = Tracd =
    2 
    3 Tracd は軽量なスタンドアロンの Trac Web サーバです。ほとんどのケースでは [wiki:TracCgi CGI] よりセットアップが簡単で、処理速度も速くなります。
     1= Tracd = #Tracd
     2
     3Tracd は軽量なスタンドアロンの Trac web サーバです。
     4Tracd は様々な場面で使用することができます。テストや開発用のサーバからロードバランサとして使用されているもう一つのウェブサーバの後段に複数のプロセスを配置するときなどに使われます。
    45
    56== 利点 == #Pros
    67
    7  * 依存性が低い: Apache その他 Web サーバをインストールする必要がありません。
    8  * 速い: [wiki:TracModPython mod_python] バージョンと同じくらい速いでしょう。 ([wiki:TracCgi CGI] よりはずっと速い)。
    9  * 自動リロード: 開発のために、 Tracd は ''auto_reload'' モードを使用しています。そのため、コード (Trac 自身またはプラグインのコード) を更新したときに、自動的にサーバが再起動します。
     8 * 依存性が低い: apache その他 web サーバをインストールする必要がありません。
     9 * 速い: [wiki:TracModPython mod_python] バージョンと同じくらい速いでしょう。 ([wiki:TracCgi CGI] よりはずっと速い)。そして、 バージョン 0.12 以降では、デフォルトで HTTP のバージョン 1.1 が使えるようになりました。
     10 * 自動リロード: 開発のために、 Tracd は ''auto_reload'' モードを使用しています。そのため、コード ( Trac 自身またはプラグインのコード ) を更新したときに、自動的にサーバが再起動します。
    1011
    1112== 欠点 == #Cons
    1213
    13  * 機能が少ない: Tracd に実装されている Web サーバはとてもシンプルで、 Apache HTTPD のように拡張性のある設定ができません。
     14 * 機能が少ない: Tracd に実装されている web サーバはとてもシンプルで、 Apache httpd のように拡張性のある設定ができません。
    1415 * ネイティブで HTTPS に対応しない: 代わりに [http://www.rickk.com/sslwrap/ sslwrap] または
    1516   [http://trac.edgewall.org/wiki/STunnelTracd stunnel -- tracd と stunnel を使うためのチュートリアル] または Apache の mod_proxy を使用します。
     
    4243== Windows サービスとしてインストールする == #InstallingasaWindowsService
    4344
    44 Windows サービスとしてインストールするには [http://www.google.com/search?q=srvany.exe SRVANY] を取得して起動します:
     45=== オプション 1 === #Option1
     46Windows のサービスとしてインストールするには、 [http://www.google.com/search?q=srvany.exe SRVANY] ユーティリティを入手し起動します:
    4547{{{
    4648 C:\path\to\instsrv.exe tracd C:\path\to\srvany.exe
     
    5860空白には意味があります。そのまま入力して下さい。
    5961
     62{{{#!div
     63一度、Windows サービスがインストールされると、上記の `reg add` コマンドを使用するよりも、レジストリエディタを起動するほうが簡単かもしれません。指定のパスへの移動:[[BR]]
     64`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tracd\Parameters`
     65
     663 つの文字列のパラメータが提供されています:
     67||!AppDirectory ||C:\Python26\ ||
     68||Application ||python.exe ||
     69||!AppParameters ||scripts\tracd-script.py -p 8080 ... ||
     70
     71Note: もし !AppDirectory が上記のように設定されているならば、実行ファイル ''と'' スクリプトのパス、パラメータの値は、設定したフォルダへの相対パスになります。ここ一点に絞って言うと、これにより Python をアップデートするときに変更箇所が限定されるため少しだけ楽になります。
     72(ドキュメントでは、 /full/path/to/htpasswd とフルパス指定するよう書いてあるかもしれませんが、これは、 .htpasswd ファイルについても同様のことが言えます;このファイルを Python ディレクトリ配下に配置したいと思わないかもしれません。)
     73}}}
     74
     75Windows 7 ユーザは、 srvany.exe は使用できないかもしれません。代わりに [http://www.google.com/search?q=winserv.exe WINSERV] ユーティリティを使用して、起動してください:
     76{{{
     77"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>"
     78
     79net start tracd
     80}}}
     81
     82=== オプション 2 === #Option2
     83
     84[http://trac-hacks.org/ Trac Hacks] より [http://trac-hacks.org/wiki/WindowsServiceScript WindowsServiceScript] を入手して下さい。 Trac のサービスを インストール、削除、開始、停止などできます。
     85
     86=== オプション 3 === #Option3
     87
     88cygwin の cygrunsrv.exe を使用することもできます:
     89{{{
     90$ cygrunsrv --install tracd --path /cygdrive/c/Python27/Scripts/tracd.exe --args '--port 8000 --env-parent-dir E:\IssueTrackers\Trac\Projects'
     91$ net start tracd
     92}}}
     93
    6094== 認証を使用する == #UsingAuthentication
    6195
    62 tracd は Apache の .htpasswd ファイルを使用できます:
    63 
    64 .htpasswd ファイルは htpasswd コマンドを使用して作成します:
    65 
    66 {{{
    67 sudo htpasswd -c /path/to/env/.htpasswd username
    68 }}}
    69 ユーザを追加する場合は以下の通りです:
    70 {{{
    71 sudo htpasswd /path/to/env/.htpasswd username2
    72 }}}
    73 tracd の起動オプションにファイルを指定してください:
    74 {{{
    75 tracd -p 8080 --basic-auth=environmentname,/fullpath/environmentname/.htpasswd,/fullpath/environmentname /fullpath/environmentname
    76 }}}
    77 
    78 
    79 Tracd は基本認証とダイジェスト認証の両方に対応しています。デフォルトはダイジェスト認証です; 基本認証を使用するためには、以降の例で使用する `--auth` を `--basic-auth` に置き換えて下さい。 (ダイアログに使用する "realm" を指定しなければなりません。 BASICAUTH には カンマ を末尾に指定した空の文字列を指定することができます。)
    80 
    81   ''基本認証への対応はバージョン 0.9 以降で追加されました。''
    82 
    83 認証を使用するための一般的なコマンドは以下の通りです:
    84 
    85 {{{
    86  $ tracd -p port --auth=base_project_dir,password_file_path,realm project_path
    87 }}}
    88 
     96Tracd は基本認証とダイジェスト認証の両方に対応しています。ダイジェスト認証の方がより安全です。以降の例ではダイジェスト認証を使用しています。; 基本認証を使用するためには、下記のコマンドライン入力時に `--auth` を `--basic-auth` に置き換えて下さい。
     97
     98認証を使用する際の一般的なフォーマット:
     99{{{
     100 $ tracd -p port --auth="base_project_dir,password_file_path,realm" project_path
     101}}}
    89102オプションについて:
    90 
    91  * '''base_project_dir''' はプロジェクトのベースディレクトリ; Note: これはプロジェクト名ではありません。そして Windows の環境においても、大文字と小文字を区別します。
    92  * '''password_file_path''' パスワードファイルのパス
    93  * '''realm''' レルム
    94  * '''project_path''' プロジェクトのパス
    95 
    96 使用例:
     103 * '''base_project_dir''': 下記の通りプロジェクトのベースのディレクトリを特定する:
     104   * 複数のプロジェクトを立てているとき: `project_path` への ''相対パス''
     105   * 1 つのみプロジェクトを立てているとき (`-s` オプション使用): プロジェクトのディレクトリの名前
     106 絶対パスを使用しないで下さい。 ''Note:'' このパラメータは、 Windows の環境であっても大文字小文字を区別します。
     107 * '''password_file_path''': パスワードファイルへのパス
     108 * '''realm''': realm の名前 ( なんでも指定できます )
     109 * '''project_path''': プロジェクトへのパス
     110
     111 * **`--auth`** 上記の例では、ダイジェスト認証を使用しています。基本認証を使用する際は `--auth` を `--basic-auth` に置き換えてください。基本認証は "realm" を必要としませんが、コマンドとしては、最後の引用句に空のレルム名前が直接続くことになるので、2つ目のコンマは必要になります。
     112
     113例:
    97114
    98115{{{
    99116 $ tracd -p 8080 \
    100    --auth=project1,/path/to/users.htdigest,mycompany.com /path/to/project1
    101 }}}
    102 もちろん、ダイジェストファイルは複数のプロジェクト間で共有することが出来ます:
     117   --auth="project1,/path/to/passwordfile,mycompany.com" /path/to/project1
     118}}}
     119
     120もちろん、パスワードファイルは 1 つ以上のプロジェクトで共有することができます。
    103121{{{
    104122 $ tracd -p 8080 \
    105    --auth=project1,/path/to/users.htdigest,mycompany.com \
    106    --auth=project2,/path/to/users.htdigest,mycompany.com \
     123   --auth="project1,/path/to/passwordfile,mycompany.com" \
     124   --auth="project2,/path/to/passwordfile,mycompany.com" \
    107125   /path/to/project1 /path/to/project2
    108126}}}
    109127
    110 ダイジェストファイルを共有するもうひとつの方法は、プロジェクトの名前に "*"
    111 を指定することです:
     128パスワードファイルを共有するもう一つの方法として、プロジェクトの名前を指定するところで、 "*" を使用します:
    112129{{{
    113130 $ tracd -p 8080 \
    114    --auth="*",/path/to/users.htdigest,mycompany.com \
     131   --auth="*,/path/to/users.htdigest,mycompany.com" \
    115132   /path/to/project1 /path/to/project2
    116133}}}
    117 `-s` パラメータを使用すると、一つの Trac environment をドメインのルートとして提供するようになり、プロジェクト名として `*` を使用せねばなりません。
    118 
    119 == htdigest パスワードファイルの設定方法 == #Howtosetupanhtdigestpasswordfile
     134
     135=== 基本認証: htpasswd パスワードを使用する === #BaseicAuthorizationUsingahtpasswdpasswordfile
     136このセクションでは、 `tracd` と Apache の .htpasswd ファイルの使用方法について記述します。
     137
     138  Note: htpasswd のフォーマットを解読するために、(少なくとも Python 2.6 は) fcrypt パッケージをインストールする必要があります。
     139  Trac のソースコードでは、まず `import crypt` を試みますが、
     140  Python 2.6 にそのようなパッケージはありません。
     141
     142Apache の `htpasswd` コマンドを使用して、 .htpasswd ファイルを作成します。 ( Apache を使用せずにこれらのファイルを作成する方法については [#GeneratingPasswordsWithoutApache 下記] を参照して下さい):
     143{{{
     144 $ sudo htpasswd -c /path/to/env/.htpasswd username
     145}}}
     146そしてユーザを追加します:
     147{{{
     148 $ sudo htpasswd /path/to/env/.htpasswd username2
     149}}}
     150
     151そして、 `tracd` をこのように起動します:
     152{{{
     153 $ tracd -p 8080 --basic-auth="projectdirname,/fullpath/environmentname/.htpasswd,realmname" /fullpath/environmentname
     154}}}
     155
     156例:
     157{{{
     158 $ tracd -p 8080 --basic-auth="testenv,/srv/tracenv/testenv/.htpasswd,My Test Env" /srv/tracenv/testenv
     159}}}
     160''Note:'' いくつかのプラットフォーム (OpenBSD) では、htpasswd に "-m" をパラメータで渡す必要があるかもしれません。
     161
     162=== ダイジェスト認証: htdigest パスワードファイルの設定方法 === #DigestauthentitionUsingahtdigestpasswordfile
    120163
    121164もし、 Apache がインストールされているなら、パスワードファイルを生成するのに、 htdigest コマンドを使用することができます。 'htdigest' とタイプして使用方法を見るか、詳細な使用方法を見るために Apache のマニュアルの [http://httpd.apache.org/docs/2.0/programs/htdigest.html このページ] を読んでください。ユーザを作成するたびに、パスワードを入力するように求められます。パスワードファイルの名前には好きな名前をつけることができますが、 `users.htdigest` というような名前にしておけば、ファイルに何が含まれているかを覚えておけるでしょう。このファイルは <projectname>/conf フォルダに [TracIni trac.ini] ファイルと一緒に置いておくとよいでしょう。
     
    123166引数 --auth なしで tracd をスタートできることに注意して下さい。ただし、 ''ログイン'' (英語版では ''Login'') リンクをクリックするとエラーになります。
    124167
    125 == Apache 以外の環境でパスワードを生成する == #GeneratingPasswordsWithoutApache
    126 
    127 もし Apache が使用できない場合でも、簡単な Python スクリプトでパスワードを生成できます:
     168=== Apache 以外の環境でパスワードを生成する === #GeneratingPasswordsWithoutApache
     169
     170基本認証は [http://aspirine.org/htpasswd_en.html online HTTP Password generator] を用いて完成させることができます。生成した password-hash をシステムの .htpasswd ファイルにコピーします。Windows 版の Python は htpasswd のデフォルトのハッシュタイプである "crypt" モジュールに対応していないので注意してください; MD5 パスワードハッシュには対応しているため、MD5 を使用するとよいでしょう。
     171
     172簡単な Python スクリプトで '''digest''' 認証のパスワードファイルを生成できます:
    128173
    129174{{{
     
    153198if (options.realm is not None):
    154199   realm = options.realm
    155    
     200
    156201# Generate the string to enter into the htdigest file
    157202kd = lambda x: md5(':'.join(x)).hexdigest()
     
    159204}}}
    160205
    161 Note: もし tracd を --basic-auth ではなくて、 --auth オプションを使用して起動するときに、上記のスクリプトを使わないといけないとしたら --auth の値に 'trac' を(シングルクォートなしで) 指定し、レルムを設定しなければなりません。(上記スクリプトを trac-digest.py として保存したとします)
    162 
    163 {{{
    164 python trac-digest.py -u username -p password >> c:\digest.txt
    165 tracd --port 8000 --auth=proj_name,c:\digest.txt,trac c:\path\to\proj_name
    166 }}}
    167 
    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:" を追加してください。
     206Note: 上記のスクリプトを使用する場合、 --auth の引数に '''`trac`''' を指定し、レルムを設定しなければなりません。使用例 (上記スクリプトを trac-digest.py として保存したとします):
     207
     208{{{
     209 $ python trac-digest.py -u username -p password >> c:\digest.txt
     210 $ tracd --port 8000 --auth=proj_name,c:\digest.txt,trac c:\path\to\proj_name
     211}}}
     212
     213==== `md5sum` を使用する
     214`md5sum` ユーティリティを使用するとダイジェスト認証のパスワードファイルを作成することができます:
     215{{{
     216user=
     217realm=
     218password=
     219path_to_file=
     220echo ${user}:${realm}:$(printf "${user}:${realm}:${password}" | md5sum - | sed -e 's/\s\+-//') > ${path_to_file}
     221}}}
     222
     223== リファレンス == #Reference
     224
     225これはリマインダとして、オンラインヘルプです。 (`tracd --help`):
     226{{{
     227Usage: tracd [options] [projenv] ...
     228
     229Options:
     230  --version             show program's version number and exit
     231  -h, --help            show this help message and exit
     232  -a DIGESTAUTH, --auth=DIGESTAUTH
     233                        [projectdir],[htdigest_file],[realm]
     234  --basic-auth=BASICAUTH
     235                        [projectdir],[htpasswd_file],[realm]
     236  -p PORT, --port=PORT  the port number to bind to
     237  -b HOSTNAME, --hostname=HOSTNAME
     238                        the host name or IP address to bind to
     239  --protocol=PROTOCOL   http|scgi|ajp|fcgi
     240  -q, --unquote         unquote PATH_INFO (may be needed when using ajp)
     241  --http10              use HTTP/1.0 protocol version instead of HTTP/1.1
     242  --http11              use HTTP/1.1 protocol version (default)
     243  -e PARENTDIR, --env-parent-dir=PARENTDIR
     244                        parent directory of the project environments
     245  --base-path=BASE_PATH
     246                        the initial portion of the request URL's "path"
     247  -r, --auto-reload     restart automatically when sources are modified
     248  -s, --single-env      only serve a single project without the project list
     249  -d, --daemonize       run in the background as a daemon
     250  --pidfile=PIDFILE     When daemonizing, file to which to write pid
     251  --umask=MASK          When daemonizing, file mode creation mask to use, in
     252                        octal notation (default 022)
     253}}}
     254
     255tracd を起動させたターミナルウィンドウを閉じる場合には、tracd がハングアップしないように -d オプションを使用してください。
    175256
    176257== Tips == #Tips
     
    187268例: ファイル名が `$TRAC_ENV/htdocs/software-0.1.tar.gz` だったとき、
    188269対応する URL は `/<project_name>/chrome/site/software-0.1.tar.gz` となります。
    189 Wiki には、相対リンクシンタックスを使用して、
    190 `[/<project_name>/chrome/site/software-0.1.tar.gz]` と書くことができます。 (訳注: `[/chrome/site/software-0.1.tar.gz]` が正しい)
    191 
    192 Trac の開発バージョンでは新しく `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> をサポートします。コマンドは以下の通りです。
     270代わりに `htdocs:software-0.1.tar.gz` (TracLinks のシンタックス) や `[/<project_name>/chrome/site/software-0.1.tar.gz]` (相対リンクのシンタックス) で記述することができます。
     271
     272 ''TracLinks における `htdocs:` のサポートは Trac のバージョン 0.10 で追加されました。''
     273
     274=== tracd をプロキシの背後で使用する === #Usingtracdbehindaproxy
     275
     276ある状況において tracd を Apache もしくは他のウェブサーバの背後で使用するときについてです。
     277
     278この状況において、間違ったホストやプロトコルにリダイレクトされてしまったなどの経験があるかもしれません。この場合 (そして、この場合に限って) `[trac] use_base_url_for_redirect` を `true` に設定することによって、リダイレクトを行なう際 Trac に `[trac] base_url` の値を強制的に使用させることができます。
     279
     280もし、`tracd` に接続するために AJP プロトコルを使用しているならば (flup をインストールしているならば可能です) 、ダブルクオテーションの問題にぶつかったことがあるかもしれません。その際は、 `--unquote` パラメータを追加することを考えてください。
     281
     282[http://trac.edgewall.org/wiki/TracOnWindowsIisAjp TracOnWindowsIisAjp], [http://trac.edgewall.org/wiki/TracNginxRecipe TracNginxRecipe] も参照してください。
     283
     284=== プロキシ背後の tracd の認証 === #Authenticationfortracdbehindaproxy
     285{{{--basic-auth}}} を使用する代わりに、tracd のインスタンスに外部認証を提供しても有効です。この方法については [http://trac.edgewall.org/ticket/9206 #9206] で議論されています。
     286
     287下記は Apache 2.2 、mod_proxy、mod_authnz_ldap を使用した場合の設定例です。
     288
     289まず Apache のネームスペースに tracd を定義します。
     290
     291{{{
     292<Location /project/proxified>
     293        Require ldap-group cn=somegroup, ou=Groups,dc=domain.com
     294        Require ldap-user somespecificusertoo
     295        ProxyPass http://localhost:8101/project/proxified/
     296        # Turns out we don't really need complicated RewriteRules here at all
     297        RequestHeader set REMOTE_USER %{REMOTE_USER}s
     298</Location>
     299}}}
     300
     301HTTP_REMOTE_USER ヘッダを有効な認証ソースとして認識させるためには単一ファイルのプラグインが必要です。'''HTTP_FOO_BAR''' のような HTTP ヘッダは '''Foo-Bar''' に変換されます。'''remote-user-auth.py''' のようなファイル名をつけ、'''proxified/plugins''' ディレクトリ内に配置してください:
     302{{{
     303#!python
     304from trac.core import *
     305from trac.config import BoolOption
     306from trac.web.api import IAuthenticator
     307
     308class MyRemoteUserAuthenticator(Component):
     309
     310    implements(IAuthenticator)
     311
     312    obey_remote_user_header = BoolOption('trac', 'obey_remote_user_header', 'false',
     313               """Whether the 'Remote-User:' HTTP header is to be trusted for user logins
     314                (''since ??.??').""")
     315
     316    def authenticate(self, req):
     317        if self.obey_remote_user_header and req.get_header('Remote-User'):
     318            return req.get_header('Remote-User')
     319        return None
     320
     321}}}
     322
     323TracIni にパラメータを追加します:
     324{{{
     325...
     326[trac]
     327...
     328obey_remote_user_header = true
     329...
     330}}}
     331
     332tracd を起動します:
     333{{{
     334tracd -p 8101 -r -s proxified --base-path=/project/proxified
     335}}}
     336
     337===  / (root) とは異なるベースパスで起動する === #Servingadifferentbasepaththan
     338Tracd は /<project> とは異なるベース URL でプロジェクトを提供することをサポートします。変更するためのパラメータは以下の通りです。
    201339{{{
    202340 $ tracd --base-path=/some/path
     
    204342
    205343----
    206 See also: TracInstall, TracCgi, TracModPython, TracGuide, [http://trac.edgewall.org/wiki/TracOnWindowsStandalone?version=13#RunningTracdasservice tracd.exe を Windows のサービスとして起動する]
     344See also: TracInstall, TracCgi, TracModPython, TracGuide, [trac:TracOnWindowsStandalone#RunningTracdasservice Windows 上での tracd.exe の実行]