rickvanderzwet.nl

Personal notes on technology, sustainability and DIY projects

TracCgi

last updated 20-06-2020 · author: trac

Installing Trac as CGI

''Please note that using Trac via CGI is the slowest deployment method available. It is slower than [wiki:TracModWSGI mod_wsgi], [TracModPython mod_python], [TracFastCgi FastCGI] and even [trac:TracOnWindowsIisAjp IIS/AJP] on Windows.''

CGI script is the entrypoint that web-server calls when a web-request to an application is made. The \trac.cgi\ script can be created using the \trac-admin <env> deploy <dir>\ command which automatically substitutes the required paths, see TracInstall#cgi-bin. Make sure the script is executable by your web server.

Apache web-server configuration

In Apache there are two ways to run Trac as CGI:

  1. Use a \ScriptAlias\ directive that maps a URL to the \trac.cgi\ script (recommended)
  2. Copy the \trac.cgi\ file into the directory for CGI executables used by your web server (commonly named \cgi-bin\). You can also create a symbolic link, but in that case make sure that the \FollowSymLinks\ option is enabled for the \cgi-bin\ directory.

To make Trac available at \<http://yourhost.example.org/trac> add \ScriptAlias\ directive to Apache configuration file, changing \trac.cgi\ path to match your installation:

ScriptAlias /trac /path/to/www/trac/cgi-bin/trac.cgi

If you're using Trac with a single project you need to set its location using the \TRAC_ENV\ environment variable:

''Note that this directive requires that the mod_alias module is enabled.''

<Location "/trac">
  SetEnv TRAC_ENV "/path/to/projectenv"
</Location>

Or to use multiple projects you can specify their common parent directory using the \TRAC_ENV_PARENT_DIR\ variable:

<Location "/trac">
  SetEnv TRAC_ENV_PARENT_DIR "/path/to/project/parent/dir"
</Location>

An alternative to \SetEnv\ is editing \TRAC_ENV\ or \TRAC_ENV_PARENT_DIR\ in \trac.cgi\:

''Note that the SetEnv directive requires that the mod_env module is enabled.''

    os.environ['TRAC_ENV'] = "/path/to/projectenv"
    os.environ['TRAC_ENV_PARENT_DIR'] = "/path/to/parent/dir"

If you are using the Apache suEXEC feature please see trac:ApacheSuexec.

On some systems, you may need to edit the shebang line in the \trac.cgi\ file to point to your real Python installation path. On a Windows system you may need to configure Windows to know how to execute a \.cgi\ file (Explorer -> Tools -> Folder Options -> File Types -> CGI).

Python Egg Cache

The egg-cache can be configured using an \os.environ\ statement in \trac.cgi\, as shown above. To do the same from the Apache configuration, use the \SetEnv\ directive:

SetEnv PYTHON_EGG_CACHE /path/to/dir

Put this directive next to where you set the path to the Trac environment, i.e. in the same \<Location>\ block.

 <Location /trac>
   SetEnv TRAC_ENV /path/to/projenv
   SetEnv PYTHON_EGG_CACHE /path/to/dir
 </Location>

Using WSGI

You can run a WSGI handler under CGI. You can write your own application function, or use the deployed trac.wsgi's application.

Mapping Static Resources

See TracInstall#MappingStaticResources.

Adding Authentication

See TracInstall#ConfiguringAuthentication.


See also: TracInstall, TracModWSGI, TracFastCgi, TracModPython

Download as: plain text