close
Warning:
Can't synchronize with repository "keplertools" (/srv/svn/keplertools does not appear to be a Subversion repository.). Look in the Trac log for more information.
- Timestamp:
-
Aug 18, 2013, 5:03:59 PM (13 years ago)
- Author:
-
trac
- Comment:
-
--
Legend:
- Unmodified
- Added
- Removed
- Modified
-
|
v2
|
v3
|
|
| 1 | | [[PageOutline]] |
| 2 | | |
| 3 | 1 | = Trac with FastCGI = |
| 4 | 2 | |
| 5 | | [http://www.fastcgi.com/ FastCGI] interface allows Trac to remain resident much like with [wiki:TracModPython mod_python] or [wiki:TracModWSGI mod_wsgi]. It is faster than external CGI interfaces which must start a new process for each request. Additionally, it is supported by much wider variety of web servers. |
| 6 | | |
| 7 | | Note that unlike mod_python, FastCGI supports [http://httpd.apache.org/docs/suexec.html Apache SuEXEC], i.e. run with different permissions than web server running with (`mod_wsgi` supports the `WSGIDaemonProcess` with user / group parameters to achieve the same effect). |
| 8 | | |
| 9 | | '''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]/[trac:TracOnWindowsIisAjp ISAPI]. |
| 10 | | |
| 11 | | [[PageOutline(2-3,Overview,inline)]] |
| 12 | | |
| | 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]. |
| 13 | 6 | |
| 14 | 7 | == Simple Apache configuration == |
| … |
… |
|
| 17 | 10 | `mod_fcgid` (preferred). The latter is more up-to-date. |
| 18 | 11 | |
| 19 | | The following sections focus on the FCGI specific setup, see also [wiki:TracModWSGI#ConfiguringAuthentication] for configuring the authentication in Apache. |
| 20 | | |
| 21 | | Regardless of which cgi module is used, be sure the web server has executable permissions on the cgi-bin folder. While FastCGI will throw specific permissions errors, mod_fcgid will throw an ambiguous error if this has not been done. (Connection reset by peer: mod_fcgid: error reading data from FastCGI server) |
| 22 | | |
| 23 | | === Set up with `mod_fastcgi` === |
| | 12 | ==== setup with `mod_fastcgi` ==== |
| 24 | 13 | `mod_fastcgi` uses `FastCgiIpcDir` and `FastCgiConfig` directives that should be added to an appropriate Apache configuration file: |
| 25 | 14 | {{{ |
| … |
… |
|
| 38 | 27 | calling `trac.fcgi` instead of `trac.cgi`. |
| 39 | 28 | |
| 40 | | Add the following to the Apache configuration file (below the `FastCgiIpcDir` line) if you intend to set up the `TRAC_ENV` as an overall default: |
| | 29 | You can set up the `TRAC_ENV` as an overall default: |
| 41 | 30 | {{{ |
| 42 | 31 | FastCgiConfig -initial-env TRAC_ENV=/path/to/env/trac |
| 43 | 32 | }}} |
| 44 | 33 | |
| 45 | | Alternatively, you can serve multiple Trac projects in a directory by adding this: |
| | 34 | Or you can serve multiple Trac projects in a directory like: |
| 46 | 35 | {{{ |
| 47 | 36 | FastCgiConfig -initial-env TRAC_ENV_PARENT_DIR=/parent/dir/of/projects |
| 48 | 37 | }}} |
| 49 | 38 | |
| 50 | | === Set up with `mod_fcgid` === |
| | 39 | ==== setup with `mod_fcgid` ==== |
| 51 | 40 | Configure `ScriptAlias` (see TracCgi for details), but call `trac.fcgi` |
| 52 | 41 | instead of `trac.cgi`. Note that slash at the end - it is important. |
| … |
… |
|
| 55 | 44 | }}} |
| 56 | 45 | |
| 57 | | To set up Trac environment for `mod_fcgid` it is necessary to use |
| | 46 | To setup Trac environment for `mod_fcgid` it is necessary to use |
| 58 | 47 | `DefaultInitEnv` directive. It cannot be used in `Directory` or |
| 59 | 48 | `Location` context, so if you need to support multiple projects, try |
| … |
… |
|
| 64 | 53 | }}} |
| 65 | 54 | |
| 66 | | === alternative environment setup === |
| 67 | | A better method to specify path to Trac environment is to embed the path |
| | 55 | ==== alternative environment setup ==== |
| | 56 | A better method to specify path to Trac environment it to embed the path |
| 68 | 57 | into `trac.fcgi` script itself. That doesn't require configuration of server |
| 69 | 58 | environment variables, works for both FastCgi modules |
| … |
… |
|
| 104 | 93 | |
| 105 | 94 | After doing this, we will just have to create a new rule managed by the SCGI handler to access Trac. It can be created in a new virtual server, trac.example.net for instance, and will only need two rules. The '''default''' one will use the SCGI handler associated to the previously created information source. |
| 106 | | The second rule will be there to serve the few static files needed to correctly display the Trac interface. Create it as ''Directory rule'' for ''/common'' and just set it to the ''Static files'' handler and with a ''Document root'' that points to the appropriate files: ''$TRAC_LOCAL/htdocs/'' (where $TRAC_LOCAL is a directory defined by the user or the system administrator to place local trac resources). |
| | 95 | The second rule will be there to serve the few static files needed to correctly display the Trac interface. Create it as ''Directory rule'' for ''/chrome/common'' and just set it to the ''Static files'' handler and with a ''Document root'' that points to the appropriate files: ''/usr/share/trac/htdocs/'' |
| 107 | 96 | |
| 108 | 97 | Note:\\ |
| … |
… |
|
| 112 | 101 | sudo apt-get install python-flup |
| 113 | 102 | }}} |
| 114 | | |
| 115 | 103 | |
| 116 | 104 | == Simple Lighttpd Configuration == |
| … |
… |
|
| 142 | 130 | using `bin-environment` (as in the section above on Apache configuration). |
| 143 | 131 | |
| 144 | | Note that lighttpd has a bug related to 'SCRIPT_NAME' and 'PATH_INFO' when the uri of fastcgi.server is '/' instead of '/trac' in this example (see [trac:#2418]). This should be fixed since lighttpd 1.4.23, and you may need to add `"fix-root-scriptname" => "enable"` as parameter of fastcgi.server. |
| | 132 | Note that lighttpd has a bug related to 'SCRIPT_NAME' and 'PATH_INFO' when the uri of fastcgi.server is '/' instead of '/trac' in this example, see #Trac2418. This should be fixed since lighttpd 1.4.23, and you may need to add `"fix-root-scriptname" => "enable"` as parameter of fastcgi.server. |
| 145 | 133 | |
| 146 | 134 | For using two projects with lighttpd add the following to your `lighttpd.conf`: |
| … |
… |
|
| 171 | 159 | Note that the above will result in different processes in any event, even |
| 172 | 160 | if both are running from the same `trac.fcgi` script. |
| 173 | | |
| 174 | 161 | {{{ |
| 175 | 162 | #!div class=important |
| 176 | 163 | '''Note''' It's very important the order on which server.modules are loaded, if mod_auth is not loaded '''BEFORE''' mod_fastcgi, then the server will fail to authenticate the user. |
| 177 | 164 | }}} |
| 178 | | |
| 179 | 165 | For authentication you should enable mod_auth in lighttpd.conf 'server.modules', select auth.backend and auth rules: |
| 180 | 166 | {{{ |
| … |
… |
|
| 224 | 210 | server.modules += ("mod_alias") |
| 225 | 211 | |
| 226 | | # Set up an alias for the static resources |
| | 212 | # Setup an alias for the static resources |
| 227 | 213 | alias.url = ("/trac/chrome/common" => "/usr/share/trac/htdocs") |
| 228 | 214 | |
| … |
… |
|
| 290 | 276 | For details about languages specification see [trac:TracFaq TracFaq] question 2.13. |
| 291 | 277 | |
| 292 | | Other important information like the [wiki:TracInstall#MappingStaticResources mapping static resources advices] are useful for non-fastcgi specific installation aspects. |
| 293 | | ] |
| | 278 | Other important information like [http://trac.lighttpd.net/trac/wiki/TracInstall this updated TracInstall page], [wiki:TracCgi#MappingStaticResources and this] are useful for non-fastcgi specific installation aspects. |
| | 279 | |
| | 280 | If you use trac-0.9, read [http://lists.edgewall.com/archive/trac/2005-November/005311.html about small bug] |
| 294 | 281 | |
| 295 | 282 | Relaunch lighttpd, and browse to `http://yourhost.example.org/trac` to access Trac. |
| … |
… |
|
| 297 | 284 | Note about running lighttpd with reduced permissions: |
| 298 | 285 | |
| 299 | | If nothing else helps and trac.fcgi doesn't start with lighttpd settings `server.username = "www-data"`, `server.groupname = "www-data"`, then in the `bin-environment` section set `PYTHON_EGG_CACHE` to the home directory of `www-data` or some other directory accessible to this account for writing. |
| | 286 | If nothing else helps and trac.fcgi doesn't start with lighttpd settings `server.username = "www-data"`, `server.groupname = "www-data"`, then in the `bin-environment` section set `PYTHON_EGG_CACHE` to the home directory of `www-data` or some other directory accessible to this account for writing. |
| 300 | 287 | |
| 301 | 288 | |
| … |
… |
|
| 305 | 292 | |
| 306 | 293 | !LiteSpeed web server is an event-driven asynchronous Apache replacement designed from the ground-up to be secure, scalable, and operate with minimal resources. !LiteSpeed can operate directly from an Apache config file and is targeted for business-critical environments. |
| | 294 | |
| | 295 | === Setup === |
| 307 | 296 | |
| 308 | 297 | 1. Please make sure you have first have a working install of a Trac project. Test install with “tracd” first. |
| … |
… |
|
| 365 | 354 | }}} |
| 366 | 355 | |
| 367 | | |
| 368 | 356 | == Simple Nginx Configuration == |
| 369 | 357 | |
| 370 | | Nginx is able to communicate with FastCGI processes, but can not spawn them. So you need to start FastCGI server for Trac separately. |
| 371 | | |
| 372 | | 1. Nginx configuration with basic authentication handled by Nginx - confirmed to work on 0.6.32 |
| | 358 | 1. Nginx configuration snippet - confirmed to work on 0.6.32 |
| 373 | 359 | {{{ |
| 374 | 360 | server { |
| … |
… |
|
| 389 | 375 | if ($uri ~ ^/(.*)) { |
| 390 | 376 | set $path_info /$1; |
| 391 | | } |
| 392 | | |
| 393 | | # it makes sense to serve static resources through Nginx |
| 394 | | location /chrome/ { |
| 395 | | alias /home/trac/instance/static/htdocs/; |
| 396 | 377 | } |
| 397 | 378 | |
| … |
… |
|
| 422 | 403 | fastcgi_param SERVER_PORT $server_port; |
| 423 | 404 | fastcgi_param SERVER_PROTOCOL $server_protocol; |
| 424 | | fastcgi_param QUERY_STRING $query_string; |
| 425 | | |
| 426 | | # For Nginx authentication to work - do not forget to comment these |
| 427 | | # lines if not using Nginx for authentication |
| | 405 | fastcgi_param QUERY_STRING $query_string; |
| | 406 | |
| | 407 | # for authentication to work |
| 428 | 408 | fastcgi_param AUTH_USER $remote_user; |
| 429 | 409 | fastcgi_param REMOTE_USER $remote_user; |
| 430 | | |
| 431 | | # for ip to work |
| 432 | | fastcgi_param REMOTE_ADDR $remote_addr; |
| 433 | | |
| 434 | | # For attchments to work |
| 435 | | fastcgi_param CONTENT_TYPE $content_type; |
| 436 | | fastcgi_param CONTENT_LENGTH $content_length; |
| 437 | 410 | } |
| 438 | 411 | } |