Changes between Version 1 and Version 2 of TracStandalone


Ignore:
Timestamp:
Feb 24, 2010 5:37:18 PM (8 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracStandalone

    v1 v2  
    11= Tracd =
    22
    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].
     3Tracd is a lightweight standalone Trac web server.
     4It can be used in a variety of situations, from a test or development server to a multiprocess setup behind another web server used as a load balancer.
    45
    56== Pros ==
    67
    78 * 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 * Fast: Should be almost as fast as the [wiki:TracModPython mod_python] version (and much faster than the [wiki:TracCgi CGI]), even more so since version 0.12 where the HTTP/1.1 version of the protocol is enabled by default
    910 * 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).
    1011
    1112== Cons ==
    1213
    13  * Fewer features: Tracd implements a very simple web-server and is not as configurable or as scalable as Apache HTTPD.
     14 * Fewer features: Tracd implements a very simple web-server and is not as configurable or as scalable as Apache httpd.
    1415 * No native HTTPS support: [http://www.rickk.com/sslwrap/ sslwrap] can be used instead,
    1516   or [http://trac.edgewall.org/wiki/STunnelTracd stunnel -- a tutorial on how to use stunnel with tracd] or Apache with mod_proxy.
     
    4041To exit the server on Windows, be sure to use {{{CTRL-BREAK}}} -- using {{{CTRL-C}}} will leave a Python process running in the background.
    4142
     43== Installing as a Windows Service ==
     44
     45To install as a Windows service, get the [http://www.google.com/search?q=srvany.exe SRVANY] utility and run:
     46{{{
     47 C:\path\to\instsrv.exe tracd C:\path\to\srvany.exe
     48 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>"
     49 net start tracd
     50}}}
     51
     52'''DO NOT''' use {{{tracd.exe}}}.  Instead register {{{python.exe}}} directly with {{{tracd-script.py}}} as a parameter.  If you use {{{tracd.exe}}}, it will spawn the python process without SRVANY's knowledge.  This python process will survive a {{{net stop tracd}}}.
     53
     54If you want tracd to start automatically when you boot Windows, do:
     55{{{
     56 sc config tracd start= auto
     57}}}
     58
     59The spacing here is important.
    4260
    4361== Using Authentication ==
     
    4866
    4967{{{
    50 sudo htpasswd -c /path/to/env/.htpasswd username
     68 $ sudo htpasswd -c /path/to/env/.htpasswd username
    5169}}}
    5270then for additional users:
    5371{{{
    54 sudo htpasswd /var/www/html/.htpasswd-users username2
    55 }}}
    56 then for starting the tracd:
    57 {{{
    58 tracd -p 8080 --basic-auth=environmentname,/fullpath/environmentname/.htpasswd,/fullpath/environmentname /fullpath/environmentname
    59 }}}
    60 
     72 $ sudo htpasswd /path/to/env/.htpasswd username2
     73}}}
     74then for starting the tracd (on windows skip the "=" after --basic-auth):
     75{{{
     76 $ tracd -p 8080 --basic-auth=environmentname,/fullpath/environmentname/.htpasswd,/fullpath/environmentname /fullpath/environmentname
     77}}}
    6178
    6279Tracd 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. (You must still specify a dialogic "realm", which can be an empty string by trailing the BASICAUTH with a comma.)
     
    6481  ''Support for Basic authentication was added in version 0.9.''
    6582
    66 The general format for using authentication is:
     83The general format for using authentication is (on windows skip the "=" after --auth):
    6784
    6885{{{
     
    7794 * '''project_path''' path of the project
    7895
    79 Example:
     96Example (on windows skip the "=" after --auth):
    8097
    8198{{{
     
    95112{{{
    96113 $ tracd -p 8080 \
    97    --auth=*,/path/to/users.htdigest,mycompany.com \
     114   --auth="*",/path/to/users.htdigest,mycompany.com \
    98115   /path/to/project1 /path/to/project2
    99116}}}
     117If using the `-s` parameter for serving a Trac environment from the root of a domain, one must use `*` for the project name
    100118
    101119== How to set up an htdigest password file ==
     
    112130#!python
    113131from optparse import OptionParser
    114 import md5
     132# The md5 module is deprecated in Python 2.5
     133try:
     134    from hashlib import md5
     135except ImportError:
     136    from md5 import md5
     137realm = 'trac'
    115138
    116139# build the options
     
    121144parser.add_option("-p", "--password",action="store", dest="password", type = "string",
    122145                  help="the password to use")
     146parser.add_option("-r", "--realm",action="store", dest="realm", type = "string",
     147                  help="the realm in which to create the digest")
    123148(options, args) = parser.parse_args()
    124149
     
    126151if (options.username is None) or (options.password is None):
    127152   parser.error("You must supply both the username and password")
     153if (options.realm is not None):
     154   realm = options.realm
    128155   
    129156# Generate the string to enter into the htdigest file
    130 realm = 'trac'
    131 kd = lambda x: md5.md5(':'.join(x)).hexdigest()
     157kd = lambda x: md5(':'.join(x)).hexdigest()
    132158print ':'.join((options.username, realm, kd([options.username, realm, options.password])))
    133159}}}
     
    136162
    137163{{{
    138 python trac-digest.py -u username -p password >> c:\digest.txt
    139 tracd --port 8000 --auth=proj_name,c:\digest.txt,trac c:\path\to\proj_name
     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
    140166}}}
    141167
     
    144170It is possible to use md5sum utility to generate digest-password file using such method:
    145171{{{
    146 echo -e "${user}:trac:${password}\c" | md5sum - >>to-file
    147 }}}
    148 and manually delete " -" from the end and add "${user}:trac:" to the start of line from 'to-file'. You can see attachment:trac-digest-corrected.sh for detail.
     172 $ printf "${user}:trac:${password}" | md5sum - >>user.htdigest
     173}}}
     174and manually delete " -" from the end and add "${user}:trac:" to the start of line from 'to-file'.
    149175
    150176== Tips ==
     
    164190in the Wiki: `[/<project_name>/chrome/site/software-0.1.tar.gz]`
    165191
    166 The development version of Trac supports a new `htdocs:` TracLinks
     192Since 0.10, Trac supports a new `htdocs:` TracLinks
    167193syntax for the above. With this, the example link above can be written simply
    168194`htdocs:software-0.1.tar.gz`.
     
    172198
    173199=== Serving a different base path than / ===
    174 Tracd supports serving projects with different base urls then /<project>. The parameter name to change this is
    175 {{{
    176 tracd --base-path=/some/path
     200Tracd supports serving projects with different base urls than /<project>. The parameter name to change this is
     201{{{
     202 $ tracd --base-path=/some/path
    177203}}}
    178204
    179205----
    180 See also: TracInstall, TracCgi, TracModPython, TracGuide
     206See also: TracInstall, TracCgi, TracModPython, TracGuide, [trac:TracOnWindowsStandalone?version=13#RunningTracdasservice Running tracd.exe as a Windows service], [trac:TracOnWindowsIisAjp], [trac:TracNginxRecipe]