Changes between Version 2 and Version 3 of TracModPython
- Timestamp:
- Nov 9, 2012, 9:16:03 AM (12 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TracModPython
v2 v3 4 4 Trac 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. 5 5 6 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]. 7 8 == A Word of Warning == 6 {{{#!div class="important" 7 ** A Word of Warning ** 9 8 10 9 As 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. 11 12 == Simple configuration == 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 13 18 14 19 If you just installed mod_python, you may have to add a line to load the module in the Apache configuration: … … 63 68 # For a single project 64 69 PythonOption TracEnv /var/trac/myproject 70 65 71 # For multiple projects 66 72 PythonOption TracEnvParentDir /var/trac/myprojects 73 67 74 # For the index of multiple projects 68 75 PythonOption TracEnvIndexTemplate /srv/www/htdocs/trac/project_list_template.html 76 69 77 # A space delimitted list, with a "," between key and value pairs. 70 78 PythonOption TracTemplateVars key1,val1 key2,val2 79 71 80 # Useful to get the date in the wanted order 72 81 PythonOption TracLocale en_GB.UTF8 82 73 83 # See description above 74 84 PythonOption TracUriRoot /projects/myproject … … 83 93 84 94 or you can uncompress the Genshi egg to resolve problems extracting from it. 95 85 96 === Configuring Authentication === 86 97 87 Creating 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 98 Configuration for mod_ldap authentication in Apache is a bit tricky (httpd 2.2.x and OpenLDAP: slapd 2.3.19) 99 100 1. You need to load the following modules in Apache httpd.conf 101 {{{ 102 LoadModule ldap_module modules/mod_ldap.so 103 LoadModule authnz_ldap_module modules/mod_authnz_ldap.so 104 }}} 105 106 2. 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 128 Or 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 153 Note 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 155 Note 2: Active Directory requires an authenticating user/password to access records (AuthLDAPBindDN and AuthLDAPBindPassword). 156 157 Note 3: The directive "require ldap-group ..." specifies an AD group whose members are allowed access. 158 98 See corresponding section in the [wiki:TracModWSGI#ConfiguringAuthentication] page. 99 100 101 == Advanced Configuration 159 102 160 103 === Setting the Python Egg Cache === … … 186 129 Be careful about using the !PythonPath directive, and ''not'' `SetEnv PYTHONPATH`, as the latter won't work. 187 130 188 == Setting up multiple projects==131 === Setting up multiple projects === 189 132 190 133 The Trac mod_python handler supports a configuration option similar to Subversion's `SvnParentPath`, called `TracEnvParentDir`: … … 221 164 }}} 222 165 223 == Virtual Host Configuration==166 === Virtual Host Configuration === 224 167 225 168 Below is the sample configuration required to set up your trac as a virtual server (i.e. when you access it at the URLs like … … 269 212 For multiple projects, try restarting the server as well. 270 213 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 271 246 === Expat-related segmentation faults === #expat 272 247 … … 304 279 305 280 A success story: For me it worked out-of-box, with following trivial config: 306 {{{ 281 {{{#!xml 307 282 SetHandler mod_python 308 283 PythonInterpreter main_interpreter … … 329 304 }}} 330 305 331 332 === Win32 Issues===306 === Platform specific issues 307 ==== Win32 Issues ==== 333 308 If 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. 334 309 335 310 336 === OS X issues===311 ==== OS X issues ==== 337 312 338 313 When 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]. 339 314 340 === SELinux issues===315 ==== SELinux issues ==== 341 316 342 317 If Trac reports something like: ''Cannot get shared lock on db.lock'' … … 349 324 See also [http://subversion.tigris.org/faq.html#reposperms] 350 325 351 === FreeBSD issues===326 ==== FreeBSD issues ==== 352 327 Pay 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. 353 328 … … 358 333 export LD_PRELOAD=/usr/lib/libc_r.so 359 334 }}} 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 360 340 361 341 === Subversion issues === … … 399 379 }}} 400 380 401 === Fedora 7 Issues ===402 Make sure you install the 'python-sqlite2' package as it seems to be required for TracModPython but not for tracd403 404 381 405 382 === Segmentation fault with php5-mhash or other php5 modules ===