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.

Changes between Version 2 and Version 3 of TracModPython


Ignore:
Timestamp:
Aug 18, 2013, 5:03:59 PM (13 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracModPython

    v2 v3  
    44Trac supports [http://www.modpython.org/ mod_python], which speeds up Trac's response times considerably, especially compared to [TracCgi CGI], and permits use of many Apache features not possible with [wiki:TracStandalone tracd]/mod_proxy.
    55
    6 {{{#!div class="important"
    7 ** A Word of Warning **
     6These instructions are for Apache 2; if you are still using Apache 1.3, you may have some luck with [trac:wiki:TracModPython2.7 TracModPython2.7].
     7
     8== A Word of Warning ==
    89
    910As of 16^th^ June 2010, the mod_python project is officially dead.  If you are considering using mod_python for a new installation, '''please don't'''!  There are known issues which will not be fixed and there are now better alternatives.  Check out the main TracInstall pages for your target version for more information.
    10 }}}
    11 
    12 
    13 These instructions are for Apache 2; if you are still using Apache 1.3, you may have some luck with [trac:wiki:TracModPython2.7 TracModPython2.7], but you'll be totally on your own.
    14 
    15 [[PageOutline(2-3,Overview,inline)]]
    16 
    17 == Simple configuration: single project == #Simpleconfiguration
     11
     12== Simple configuration ==
    1813
    1914If you just installed mod_python, you may have to add a line to load the module in the Apache configuration:
    … …  
    6863    # For a single project
    6964    PythonOption TracEnv /var/trac/myproject
    70 
    7165    # For multiple projects
    7266    PythonOption TracEnvParentDir /var/trac/myprojects
    73 
    7467    # For the index of multiple projects
    7568    PythonOption TracEnvIndexTemplate /srv/www/htdocs/trac/project_list_template.html
    76 
    7769    # A space delimitted list, with a "," between key and value pairs.
    7870    PythonOption TracTemplateVars key1,val1 key2,val2
    79 
    8071    # Useful to get the date in the wanted order
    8172    PythonOption TracLocale en_GB.UTF8
    82 
    8373    # See description above       
    8474    PythonOption TracUriRoot /projects/myproject
    … …  
    9383
    9484or you can uncompress the Genshi egg to resolve problems extracting from it.
    95 
    9685=== Configuring Authentication ===
    9786
    98 See corresponding section in the [wiki:TracModWSGI#ConfiguringAuthentication] page.
    99 
    100 
    101 == Advanced Configuration
     87Creating password files and configuring authentication works similar to the process for [wiki:TracCgi#AddingAuthentication CGI]:
     88{{{
     89#!xml
     90<Location /projects/myproject/login>
     91  AuthType Basic
     92  AuthName "myproject"
     93  AuthUserFile /var/trac/myproject/.htpasswd
     94  Require valid-user
     95</Location>
     96}}}
     97
     98Configuration for mod_ldap authentication in Apache is a bit tricky (httpd 2.2.x and OpenLDAP: slapd 2.3.19)
     99
     1001. You need to load the following modules in Apache httpd.conf
     101{{{
     102LoadModule ldap_module modules/mod_ldap.so
     103LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
     104}}}
     105
     1062. Your httpd.conf also needs to look something like:
     107
     108{{{
     109#!xml
     110<Location /trac/>
     111  SetHandler mod_python
     112  PythonInterpreter main_interpreter
     113  PythonHandler trac.web.modpython_frontend
     114  PythonOption TracEnv /home/trac/
     115  PythonOption TracUriRoot /trac/
     116  Order deny,allow
     117  Deny from all
     118  Allow from 192.168.11.0/24
     119  AuthType Basic
     120  AuthName "Trac"
     121  AuthBasicProvider "ldap"
     122  AuthLDAPURL "ldap://127.0.0.1/dc=example,dc=co,dc=ke?uid?sub?(objectClass=inetOrgPerson)"
     123  authzldapauthoritative Off
     124  require valid-user
     125</Location>
     126}}}
     127
     128Or the LDAP interface to a Microsoft Active Directory:
     129
     130{{{
     131#!xml
     132<Location /trac/>
     133  SetHandler mod_python
     134  PythonInterpreter main_interpreter
     135  PythonHandler trac.web.modpython_frontend
     136  PythonOption TracEnv /home/trac/
     137  PythonOption TracUriRoot /trac/
     138  Order deny,allow
     139  Deny from all
     140  Allow from 192.168.11.0/24
     141  AuthType Basic
     142  AuthName "Trac"
     143  AuthBasicProvider "ldap"
     144  AuthLDAPURL "ldap://adserver.company.com:3268/DC=company,DC=com?sAMAccountName?sub?(objectClass=user)"
     145  AuthLDAPBindDN       ldap-auth-user@company.com
     146  AuthLDAPBindPassword "the_password"
     147  authzldapauthoritative Off
     148  # require valid-user
     149  require ldap-group CN=Trac Users,CN=Users,DC=company,DC=com
     150</Location>
     151}}}
     152
     153Note 1: This is the case where the LDAP search will get around the multiple OUs, conecting to Global Catalog Server portion of AD (Notice the port is 3268, not the normal LDAP 389). The GCS is basically a "flattened" tree which allows searching for a user without knowing to which OU they belong.
     154
     155Note 2: Active Directory requires an authenticating user/password to access records (AuthLDAPBindDN and AuthLDAPBindPassword).
     156
     157Note 3: The directive "require ldap-group ..."  specifies an AD group whose members are allowed access.
     158
    102159
    103160=== Setting the Python Egg Cache ===
    … …  
    129186Be careful about using the !PythonPath directive, and ''not'' `SetEnv PYTHONPATH`, as the latter won't work.
    130187
    131 === Setting up multiple projects ===
     188== Setting up multiple projects ==
    132189
    133190The Trac mod_python handler supports a configuration option similar to Subversion's `SvnParentPath`, called `TracEnvParentDir`:
    … …  
    164221}}}
    165222
    166 === Virtual Host Configuration ===
     223== Virtual Host Configuration ==
    167224
    168225Below is the sample configuration required to set up your trac as a virtual server (i.e. when you access it at the URLs like
    … …  
    212269For multiple projects, try restarting the server as well.
    213270
    214 ===Login Not Working===
    215 If you've used <Location /> directive, it will override any other directives, as well as <Location /Login>.
    216 The workaround is to use negation expression as follows (for multi project setups):
    217 {{{
    218 #!xml
    219 #this one for other pages
    220 <Location ~ "/*(?!login)">
    221    SetHandler mod_python
    222    PythonHandler trac.web.modpython_frontend
    223    PythonOption TracEnvParentDir /projects
    224    PythonOption TracUriRoot /
    225 
    226 </Location>
    227 #this one for login page
    228 <Location ~ "/[^/]+/login">
    229    SetHandler mod_python
    230    PythonHandler trac.web.modpython_frontend
    231    PythonOption TracEnvParentDir /projects
    232    PythonOption TracUriRoot /
    233 
    234    #remove these if you don't want to force SSL
    235    RewriteEngine On
    236    RewriteCond %{HTTPS} off
    237    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    238 
    239    AuthType Basic
    240    AuthName "Trac"
    241    AuthUserFile /projects/.htpasswd
    242    Require valid-user
    243 </Location>
    244 }}}
    245 
    246271=== Expat-related segmentation faults === #expat
    247272
    … …  
    279304
    280305A success story: For me it worked out-of-box, with following trivial config:
    281 {{{#!xml
     306{{{
    282307SetHandler mod_python
    283308PythonInterpreter main_interpreter
    … …  
    304329}}}
    305330
    306 === Platform specific issues
    307 ==== Win32 Issues ====
     331
     332=== Win32 Issues ===
    308333If you run trac with mod_python < 3.2 on Windows, uploading attachments will '''not''' work. This problem is resolved in mod_python 3.1.4 or later, so please upgrade mod_python to fix this.
    309334
    310335
    311 ==== OS X issues ====
     336=== OS X issues ===
    312337
    313338When using mod_python on OS X you will not be able to restart Apache using `apachectl restart`. This is apparently fixed in mod_python 3.2, but there's also a patch available for earlier versions [http://www.dscpl.com.au/projects/vampire/patches.html here].
    314339
    315 ==== SELinux issues ====
     340=== SELinux issues ===
    316341
    317342If Trac reports something like: ''Cannot get shared lock on db.lock''
    … …  
    324349See also [http://subversion.tigris.org/faq.html#reposperms]
    325350
    326 ==== FreeBSD issues ====
     351=== FreeBSD issues ===
    327352Pay attention to the version of the installed mod_python and sqlite packages. Ports have both the new and old ones, but earlier versions of pysqlite and mod_python won't integrate as the former requires threaded support in python, and the latter requires a threadless install.
    328353
    … …  
    333358export LD_PRELOAD=/usr/lib/libc_r.so
    334359}}}
    335 
    336 
    337 ==== Fedora 7 Issues ====
    338 Make sure you install the 'python-sqlite2' package as it seems to be required for TracModPython but not for tracd
    339 
    340360
    341361=== Subversion issues ===
    … …  
    379399}}}
    380400
     401=== Fedora 7 Issues ===
     402Make sure you install the 'python-sqlite2' package as it seems to be required for TracModPython but not for tracd
     403
    381404
    382405=== Segmentation fault with php5-mhash or other php5 modules ===