User Tools

Site Tools


tracstandalone

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

tracstandalone [2015/06/09 15:23] (current)
Line 1: Line 1:
 +====== Tracd ======
 +
 +Tracd is a lightweight standalone Trac web server. In most cases it's easier to setup and runs faster than the [[:TracCgi|CGI script]].
 +
 +===== Pros =====
 +
 +  * Fewer dependencies: You don't need to install apache or any other web-server.
 +  * Fast: Should be almost as fast as the [[:TracModPython|mod_python]] version (and much faster than the [[:TracCgi|CGI]]).
 +  * 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).
 +
 +===== Cons =====
 +
 +  * Fewer features: Tracd implements a very simple web-server and is not as configurable or as scalable as Apache HTTPD.
 +  * No native HTTPS support: [[http://www.rickk.com/sslwrap/|sslwrap]] can be used instead,
 +   or [[http://trac.edgewall.org/wiki/STunnelTracd|stunnel -- a tutorial on how to use stunnel with tracd]] or Apache with mod_proxy.
 +
 +===== Usage examples =====
 +
 +A single project on port 8080. (http://localhost:8080/)
 +<code>
 + $ tracd -p 8080 /path/to/project
 +</code>
 +
 +With more than one project. (http://localhost:8080/project1/ and http://localhost:8080/project2/)
 +<code>
 + $ tracd -p 8080 /path/to/project1 /path/to/project2
 +</code>
 +
 +
 +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
 +different projects unique. So if you use `/project1/path/to` and `/project2/path/to`, you will only see the second project.
 +
 +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:
 +<code>
 + $ tracd -p 8080 -e /path/to
 +</code>
 +
 +
 +===== Using Authentication =====
 +
 +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.
 +
 +  //Support for Basic authentication was added in version 0.9.//
 +
 +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:
 +<code>
 + $ tracd -p 8080 --auth project1,/path/to/users.htdigest,mycompany.com /path/to/project1
 +</code>
 +
 +
 +**Note**: the project "name" passed to the `--auth` option is the base name of the project environment directory.
 +
 +Of course, the digest file can be be shared so that it is used for more than one project:
 +<code>
 + $ tracd -p 8080 \
 +   --auth project1,/path/to/users.htdigest,mycompany.com \
 +   --auth project2,/path/to/users.htdigest,mycompany.com \
 +   /path/to/project1 /path/to/project2
 +</code>
 +
 +
 +Another way to share the digest file is to specify "*"
 +for the project name:
 +<code>
 + $ tracd -p 8080 \
 +   --auth *,/path/to/users.htdigest,mycompany.com \
 +   /path/to/project1 /path/to/project2
 +</code>
 +
 +
 +===== How to set up an htdigest password file =====
 +
 +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.
 +
 +Note that you can start tracd without the --auth argument, but if you click on the //Login// link you will get an error.
 +
 +===== Generating Passwords Without Apache =====
 +
 +If you don't have Apache available, you can use this simple Python script to generate your passwords:
 +
 +<code>
 +from optparse import OptionParser
 +import md5
 +
 +# build the options
 +usage = "usage: %prog [[:options]]"
 +parser = OptionParser(usage=usage)
 +parser.add_option("-u", "--username",action="store", dest="username", type = "string",
 +                  help="the username for whom to generate a password")
 +parser.add_option("-p", "--password",action="store", dest="password", type = "string",
 +                  help="the password to use")
 +(options, args) = parser.parse_args()
 +
 +# check options
 +if (options.username is None) or (options.password is None):
 +   parser.error("You must supply both the username and password")
 +   
 +# Generate the string to enter into the htdigest file
 +realm = 'trac'
 +kd = lambda x: md5.md5(':'.join(x)).hexdigest()
 +print ':'.join((options.username, realm, kd([[:options.username,|realm, options.password]])))
 +</code>
 +
 +
 +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):
 +
 +<code>
 +python trac-digest.py -u username -p password >> c:\digest.txt
 +python tracd --port 8000 --auth proj_name,c:\digest.txt,trac c:\path\to\proj_name
 +</code>
 +
 +
 +===== Tips =====
 +
 +==== Serving static content ====
 +
 +If `tracd` is the only webserver used for the project, 
 +it can also be used to distribute static content 
 +(tarballs, Doxygen documentation, etc.)
 +
 +This static content should be put in the `$TRAC_ENV/htdocs` folder,
 +and is accessed by URLs like `<project_URL>/chrome/site/...`.
 +
 +Example: given a `$TRAC_ENV/htdocs/software-0.1.tar.gz` file,
 +the corresponding relative URL would be `/<project_name>/chrome/site/software-0.1.tar.gz`, 
 +which in turn can be written using the relative link syntax
 +in the Wiki: `[[::<project_name>:chrome:site:software-0.1.tar.gz]]` 
 +
 +The development version of Trac supports a new `htdocs:` TracLinks 
 +syntax for the above. With this, the example link above can be written simply 
 +`htdocs:software-0.1.tar.gz`. 
 +
 +----
 +See also: TracInstall, TracCgi, TracModPython, TracGuide
 +
 +----
 +**Translation:**
 +  * [[https://opensvn.csie.org/traccgi/trac_rus/wiki/StandAloneTracForTeapot|Russian]] (перевод на Русский)
 +
  
tracstandalone.txt · Last modified: 2015/06/09 15:23 (external edit)