Changes between Version 5 and Version 6 of TracStandalone


Ignore:
Timestamp:
06/19/26 03:16:24 (3 days ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracStandalone

    v5 v6  
    66== Pros
    77
    8  * Fewer dependencies: You don't need to install apache or any other web-server.
    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
    10  * 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).
     8 * Fewer dependencies: You don't need to install Apache or any other web-server.
     9 * Fast: Should be almost as fast as the [wiki:TracModWSGI mod_wsgi] version (and much faster than the [wiki:TracCgi CGI]), especially since the HTTP/1.1 version of the protocol is enabled by default.
     10 * 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, for example in Trac itself or in a plugin.
    1111
    1212== Cons
    1313
    1414 * Fewer features: Tracd implements a very simple web-server and is not as configurable or as scalable as Apache httpd.
    15  * No native HTTPS support: [http://www.rickk.com/sslwrap/ sslwrap] can be used instead,
    16    or [trac:wiki:STunnelTracd stunnel -- a tutorial on how to use stunnel with tracd] or Apache with mod_proxy.
    1715
    1816== Usage examples
     
    3129}}}
    3230
    33 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
    34 different projects unique. So if you use `/project1/path/to` and `/project2/path/to`, you will only see the second project.
     31You 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.
    3532
    3633An 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:
     
    4138There is support for the HTTPS protocol (//Since 1.3.4//). Specify the path to the PEM certificate file and keyfile using the `--certfile` and `--keyfile` options. You can specify just the `--certfile` option if you have a [https://docs.python.org/2/library/ssl.html#combined-key-and-certificate combined key and certificate].
    4239
    43 To exit the server on Windows, be sure to use `CTRL-BREAK` -- using `CTRL-C` will leave a Python process running in the background.
     40To exit the server on Windows, be sure to use `CTRL-BREAK`. Using `CTRL-C` will leave a Python process running in the background.
    4441
    4542== Installing as a Windows Service
    4643
    4744=== Option 1
     45
    4846To install as a Windows service, get the [https://www.google.com/search?q=srvany.exe SRVANY] utility and run:
    4947{{{#!cmd
     
    5452
    5553{{{#!div style="border: 1pt dotted; margin: 1em;"
    56 **Attention:** Do not use `tracd.exe` directly.  Instead register `python.exe` directly with `tracd.exe` 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`.
     54**Attention:** Do not use `tracd.exe` directly. Instead register `python.exe` directly with `tracd.exe` 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`.
    5755}}}
    5856
     
    7371||!AppParameters ||scripts\tracd.exe -p 8080 ... ||
    7472
    75 Note that, if the !AppDirectory is set as above, the paths of the executable ''and'' of the script name and parameter values are relative to the directory.  This makes updating Python a little simpler because the change can be limited, here, to a single point.
    76 (This is true for the path to the .htpasswd file, as well, despite the documentation calling out the /full/path/to/htpasswd; however, you may not wish to store that file under the Python directory.)
     73Note that, if the !AppDirectory is set as above, the paths of the executable ''and'' of the script name and parameter values are relative to the directory. This makes updating Python a little simpler because the change can be limited, here, to a single point.
     74This is true for the path to the .htpasswd file as well, despite the documentation calling out the /full/path/to/htpasswd; however, you may not wish to store that file under the Python directory.
    7775}}}
    7876
     
    9795== Using Authentication
    9896
    99 Tracd allows you to run Trac without the need for Apache, but you can take advantage of Apache's password tools (`htpasswd` and `htdigest`) to easily create a password file in the proper format for tracd to use in authentication. (It is also possible to create the password file without `htpasswd` or `htdigest`; see below for alternatives)
     97Tracd allows you to run Trac without the need for Apache, but you can take advantage of Apache's password tools (`htpasswd` and `htdigest`) to easily create a password file in the proper format for tracd to use in authentication. It is also possible to create the password file without `htpasswd` or `htdigest`; see below for alternatives.
    10098
    10199{{{#!div style="border: 1pt dotted; margin: 1em"
     
    143141
    144142=== Basic Authorization: Using a htpasswd password file
     143
    145144This section describes how to use `tracd` with Apache .htpasswd files.
    146145
    147   Note: On Windows It is necessary to install the [https://pypi.python.org/pypi/passlib passlib]
    148   package in order to decode some htpasswd formats. Only `SHA-1` passwords (since Trac 1.0)
    149   work without this module.
     146'''Note''': On Windows It is necessary to install the [https://pypi.python.org/pypi/passlib passlib] package in order to decode some htpasswd formats. Only `SHA-1` passwords (since Trac 1.0) work without this module.
    150147
    151148To create a .htpasswd file use Apache's `htpasswd` command (see [#GeneratingPasswordsWithoutApache below] for a method to create these files without using Apache):
     
    167164 $ tracd -p 8080 --basic-auth="project,/srv/tracenv/testenv/.htpasswd,My Test Env" /path/to/project
    168165}}}
    169 ''Note:'' You might need to pass "-m" as a parameter to htpasswd on some platforms (OpenBSD).
     166
     167'''Note:''' You might need to pass "-m" as a parameter to htpasswd on some platforms (OpenBSD).
    170168
    171169=== Digest authentication: Using a htdigest password file
     
    179177Basic Authorization can be accomplished via this [http://aspirine.org/htpasswd_en.html online HTTP Password generator] which also supports `SHA-1`.  Copy the generated password-hash line to the .htpasswd file on your system. Note that Windows Python lacks the "crypt" module that is the default hash type for htpasswd. Windows Python can grok MD5 password hashes just fine and you should use MD5.
    180178
    181 Trac also provides `htpasswd` and `htdigest` scripts in `contrib`:
     179Trac also provides `htpasswd` and `htdigest` scripts in [https://trac.edgewall.org/browser/trunk/contrib contrib] (also available in the tar or zip archive):
    182180{{{#!sh
    183181$ ./contrib/htpasswd.py -cb htpasswd user1 user1
     
    191189
    192190==== Using `md5sum`
     191
    193192It is possible to use `md5sum` utility to generate digest-password file:
    194193{{{#!sh
     
    207206             [-a DIGESTAUTH | --basic-auth BASICAUTH] [-p PORT] [-b HOSTNAME]
    208207             [--protocol {http,https,scgi,ajp,fcgi}] [--certfile CERTFILE]
    209              [--keyfile KEYFILE] [-q] [--base-path BASE_PATH] [--http10 | --http11]
    210              [-r | -d] [--pidfile PIDFILE] [--umask MASK] [--group GROUP] [--user USER]
    211              [envs [envs ...]]
     208             [--keyfile KEYFILE] [-q] [--base-path BASE_PATH]
     209             [--http10 | --http11] [-r | -d] [--pidfile PIDFILE] [--umask MASK]
     210             [--group GROUP] [--user USER]
     211             [envs ...]
    212212
    213213positional arguments:
    214214  envs                  path of the project environment(s)
    215215
    216 optional arguments:
     216options:
    217217  -h, --help            show this help message and exit
    218218  --version             show program's version number and exit
     
    231231  --certfile CERTFILE   PEM certificate file for HTTPS
    232232  --keyfile KEYFILE     PEM key file for HTTPS
    233   -q, --unquote         unquote PATH_INFO (may be needed when using the ajp protocol)
     233  -q, --unquote         unquote PATH_INFO (may be needed when using the ajp
     234                        protocol)
    234235  --base-path BASE_PATH
    235236                        the initial portion of the request URL's "path"
     
    239240  -d, --daemonize       run in the background as a daemon
    240241  --pidfile PIDFILE     file to write pid when daemonizing
    241   --umask MASK          when daemonizing, file mode creation mask to use, in octal
    242                         notation (default: 022)
     242  --umask MASK          when daemonizing, file mode creation mask to use, in
     243                        octal notation (default: 022)
    243244  --group GROUP         the group to run as
    244245  --user USER           the user to run as
     
    251252=== Serving static content
    252253
    253 If `tracd` is the only web server used for the project,
    254 it can also be used to distribute static content
    255 (tarballs, Doxygen documentation, etc.)
    256 
    257 This static content should be put in the `$TRAC_ENV/htdocs` folder,
    258 and is accessed by URLs like `<project_URL>/chrome/site/...`.
    259 
    260 Example: given a `$TRAC_ENV/htdocs/software-0.1.tar.gz` file,
    261 the corresponding relative URL would be `/<project_name>/chrome/site/software-0.1.tar.gz`,
    262 which in turn can be written as `htdocs:software-0.1.tar.gz` (TracLinks syntax) or `[/<project_name>/chrome/site/software-0.1.tar.gz]` (relative link syntax).
     254If `tracd` is the only web server used for the project, it can also be used to distribute static content, such as tarballs, Doxygen documentation, etc.
     255
     256This static content should be put in the `$TRAC_ENV/htdocs` folder, and is accessed by URLs like `<project_URL>/chrome/site/...`.
     257
     258Example: 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 as `htdocs:software-0.1.tar.gz` (TracLinks syntax) or `[/<project_name>/chrome/site/software-0.1.tar.gz]` (relative link syntax).
    263259
    264260=== Using tracd behind a proxy
     
    273269
    274270=== Authentication for tracd behind a proxy
    275 It is convenient to provide central external authentication to your tracd instances, instead of using `--basic-auth`. There is some discussion about this in [trac:#9206].
     271
     272It is convenient to provide central external authentication to your tracd instances, instead of using `--basic-auth`. See also [trac:#9206].
    276273
    277274Below is example configuration based on Apache 2.2, mod_proxy, mod_authnz_ldap.
     
    323320}}}
    324321
    325 Note that if you want to install this plugin for all projects, you have to put it in your [TracPlugins#Plugindiscovery global plugins_dir] and enable it in your global trac.ini.
     322Note that if you want to install this plugin for all projects, you have to put it in your [TracPlugins#Plugindiscovery global plugins_directory] and enable it in your global `trac.ini`.
    326323
    327324Global config (e.g. `/srv/trac/conf/trac.ini`):
     
    342339
    343340=== Serving a different base path than /
    344 Tracd supports serving projects with different base urls than /<project>. The parameter name to change this is
     341
     342Tracd supports serving projects with different base urls than /<project>. The parameter name to change this is:
    345343{{{#!sh
    346344 $ tracd --base-path=/some/path