Changes between Initial Version and Version 1 of TracStandalone


Ignore:
Timestamp:
Apr 10, 2015, 1:03:53 PM (10 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracStandalone

    v1 v1  
     1** Note: このページのドキュメントは Trac 1.0 に対応しています。それ以前のバージョンについては [[0.12/TracStandalone]] を参照してください。 **
     2= Tracd = #Tracd
     3
     4Tracd は軽量なスタンドアロンの Trac web サーバです。
     5Tracd は様々な場面で使用することができます。テストや開発用のサーバからロードバランサとして使用されているもう一つのウェブサーバの後段に複数のプロセスを配置するときなどに使われます。
     6
     7== 利点 == #Pros
     8
     9 * 依存性が低い: apache その他 web サーバをインストールする必要がありません
     10 * 速い: [wiki:TracModPython mod_python] バージョンと同じくらい速いでしょう。 ([wiki:TracCgi CGI] よりはずっと速い)。そして、 バージョン 0.12 以降では、デフォルトで HTTP のバージョン 1.1 が使えるようになりました
     11 * 自動リロード: 開発のために、 Tracd は ''auto_reload'' モードを使用しています。そのため、コード ( Trac 自身またはプラグインのコード ) を更新したときに、自動的にサーバが再起動します
     12
     13== 欠点 == #Cons
     14
     15 * 機能が少ない: Tracd に実装されている web サーバはとてもシンプルで、 Apache httpd のように拡張性のある設定ができません
     16 * ネイティブで HTTPS に対応しない: 代わりに [http://www.rickk.com/sslwrap/ sslwrap] または
     17   [trac:STunnelTracd stunnel -- tracd と stunnel を使うためのチュートリアル] または Apache の mod_proxy を使用します
     18
     19== 使用例 == #Usageexamples
     20
     21単一のプロジェクトをポート 8080 でホストします。 (http://localhost:8080/)
     22{{{
     23 $ tracd -p 8080 /path/to/project
     24}}}
     25厳密に言うと、この状態では Trac は ''localhost のみ'' ではなく、ネットワーク越しの全員からアクセス可能になっています。 ''--hostname'' オプションを使用すると接続元を制限できます。
     26{{{
     27 $ tracd --hostname=localhost -p 8080 /path/to/project
     28}}}
     29複数のプロジェクトをホストする場合はこうです (http://localhost:8080/project1/ と http://localhost:8080/project2/)
     30{{{
     31 $ tracd -p 8080 /path/to/project1 /path/to/project2
     32}}}
     33
     34Trac は異なるプロジェクト間での URL の一意性を保つために、パスの一番最後の文字列 (訳注: basename) を使用するため、プロジェクト間でパスの一番最後の部分を同じにすることは出来ません。
     35もし、 `/project1/path/to` と `/project2/path/to` を同時に指定した場合、二つ目のプロジェクトだけしか見えなくなります。
     36
     37複数のプロジェクトを動かすもう一つの方法は、 `-e` オプションで親ディレクトリを指定し、サブディレクトリに TracEnvironment を配置します。上記の例は以下のように書き換えられます:
     38{{{
     39 $ tracd -p 8080 -e /path/to
     40}}}
     41
     42Windows でサーバを終了するには必ず {{{CTRL-BREAK}}} を使用してください。 -- {{{CTRL-C}}} を使用すると Python のプロセスがバックグラウンドで起動したままになるでしょう。
     43
     44== Windows サービスとしてインストールする == #InstallingasaWindowsService
     45
     46=== オプション 1 === #Option1
     47Windows のサービスとしてインストールするには、 [http://www.google.com/search?q=srvany.exe SRVANY] ユーティリティを入手し起動します:
     48{{{
     49 C:\path\to\instsrv.exe tracd C:\path\to\srvany.exe
     50 reg add HKLM\SYSTEM\CurrentControlSet\Services\tracd\Parameters /v Application /d "\"C:\path\to\python.exe\" \"C:\path\to\python\scripts\tracd-script.py\" <your tracd parameters>"
     51 net start tracd
     52}}}
     53
     54{{{tracd.exe}}} は使用 '''しない''' で下さい。代わりに {{{python.exe}}} を直接登録し、引数に {{{tracd-script.py}}} を使用して下さい。 {{{tracd.exe}}} を使用してしまうと、 python プロセスが SRVANY の制御下ではなくなってしまうため、 {{{net stop tracd}}} を使用しても python プロセスが残留してしまいます。
     55
     56Windows の起動時に tracd を自動起動させることもできます:
     57{{{
     58 sc config tracd start= auto
     59}}}
     60
     61空白には意味があります。そのまま入力して下さい。
     62
     63{{{#!div
     64一度、Windows サービスがインストールされると、上記の `reg add` コマンドを使用するよりも、レジストリエディタを起動するほうが簡単かもしれません。指定のパスへの移動:[[BR]]
     65`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tracd\Parameters`
     66
     673 つの文字列のパラメータが提供されています:
     68||!AppDirectory ||C:\Python26\ ||
     69||Application ||python.exe ||
     70||!AppParameters ||scripts\tracd-script.py -p 8080 ... ||
     71
     72Note: もし !AppDirectory が上記のように設定されているならば、実行ファイル ''と'' スクリプトのパス、パラメータの値は、設定したフォルダへの相対パスになります。ここ一点に絞って言うと、これにより Python をアップデートするときに変更箇所が限定されるため少しだけ楽になります。
     73(ドキュメントでは、 /full/path/to/htpasswd とフルパス指定するよう書いてあるかもしれませんが、これは、 .htpasswd ファイルについても同様のことが言えます。このファイルを Python ディレクトリ配下に配置したいと思わないかもしれません。)
     74}}}
     75
     76Windows 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
     80net 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
     89cygwin の 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
     95== 認証を使用する == #UsingAuthentication
     96
     97Tracd は基本認証とダイジェスト認証の両方に対応しています。ダイジェスト認証の方がより安全です。以降の例ではダイジェスト認証を使用しています。基本認証を使用するためには、下記のコマンドライン入力時に `--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
     143Apache の `htpasswd` コマンドを使用して、 .htpasswd ファイルを作成します。 ( Apache を使用せずにこれらのファイルを作成する方法については [#GeneratingPasswordsWithoutApache 下記] を参照して下さい):
     144{{{
     145 $ sudo htpasswd -c /path/to/env/.htpasswd username
     146}}}
     147そしてユーザを追加します:
     148{{{
     149 $ sudo htpasswd /path/to/env/.htpasswd username2
     150}}}
     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
     164
     165もし、 Apache がインストールされているなら、パスワードファイルを生成するのに、 htdigest コマンドを使用することができます。 'htdigest' とタイプして使用方法を見るか、詳細な使用方法を見るために Apache のマニュアルの [http://httpd.apache.org/docs/2.0/programs/htdigest.html このページ] を読んでください。ユーザを作成するたびに、パスワードを入力するように求められます。パスワードファイルの名前には好きな名前をつけることができますが、 `users.htdigest` というような名前にしておけば、ファイルに何が含まれているかを覚えておけるでしょう。このファイルは <projectname>/conf フォルダに [TracIni trac.ini] ファイルと一緒に置いておくとよいでしょう。
     166
     167引数 `--auth` なしで tracd をスタートできることに注意して下さい。ただし、 ''ログイン'' (英語版では ''Login'') リンクをクリックするとエラーになります。
     168
     169=== Apache 以外の環境でパスワードを生成する === #GeneratingPasswordsWithoutApache
     170
     171基本認証は [http://aspirine.org/htpasswd_en.html online HTTP Password generator] を用いて完成させることができます。これは `SHA-1` もサポートしています。生成した password-hash をシステムの .htpasswd ファイルにコピーします。Windows 版の Python は htpasswd のデフォルトのハッシュタイプである "crypt" モジュールに対応していないので注意してください。MD5 パスワードハッシュには対応しているため、MD5 を使用するとよいでしょう。
     172
     173簡単な Python スクリプトで '''digest''' 認証のパスワードファイルを生成できます:
     174
     175{{{
     176#!python
     177from optparse import OptionParser
     178# The md5 module is deprecated in Python 2.5
     179try:
     180    from hashlib import md5
     181except ImportError:
     182    from md5 import md5
     183realm = 'trac'
     184
     185# build the options
     186usage = "usage: %prog [options]"
     187parser = OptionParser(usage=usage)
     188parser.add_option("-u", "--username",action="store", dest="username", type = "string",
     189                  help="the username for whom to generate a password")
     190parser.add_option("-p", "--password",action="store", dest="password", type = "string",
     191                  help="the password to use")
     192parser.add_option("-r", "--realm",action="store", dest="realm", type = "string",
     193                  help="the realm in which to create the digest")
     194(options, args) = parser.parse_args()
     195
     196# check options
     197if (options.username is None) or (options.password is None):
     198   parser.error("You must supply both the username and password")
     199if (options.realm is not None):
     200   realm = options.realm
     201
     202# Generate the string to enter into the htdigest file
     203kd = lambda x: md5(':'.join(x)).hexdigest()
     204print ':'.join((options.username, realm, kd([options.username, realm, options.password])))
     205}}}
     206
     207Note: 上記のスクリプトを使用する場合、 `--auth` の引数に '''`trac`''' を指定し、レルムを設定しなければなりません。使用例 (上記スクリプトを trac-digest.py として保存したとします):
     208
     209{{{
     210 $ python trac-digest.py -u username -p password >> c:\digest.txt
     211 $ tracd --port 8000 --auth=proj_name,c:\digest.txt,trac c:\path\to\proj_name
     212}}}
     213
     214==== `md5sum` を使用する
     215`md5sum` ユーティリティを使用するとダイジェスト認証のパスワードファイルを作成することができます:
     216{{{
     217user=
     218realm=
     219password=
     220path_to_file=
     221echo ${user}:${realm}:$(printf "${user}:${realm}:${password}" | md5sum - | sed -e 's/\s\+-//') > ${path_to_file}
     222}}}
     223
     224== リファレンス == #Reference
     225
     226これはリマインダとして、オンラインヘルプです。 (`tracd --help`):
     227{{{
     228Usage: tracd [options] [projenv] ...
     229
     230Options:
     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
     258tracd を起動させたターミナルウィンドウを閉じる場合には、tracd がハングアップしないように -d オプションを使用してください。
     259
     260== Tips == #Tips
     261
     262=== 静的なリソースを扱う === #Servingstaticcontent
     263
     264もし、 `tracd` が単一のプロジェクトのみを扱う Web サーバだとしたら、
     265静的なリソースを割り当てるのに使用することができます。
     266(tar アーカイブ, Doxygen ドキュメントなど)
     267
     268この静的なリソースは `$TRAC_ENV/htdocs` フォルダに置き、
     269`<project_URL>/chrome/site/...` という URL でアクセスします。
     270
     271例: ファイル名が `$TRAC_ENV/htdocs/software-0.1.tar.gz` だったとき、
     272対応する URL は `/<project_name>/chrome/site/software-0.1.tar.gz` となります。
     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
     304HTTP_REMOTE_USER ヘッダを有効な認証ソースとして認識させるためには単一ファイルのプラグインが必要です。'''HTTP_FOO_BAR''' のような HTTP ヘッダは '''Foo-Bar''' に変換されます。'''remote-user-auth.py''' のようなファイル名をつけ、'''proxified/plugins''' ディレクトリ内に配置してください:
     305{{{
     306#!python
     307from trac.core import *
     308from trac.config import BoolOption
     309from trac.web.api import IAuthenticator
     310
     311class 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
     326TracIni にパラメータを追加します:
     327{{{
     328...
     329[trac]
     330...
     331obey_remote_user_header = true
     332...
     333}}}
     334
     335tracd を起動します:
     336{{{
     337tracd -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]
     345remote-user-auth.* = enabled
     346[inherit]
     347plugins_dir = /srv/trac/plugins
     348[trac]
     349obey_remote_user_header = true
     350}}}
     351
     352各プロジェクトの config (例えば `/srv/trac/envs/myenv`):
     353{{{
     354[inherit]
     355file = /srv/trac/conf/trac.ini
     356}}}
     357
     358===  / (root) とは異なるベースパスで起動する === #Servingadifferentbasepaththan
     359Tracd は /<project> とは異なるベース URL でプロジェクトを提供することをサポートします。変更するためのパラメータは以下の通りです。
     360{{{
     361 $ tracd --base-path=/some/path
     362}}}
     363
     364----
     365See also: TracInstall, TracCgi, TracModPython, TracGuide, [trac:TracOnWindowsStandalone#RunningTracdasservice Windows 上での tracd.exe の実行]