Changes between Version 2 and Version 3 of TracModPython
- Timestamp:
- Aug 18, 2013, 5:03:59 PM (13 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 {{{#!div class="important" 7 ** A Word of Warning ** 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 == 8 9 9 10 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. 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 == 18 13 19 14 If you just installed mod_python, you may have to add a line to load the module in the Apache configuration: … … 68 63 # For a single project 69 64 PythonOption TracEnv /var/trac/myproject 70 71 65 # For multiple projects 72 66 PythonOption TracEnvParentDir /var/trac/myprojects 73 74 67 # For the index of multiple projects 75 68 PythonOption TracEnvIndexTemplate /srv/www/htdocs/trac/project_list_template.html 76 77 69 # A space delimitted list, with a "," between key and value pairs. 78 70 PythonOption TracTemplateVars key1,val1 key2,val2 79 80 71 # Useful to get the date in the wanted order 81 72 PythonOption TracLocale en_GB.UTF8 82 83 73 # See description above 84 74 PythonOption TracUriRoot /projects/myproject … … 93 83 94 84 or you can uncompress the Genshi egg to resolve problems extracting from it. 95 96 85 === Configuring Authentication === 97 86 98 See corresponding section in the [wiki:TracModWSGI#ConfiguringAuthentication] page. 99 100 101 == Advanced Configuration 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 102 159 103 160 === Setting the Python Egg Cache === … … 129 186 Be careful about using the !PythonPath directive, and ''not'' `SetEnv PYTHONPATH`, as the latter won't work. 130 187 131 == = Setting up multiple projects ===188 == Setting up multiple projects == 132 189 133 190 The Trac mod_python handler supports a configuration option similar to Subversion's `SvnParentPath`, called `TracEnvParentDir`: … … 164 221 }}} 165 222 166 == = Virtual Host Configuration ===223 == Virtual Host Configuration == 167 224 168 225 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 … … 212 269 For multiple projects, try restarting the server as well. 213 270 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 #!xml219 #this one for other pages220 <Location ~ "/*(?!login)">221 SetHandler mod_python222 PythonHandler trac.web.modpython_frontend223 PythonOption TracEnvParentDir /projects224 PythonOption TracUriRoot /225 226 </Location>227 #this one for login page228 <Location ~ "/[^/]+/login">229 SetHandler mod_python230 PythonHandler trac.web.modpython_frontend231 PythonOption TracEnvParentDir /projects232 PythonOption TracUriRoot /233 234 #remove these if you don't want to force SSL235 RewriteEngine On236 RewriteCond %{HTTPS} off237 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}238 239 AuthType Basic240 AuthName "Trac"241 AuthUserFile /projects/.htpasswd242 Require valid-user243 </Location>244 }}}245 246 271 === Expat-related segmentation faults === #expat 247 272 … … 279 304 280 305 A success story: For me it worked out-of-box, with following trivial config: 281 {{{ #!xml306 {{{ 282 307 SetHandler mod_python 283 308 PythonInterpreter main_interpreter … … 304 329 }}} 305 330 306 === Platform specific issues 307 === = Win32 Issues ====331 332 === Win32 Issues === 308 333 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. 309 334 310 335 311 === = OS X issues ====336 === OS X issues === 312 337 313 338 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]. 314 339 315 === = SELinux issues ====340 === SELinux issues === 316 341 317 342 If Trac reports something like: ''Cannot get shared lock on db.lock'' … … 324 349 See also [http://subversion.tigris.org/faq.html#reposperms] 325 350 326 === = FreeBSD issues ====351 === FreeBSD issues === 327 352 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. 328 353 … … 333 358 export LD_PRELOAD=/usr/lib/libc_r.so 334 359 }}} 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 tracd339 340 360 341 361 === Subversion issues === … … 379 399 }}} 380 400 401 === Fedora 7 Issues === 402 Make sure you install the 'python-sqlite2' package as it seems to be required for TracModPython but not for tracd 403 381 404 382 405 === Segmentation fault with php5-mhash or other php5 modules ===