Changes between Version 9 and Version 10 of TracStandalone


Ignore:
Timestamp:
10/05/2023 07:15:48 AM (14 months ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracStandalone

    v9 v10  
    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
    48 To install as a Windows service, get the [http://www.google.com/search?q=srvany.exe SRVANY] utility and run:
     45
     46To install as a Windows service, get the [https://www.google.com/search?q=srvany.exe SRVANY] utility and run:
    4947{{{#!cmd
    5048 C:\path\to\instsrv.exe tracd C:\path\to\srvany.exe
     
    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.)
    77 }}}
    78 
    79 For Windows 7 User, srvany.exe may not be an option, so you can use [http://www.google.com/search?q=winserv.exe WINSERV] utility and run:
     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.
     75}}}
     76
     77For Windows 7 User, srvany.exe may not be an option, so you can use [https://www.google.com/search?q=winserv.exe WINSERV] utility and run:
    8078{{{#!cmd
    8179"C:\path\to\winserv.exe" install tracd -displayname "tracd" -start auto "C:\path\to\python.exe" c:\path\to\python\scripts\tracd.exe <your tracd parameters>"
     
    8583=== Option 2
    8684
    87 Use [http://trac-hacks.org/wiki/WindowsServiceScript WindowsServiceScript], available at [http://trac-hacks.org/ Trac Hacks]. Installs, removes, starts, stops, etc. your Trac service.
     85Use [https://trac-hacks.org/wiki/WindowsServiceScript WindowsServiceScript], available at [https://trac-hacks.org/ Trac Hacks]. Installs, removes, starts, stops, etc. your Trac service.
    8886
    8987=== Option 3
     
    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
    172170
    173 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.
     171If you have Apache available, you can use the htdigest command to generate the password file. Type 'htdigest' to get some usage instructions, or read [https://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.
    174172
    175173Note that you can start tracd without the `--auth` argument, but if you click on the ''Login'' link you will get an error.
     
    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
     
    208207             [--protocol {http,https,scgi,ajp,fcgi}] [--certfile CERTFILE]
    209208             [--keyfile KEYFILE] [-q] [--base-path BASE_PATH]
    210              [--http10 | --http11] [-r | -d] [--pidfile PIDFILE]
    211              [--umask MASK] [--group GROUP] [--user USER]
    212              [envs [envs ...]]
     209             [--http10 | --http11] [-r | -d] [--pidfile PIDFILE] [--umask MASK]
     210             [--group GROUP] [--user USER]
     211             [envs ...]
    213212
    214213positional arguments:
    215214  envs                  path of the project environment(s)
    216215
    217 optional arguments:
     216options:
    218217  -h, --help            show this help message and exit
    219218  --version             show program's version number and exit
     
    253252=== Serving static content
    254253
    255 If `tracd` is the only web server used for the project,
    256 it can also be used to distribute static content
    257 (tarballs, Doxygen documentation, etc.)
    258 
    259 This static content should be put in the `$TRAC_ENV/htdocs` folder,
    260 and is accessed by URLs like `<project_URL>/chrome/site/...`.
    261 
    262 Example: given a `$TRAC_ENV/htdocs/software-0.1.tar.gz` file,
    263 the corresponding relative URL would be `/<project_name>/chrome/site/software-0.1.tar.gz`,
    264 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).
    265259
    266260=== Using tracd behind a proxy
     
    275269
    276270=== Authentication for tracd behind a proxy
    277 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].
    278273
    279274Below is example configuration based on Apache 2.2, mod_proxy, mod_authnz_ldap.
     
    301296    implements(IAuthenticator)
    302297
    303     obey_remote_user_header = BoolOption('trac', 'obey_remote_user_header', 'false', 
    304                """Whether the 'Remote-User:' HTTP header is to be trusted for user logins 
    305                 (''since ??.??').""") 
     298    obey_remote_user_header = BoolOption('trac', 'obey_remote_user_header', 'false',
     299               """Whether the 'Remote-User:' HTTP header is to be trusted for user logins
     300                (''since ??.??').""")
    306301
    307302    def authenticate(self, req):
    308         if self.obey_remote_user_header and req.get_header('Remote-User'): 
    309             return req.get_header('Remote-User') 
     303        if self.obey_remote_user_header and req.get_header('Remote-User'):
     304            return req.get_header('Remote-User')
    310305        return None
    311306
     
    325320}}}
    326321
    327 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`.
    328323
    329324Global config (e.g. `/srv/trac/conf/trac.ini`):
     
    344339
    345340=== Serving a different base path than /
    346 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:
    347343{{{#!sh
    348344 $ tracd --base-path=/some/path