trac-ticketlinks / wiki-default / TracFastCgi

= Trac with FastCGI =

Since version 0.9, Trac supports being run through the [ FastCGI] interface. Like [wiki:TracModPython mod_python], this allows Trac to remain resident, and is faster than external CGI interfaces which must start a new process for each request. However, unlike mod_python, it is able to support [ SuEXEC]. Additionally, it is supported by much wider variety of web servers.

== Simple Apache configuration ==
# Enable fastcgi for .fcgi files
# (If you're using a distro package for mod_fcgi, something like
# this is probably already present)
<IfModule mod_fastcgi.c>
   AddHandler fastcgi-script .fcgi
   FastCgiIpcDir /var/lib/apache2/fastcgi 
LoadModule fastcgi_module /usr/lib/apache2/modules/

You can either setup the `TRAC_ENV` as an overall default:
FastCgiConfig -initial-env TRAC_ENV=/path/to/env/trac

Or you can serve multiple Trac projects in a directory like:
FastCgiConfig -initial-env TRAC_ENV_PARENT_DIR=/parent/dir/of/projects

Configure `ScriptAlias` or similar options as described in TracCgi, but calling `trac.fcgi` instead of `trac.cgi`.

== Simple Lighttpd Configuration ==

The FastCGI front-end was developed primarily for use with alternative webservers, such as [ lighttpd].

lighttpd a secure, fast, compliant and very flexible web-server which has been optimized for high-performance
environments.  It has a very low memory footprint compared to other web servers and takes care of CPU load.

For using `trac.fcgi` with lighttpd add the following to your lighttpd.conf:
fastcgi.server = ("/trac" =>
                   ("trac" =>
                     ("socket" => "/tmp/trac-fastcgi.sock",
                      "bin-path" => "/path/to/cgi-bin/trac.fcgi",
                      "bin-environment" =>
                        ("TRAC_ENV" => "/path/to/projenv")

Note that you will need to add a new entry to `fastcgi.server` for each separate Trac instance that you wish to run. Alternatively, you may use the `TRAC_ENV_PARENT_DIR` variable instead of `TRAC_ENV` as described  above.

Relaunch lighttpd, and browse to `` to access Trac.

See also TracCgi, TracModPython, TracInstall, TracGuide
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.