Edgewall Software

Changes between Version 3 and Version 4 of 1.3/TracModWSGI


Ignore:
Timestamp:
Oct 15, 2019, 6:28:07 AM (12 months ago)
Author:
trac
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • 1.3/TracModWSGI

    v3 v4  
    77== The `trac.wsgi` script
    88
    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. 
     9Trac 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.
    1010
    1111A 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].
     
    1515def application(environ, start_request):
    1616    # 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')
    1818    ..
    1919}}}
     
    4949=== A more elaborate script
    5050
    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. 
     51If 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.
    5252
    5353To solve this problem, use the following `.wsgi` file instead:
     
    5959import trac.web.main
    6060def application(environ, start_response):
    61   environ['trac.env_path'] = '/usr/local/trac/mysite' 
     61  environ['trac.env_path'] = '/usr/local/trac/mysite'
    6262  return trac.web.main.dispatch_request(environ, start_response)
    6363}}}
    6464
    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. 
     65For 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.
    6666
    6767If 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:
     
    130130== Configuring Authentication
    131131
    132 The following sections describe different methods for setting up authentication. See also [http://httpd.apache.org/docs/2.4/howto/auth.html Authentication, Authorization and Access Control] in the Apache guide.
     132The following sections describe different methods for setting up authentication. See also [https://httpd.apache.org/docs/2.4/howto/auth.html Authentication, Authorization and Access Control] in the Apache guide.
    133133
    134134=== Using Basic Authentication
     
    208208See also the [https://httpd.apache.org/docs/2.4/mod/mod_auth_basic.html mod_auth_digest] documentation.
    209209
    210 === Using LDAP Authentication 
     210=== Using LDAP Authentication
    211211
    212212Configuration 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).
     
    268268
    269269See 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.
    271271 - [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.
    272272 - [https://trac-hacks.org/wiki/LdapPlugin TracHacks:LdapPlugin] for storing TracPermissions in LDAP.
     
    274274=== Using SSPI Authentication
    275275
    276 If you are using Apache on Windows, you can use mod_auth_sspi to provide single-sign-on. Download the module from the !SourceForge [http://sourceforge.net/projects/mod-auth-sspi/ mod-auth-sspi project] and then add the following to your !VirtualHost:
     276If you are using Apache on Windows, you can use mod_auth_sspi to provide single-sign-on. Download the module from the !SourceForge [https://sourceforge.net/projects/mod-auth-sspi/ mod-auth-sspi project] and then add the following to your !VirtualHost:
    277277{{{#!apache
    278278<Location /trac/login>
     
    310310
    311311{{{#!python
    312 def application(environ, start_request): 
    313     # Set authenticated username on CA SiteMinder to REMOTE_USER variable 
     312def application(environ, start_request):
     313    # Set authenticated username on CA SiteMinder to REMOTE_USER variable
    314314    # 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:
    316316        environ['REMOTE_USER'] = environ['HTTP_REMOTE_USER'].strip()
    317317    ...
     
    369369Please use either version 1.6, 2.4 or later of `mod_wsgi`. Versions prior to 2.4 in the 2.X branch have problems with some Apache configurations that use WSGI file wrapper extension. This extension is used in Trac to serve up attachments and static media files such as style sheets. If you are affected by this problem, attachments will appear to be empty and formatting of HTML pages will appear not to work due to style sheet files not loading properly. Another frequent symptom is that binary attachment downloads are truncated. See mod_wsgi tickets [https://code.google.com/archive/p/modwsgi/issues/100 #100] and [https://code.google.com/archive/p/modwsgi/issues/132 #132].
    370370
    371 '''Note''': using mod_wsgi 2.5 and Python 2.6.1 gave an Internal Server Error on my system (Apache 2.2.11 and Trac 0.11.2.1). Upgrading to Python 2.6.2 (as suggested [http://www.mail-archive.com/modwsgi@googlegroups.com/msg01917.html here]) solved this for me[[BR]]-- Graham Shanks
     371'''Note''': using mod_wsgi 2.5 and Python 2.6.1 gave an Internal Server Error on my system (Apache 2.2.11 and Trac 0.11.2.1). Upgrading to Python 2.6.2 (as suggested [https://www.mail-archive.com/modwsgi@googlegroups.com/msg01917.html here]) solved this for me[[BR]]-- Graham Shanks
    372372
    373373If you plan to use `mod_wsgi` in embedded mode on Windows or with the MPM worker on Linux, then you will need version 3.4 or greater. See [trac:#10675] for details.