Changes between Version 2 and Version 3 of TracFastCgi


Ignore:
Timestamp:
01/09/2010 01:18:18 (14 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracFastCgi

    v2 v3  
    11= Trac with FastCGI =
    22
    3 Since version 0.9, Trac supports being run through the [http://www.fastcgi.com/ 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 [http://httpd.apache.org/docs/suexec.html SuEXEC]. Additionally, it is supported by much wider variety of web servers.
    4 
    5 '''Note for Windows:''' Trac's FCGI does not run under Windows, as Windows does not implement `Socket.fromfd`, which is used by `_fcgi.py`. If you want to connect to IIS, your choice may be [trac:TracOnWindowsIisAjp AJP].
     3[http://www.fastcgi.com/ FastCGI] interface allows Trac to remain resident much like with [wiki:TracModPython mod_python]. It is faster than external CGI interfaces which must start a new process for each request. However, unlike mod_python, FastCGI supports [http://httpd.apache.org/docs/suexec.html Apache SuEXEC], i.e. run with different permissions than web server. Additionally, it is supported by much wider variety of web servers.
     4
     5'''Note for Windows:''' Trac's FastCGI does not run under Windows, as Windows does not implement `Socket.fromfd`, which is used by `_fcgi.py`. If you want to connect to IIS, you may want to try [trac:TracOnWindowsIisAjp AJP].
    66
    77== Simple Apache configuration ==
    88
    99There are two FastCGI modules commonly available for Apache: `mod_fastcgi` and
    10 `mod_fcgid`.  The `FastCgiIpcDir` and `FastCgiConfig` directives discussed
    11 below are `mod_fastcgi` directives; the `DefaultInitEnv` is a `mod_fcgid`
    12 directive.
    13 
    14 For `mod_fastcgi`, add the following to an appropriate Apache configuration
    15 file:
     10`mod_fcgid` (preferred). The latter is more up-to-date.
     11
     12==== setup with `mod_fastcgi` ====
     13`mod_fastcgi` uses `FastCgiIpcDir` and `FastCgiConfig` directives that should be added to an appropriate Apache configuration file:
    1614{{{
    1715# Enable fastcgi for .fcgi files
     
    3937}}}
    4038
    41 But neither of these will work for `mod_fcgid`.  A similar but partial
    42 solution for `mod_fcgid` is:
    43 {{{
    44 DefaultInitEnv TRAC_ENV /path/to/env/trac/
    45 }}}
    46 But this cannot be used in `Directory` or `Location` context, which makes it
    47 difficult to support multiple projects.
    48 
    49 A better method which works for both of these modules (and for  [http://www.lighttpd.net/ lighttpd] and CGI as well), because it involves
    50 no server configuration settings for environment variables, is to set one
    51 of the variables in `trac.fcgi`, e.g.:
     39==== setup with `mod_fcgid` ====
     40Configure `ScriptAlias` (see TracCgi for details), but call `trac.fcgi`
     41instead of `trac.cgi`. Note that slash at the end - it is important.
     42{{{
     43ScriptAlias /trac /path/to/www/trac/cgi-bin/trac.fcgi/
     44}}}
     45
     46To setup Trac environment for `mod_fcgid` it is necessary to use
     47`FCGIDDefaultInitEnv` directive. It cannot be used in `Directory` or
     48`Location` context, so if you need to support multiple projects, try
     49alternative environment setup below.
     50
     51{{{
     52FCGIDDefaultInitEnv TRAC_ENV /path/to/env/trac/
     53}}}
     54
     55==== alternative environment setup ====
     56A better method to specify path to Trac environment it to embed the path
     57into `trac.fcgi` script itself. That doesn't require configuration of server
     58environment variables, works for both FastCgi modules
     59(and for [http://www.lighttpd.net/ lighttpd] and CGI as well):
    5260{{{
    5361import os
     
    6068}}}
    6169
    62 Using this method, different projects can be supported by using different
    63 `.fcgi` scripts with different `ScriptAliases`, copying and appropriately
    64 renaming `trac.fcgi` and adding the above code to create each such script.
     70With this method different projects can be supported by using different
     71`.fcgi` scripts with different `ScriptAliases`.
    6572
    6673See [https://coderanger.net/~coderanger/httpd/fcgi_example.conf this fcgid example config] which uses a !ScriptAlias directive with trac.fcgi with a trailing / like this:
     
    97104For using `trac.fcgi`(prior to 0.11) / fcgi_frontend.py (0.11) with lighttpd add the following to your lighttpd.conf:
    98105{{{
    99 #var.fcgi_binary="/path/to/fcgi_frontend.py" # 0.11 if installed with easy_setup, it is inside the egg directory
     106#var.fcgi_binary="/usr/bin/python /path/to/fcgi_frontend.py" # 0.11 if installed with easy_setup, it is inside the egg directory
    100107var.fcgi_binary="/path/to/cgi-bin/trac.fcgi" # 0.10 name of prior fcgi executable
    101108fastcgi.server = ("/trac" =>