Changes between Version 1 and Version 2 of TracModWSGI
- Timestamp:
- 19/04/2022 13:22:06 (3 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TracModWSGI
v1 v2 7 7 == The `trac.wsgi` script 8 8 9 Trac can be run on top of mod_wsgi with the help of an application script, which is a Python file saved with a `.wsgi` extension. 9 Trac can be run on top of mod_wsgi with the help of an application script, which is a Python file saved with a `.wsgi` extension. 10 10 11 11 A robust and generic version of this file can be created using the `trac-admin <env> deploy <dir>` command which automatically substitutes the required paths, see TracInstall#cgi-bin. The script should be sufficient for most installations and users not wanting more information can proceed to [#Mappingrequeststothescript configuring Apache]. … … 15 15 def application(environ, start_request): 16 16 # Add this when you have multiple projects 17 environ.setdefault('trac.env_parent_dir', '/usr/share/trac/projects') 17 environ.setdefault('trac.env_parent_dir', '/usr/share/trac/projects') 18 18 .. 19 19 }}} … … 49 49 === A more elaborate script 50 50 51 If you are using multiple `.wsgi` files (for example one per Trac environment) you must ''not'' use `os.environ['TRAC_ENV']` to set the path to the Trac environment. Using this method may lead to Trac delivering the content of another Trac environment, as the variable may be filled with the path of a previously viewed Trac environment. 51 If you are using multiple `.wsgi` files (for example one per Trac environment) you must ''not'' use `os.environ['TRAC_ENV']` to set the path to the Trac environment. Using this method may lead to Trac delivering the content of another Trac environment, as the variable may be filled with the path of a previously viewed Trac environment. 52 52 53 53 To solve this problem, use the following `.wsgi` file instead: … … 59 59 import trac.web.main 60 60 def application(environ, start_response): 61 environ['trac.env_path'] = '/usr/local/trac/mysite' 61 environ['trac.env_path'] = '/usr/local/trac/mysite' 62 62 return trac.web.main.dispatch_request(environ, start_response) 63 63 }}} 64 64 65 For clarity, you should give this file a `.wsgi` extension. You should probably put the file in its own directory, since you will expose it to Apache. 65 For clarity, you should give this file a `.wsgi` extension. You should probably put the file in its own directory, since you will expose it to Apache. 66 66 67 67 If you have installed Trac and Python eggs in a path different from the standard one, you should add that path by adding the following code at the top of the wsgi script: … … 208 208 See also the [https://httpd.apache.org/docs/2.4/mod/mod_auth_basic.html mod_auth_digest] documentation. 209 209 210 === Using LDAP Authentication 210 === Using LDAP Authentication 211 211 212 212 Configuration for [https://httpd.apache.org/docs/2.4/mod/mod_ldap.html mod_ldap] authentication in Apache is more involved (httpd 2.2+ and OpenLDAP: slapd 2.3.19). … … 268 268 269 269 See also: 270 - [https://httpd.apache.org/docs/2.4/mod/mod_authnz_ldap.html mod_authnz_ldap], documentation for mod_authnz_ldap. 270 - [https://httpd.apache.org/docs/2.4/mod/mod_authnz_ldap.html mod_authnz_ldap], documentation for mod_authnz_ldap. 271 271 - [https://httpd.apache.org/docs/2.4/mod/mod_ldap.html mod_ldap], documentation for mod_ldap, which provides connection pooling and a shared cache. 272 272 - [https://trac-hacks.org/wiki/LdapPlugin TracHacks:LdapPlugin] for storing TracPermissions in LDAP. … … 310 310 311 311 {{{#!python 312 def application(environ, start_request): 313 # Set authenticated username on CA SiteMinder to REMOTE_USER variable 312 def application(environ, start_request): 313 # Set authenticated username on CA SiteMinder to REMOTE_USER variable 314 314 # strip() is used to remove any spaces on the end of the string 315 if 'HTTP_SM_USER' in environ: 315 if 'HTTP_SM_USER' in environ: 316 316 environ['REMOTE_USER'] = environ['HTTP_REMOTE_USER'].strip() 317 317 ... … … 415 415 //This is not a recommended approach though. See also the notes at the bottom of the [https://code.google.com/archive/p/modwsgi/wikis/IntegrationWithTrac.wiki mod_wsgi's IntegrationWithTrac] wiki page.// 416 416 417 === Missing Headers and Footers418 419 If python optimizations are enabled, then headers and footers will not be rendered. An error will be raised in Trac 1.0.11 and later when optimizations are enabled.420 421 In your WSGI configuration file, the `WSGIPythonOptimize` setting must be set to `0` (`1` or `2` will not work):422 423 {{{#!apache424 WSGIPythonOptimize 0425 }}}426 427 On Ubuntu, the WSGI mod configuration is at `/etc/apache2/mods-enabled/wsgi.conf`.428 429 The same issue is seen with `PythonOptimize On` in [TracModPython#Pagelayoutissues ModPython].430 431 417 === Other resources 432 418