| 1 | = Tracd = |
| 2 | |
| 3 | Tracd is a lightweight standalone Trac web server. In most cases it's easier to setup and runs faster than the [wiki:TracCgi CGI script]. |
| 4 | |
| 5 | == Pros == |
| 6 | |
| 7 | * Fewer dependencies: You don't need to install apache or any other web-server. |
| 8 | * Fast: Should be almost as fast as the [wiki:TracModPython mod_python] version (and much faster than the [wiki:TracCgi CGI]). |
| 9 | * Automatic reloading: For development, Tracd can be used in ''auto_reload'' mode, which will automatically restart the server whenever you make a change to the code (in Trac itself or in a plugin). |
| 10 | |
| 11 | == Cons == |
| 12 | |
| 13 | * Fewer features: Tracd implements a very simple web-server and is not as configurable or as scalable as Apache HTTPD. |
| 14 | * No native HTTPS support: [http://www.rickk.com/sslwrap/ sslwrap] can be used instead, |
| 15 | or [http://trac.edgewall.org/wiki/STunnelTracd stunnel -- a tutorial on how to use stunnel with tracd] or Apache with mod_proxy. |
| 16 | |
| 17 | == Usage examples == |
| 18 | |
| 19 | A single project on port 8080. (http://localhost:8080/) |
| 20 | {{{ |
| 21 | $ tracd -p 8080 /path/to/project |
| 22 | }}} |
| 23 | With more than one project. (http://localhost:8080/project1/ and http://localhost:8080/project2/) |
| 24 | {{{ |
| 25 | $ tracd -p 8080 /path/to/project1 /path/to/project2 |
| 26 | }}} |
| 27 | |
| 28 | You can't have the last portion of the path identical between the projects since Trac uses that name to keep the URLs of the |
| 29 | different projects unique. So if you use `/project1/path/to` and `/project2/path/to`, you will only see the second project. |
| 30 | |
| 31 | An alternative way to serve multiple projects is to specify a parent directory in which each subdirectory is a Trac project, using the `-e` option. The example above could be rewritten: |
| 32 | {{{ |
| 33 | $ tracd -p 8080 -e /path/to |
| 34 | }}} |
| 35 | |
| 36 | == Using Authentication == |
| 37 | |
| 38 | Tracd provides support for both Basic and Digest authentication. The default is to use Digest; to use Basic authentication, replace `--auth` with `--basic-auth` in the examples below, and omit the realm. |
| 39 | |
| 40 | ''Support for Basic authentication was added in version 0.9.'' |
| 41 | |
| 42 | If the file `/path/to/users.htdigest` contains user accounts for project1 with the realm "mycompany.com", you'd use the following command-line to start tracd: |
| 43 | {{{ |
| 44 | $ tracd -p 8080 --auth project1,/path/to/users.htdigest,mycompany.com /path/to/project1 |
| 45 | }}} |
| 46 | |
| 47 | '''Note''': the project "name" passed to the `--auth` option is the base name of the project environment directory. |
| 48 | |
| 49 | Of course, the digest file can be be shared so that it is used for more than one project: |
| 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 | Another way to share the digest file is to specify "*" |
| 58 | for the project name: |
| 59 | {{{ |
| 60 | $ tracd -p 8080 \ |
| 61 | --auth *,/path/to/users.htdigest,mycompany.com \ |
| 62 | /path/to/project1 /path/to/project2 |
| 63 | }}} |
| 64 | |
| 65 | == How to set up an htdigest password file == |
| 66 | |
| 67 | If you have Apache available, you can use the htdigest command to generate the password file. Type 'htdigest' to get some usage instructions, or read [http://httpd.apache.org/docs/2.0/programs/htdigest.html this page] from the Apache manual to get precise instructions. You'll be prompted for a password to enter for each user that you create. For the name of the password file, you can use whatever you like, but if you use something like `users.htdigest` it will remind you what the file contains. As a suggestion, put it in your <projectname>/conf folder along with the [TracIni trac.ini] file. |
| 68 | |
| 69 | Note that you can start tracd without the --auth argument, but if you click on the ''Login'' link you will get an error. |
| 70 | |
| 71 | == Generating Passwords Without Apache == |
| 72 | |
| 73 | If you don't have Apache available, you can use this simple Python script to generate your passwords: |
| 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: If you use the above script you must use the --auth option to tracd, not --basic-auth, and you must set the realm in the --auth value to 'trac' (without the quotes). Example usage (assuming you saved the script as 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 | === Serving static content === |
| 108 | |
| 109 | If `tracd` is the only webserver used for the project, |
| 110 | it can also be used to distribute static content |
| 111 | (tarballs, Doxygen documentation, etc.) |
| 112 | |
| 113 | This static content should be put in the `$TRAC_ENV/htdocs` folder, |
| 114 | and is accessed by URLs like `<project_URL>/chrome/site/...`. |
| 115 | |
| 116 | Example: given a `$TRAC_ENV/htdocs/software-0.1.tar.gz` file, |
| 117 | the corresponding relative URL would be `/<project_name>/chrome/site/software-0.1.tar.gz`, |
| 118 | which in turn can be written using the relative link syntax |
| 119 | in the Wiki: `[/<project_name>/chrome/site/software-0.1.tar.gz]` |
| 120 | |
| 121 | The development version of Trac supports a new `htdocs:` TracLinks |
| 122 | syntax for the above. With this, the example link above can be written simply |
| 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] (??????? ?? ???????) |