Project

General

Profile

HowToSetupTrac » History » Revision 14

Revision 13 (cuerty, 2009-06-08 02:33) → Revision 14/18 (stbuehler, 2009-08-02 17:56)

h1. How to setup trac with Lighttpd 


 "Trac":http://trac.edgewall.org/ "Trac":http://www.edgewall.com/trac/ is an enhanced wiki and issue tracking system for software development projects. 

 lighttpd.net is using it as its bug-tracking system and web-frontend for "subversion":http://subversion.tigris.org/. 


 h2. Common setup using FastCGI 


 <pre> 

 <pre> 
 $HTTP["host"] == "trac.example.com" { 
     server.document-root = "/www/htdocs/sites/trac.example.com" 
     alias.url              = ( 
         "/trac_prefix/chrome/common/" => "/usr/share/trac/htdocs/", 
     ) 
 
     # rewrite for multiple svn project 
     url.rewrite-final      = ( 
         "^/trac_prefix/[^/]+/chrome/common/(.*)" => "/trac_prefix/chrome/common/$1", 
     ) 


     $HTTP["url"] =~ "^/trac_prefix/chrome/" { 
         # no fastcgi 
     } # end of $HTTP["url"] =~ "^/trac_prefix/chrome/" 
     else $HTTP["url"] =~ "^/trac_prefix" { 
         fastcgi.server      = ( 
             "/trac_prefix" "/" => (            # if trac_prefix is empty, use "/" 
                 ( 
                     # options needed to have lighty spawn trac 
                     "bin-path"          => "/usr/share/webapps/trac/0.9.3/hostroot/cgi-bin/trac.fcgi", 
                     "socket"            => "/tmp/trac.sock", 
                     "check-local"       => "disable", 
                     "disable-time"      => 1, 
                     "min-procs"         => 1, 
                     "max-procs"         => 1, 
                     "bin-environment" => ( 
                         "TRAC_ENV_PARENT_DIR" => "/var/lib/trac/", 
                     ), 

                     # options needed in all cases 
                     "socket"            => "/tmp/trac.sock", 
                     "check-local"       => "disable", 

                     # optional 
                     "disable-time"      => 1, 

                     # needed if trac_prefix is empty; and you need >= 1.4.23 
                     "fix-root-scriptname" => "enable", 
                 ), 
             ), 
         ) 
     } # end of $HTTP["url"] =~ "^/trac_prefix" 
 } # end of $HTTP["host"] == "trac.example.com" 
 </pre> 


 Change "/trac_prefix" (neither "/trac_prefix/" nor "trac_prefix/", nor "trac_prefix") to anything else or even remove it if you want. 

 '''For top level setup:''' In order to have Trac running at the top level of a virtual host, you also need an @alias.url@ entry for `"" => "/path/to/trac.fcgi"`. 

 If you only want one svn project, then replace "TRAC_ENV_PARENT_DIR" with "TRAC_ENV" and change "/var/lib/trac" to the correct subdirectory. 

 You can use [[spawn-fcgi:|spawn-fcgi]] to spawn the trac application too, of course. 
 <pre> 
 TRAC_ENV_PARENT_DIR=/var/lib/trac/ spawn-fcgi -n -s /tmp/trac.sock -- /usr/share/webapps/trac/0.9.3/hostroot/cgi-bin/trac.fcgi 
 </pre> 

 h2. Common setup using CGI 

 


 Take a look at the "updated [[TracInstallPlatforms|updated Trac setup documentation":http://trac.edgewall.org/wiki/TracInstallPlatforms documentation]] 


 h2. Separated setup 

 


 The webserver at lighttpd.net is living in a chroot which separates the webserver-root from the rest of the system and the subversion repositories. 

 As trac requires physical access it couldn't be installed in the "well [[TracInstall|well documented way":http://trac.edgewall.org/wiki/TracInstall. way]].  

 trac provides a seperated tracd which is started locally at port 9090: 


 <pre> 

 <pre> #!ShellExample 
 $ tracd -b 127.0.0.1 -p 9090 /path/to/trac/lighttpd/ 
 </pre> 

 


 To forward all requests from the webserver to trac the [[lighttpd:Docs:ModProxy]] "proxy module":http://www.lighttpd.net/documentation/proxy.html is used: 


 <pre> 

 <pre> 
 $HTTP["host"] == "trac.lighttpd.net" { 
   # forward all requests at trac.lighttpd.net to the tracd 
   proxy.server = ("" => ( "trac" => ( "host" => "127.0.0.1", "port" => 9090 ))) 
 } 
 </pre>