Changes between Version 11 and Version 12 of TracModPython
- Timestamp:
- Dec 14, 2014, 5:16:20 PM (9 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TracModPython
v11 v12 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 ** 8 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. 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 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 == Simple configuration == 18 9 19 10 If you just installed mod_python, you may have to add a line to load the module in the Apache configuration: … … 30 21 (Still on Debian) after you have installed mod_python, you must enable the modules in apache2 (equivalent of the above Load Module directive): 31 22 {{{ 32 a2enmod python23 a2enmod mod_python 33 24 }}} 34 25 On Fedora use, using yum: … … 43 34 PythonInterpreter main_interpreter 44 35 PythonHandler mod_python.testhandler 45 Order allow,deny46 Allow from all47 36 </Location> 48 37 }}} … … 57 46 PythonOption TracEnv /var/trac/myproject 58 47 PythonOption TracUriRoot /projects/myproject 59 Order allow,deny60 Allow from all61 48 </Location> 62 49 }}} … … 68 55 # For a single project 69 56 PythonOption TracEnv /var/trac/myproject 70 71 57 # For multiple projects 72 58 PythonOption TracEnvParentDir /var/trac/myprojects 73 74 59 # For the index of multiple projects 75 60 PythonOption TracEnvIndexTemplate /srv/www/htdocs/trac/project_list_template.html 76 77 61 # A space delimitted list, with a "," between key and value pairs. 78 62 PythonOption TracTemplateVars key1,val1 key2,val2 79 80 63 # Useful to get the date in the wanted order 81 64 PythonOption TracLocale en_GB.UTF8 82 83 65 # See description above 84 66 PythonOption TracUriRoot /projects/myproject … … 93 75 94 76 or you can uncompress the Genshi egg to resolve problems extracting from it. 95 96 77 === Configuring Authentication === 97 78 98 See corresponding section in the [wiki:TracModWSGI#ConfiguringAuthentication] page. 99 100 101 == Advanced Configuration 79 Creating password files and configuring authentication works similar to the process for [wiki:TracCgi#AddingAuthentication CGI]: 80 {{{ 81 #!xml 82 <Location /projects/myproject/login> 83 AuthType Basic 84 AuthName "myproject" 85 AuthUserFile /var/trac/myproject/.htpasswd 86 Require valid-user 87 </Location> 88 }}} 89 90 Configuration for mod_ldap authentication in Apache is a bit tricky (httpd 2.2.x and OpenLDAP: slapd 2.3.19) 91 92 1. You need to load the following modules in Apache httpd.conf 93 {{{ 94 LoadModule ldap_module modules/mod_ldap.so 95 LoadModule authnz_ldap_module modules/mod_authnz_ldap.so 96 }}} 97 98 2. Your httpd.conf also needs to look something like: 99 100 {{{ 101 #!xml 102 <Location /trac/> 103 SetHandler mod_python 104 PythonInterpreter main_interpreter 105 PythonHandler trac.web.modpython_frontend 106 PythonOption TracEnv /home/trac/ 107 PythonOption TracUriRoot /trac/ 108 Order deny,allow 109 Deny from all 110 Allow from 192.168.11.0/24 111 AuthType Basic 112 AuthName "Trac" 113 AuthBasicProvider "ldap" 114 AuthLDAPURL "ldap://127.0.0.1/dc=example,dc=co,dc=ke?uid?sub?(objectClass=inetOrgPerson)" 115 authzldapauthoritative Off 116 require valid-user 117 </Location> 118 }}} 119 120 Or the LDAP interface to a Microsoft Active Directory: 121 122 {{{ 123 #!xml 124 <Location /trac/> 125 SetHandler mod_python 126 PythonInterpreter main_interpreter 127 PythonHandler trac.web.modpython_frontend 128 PythonOption TracEnv /home/trac/ 129 PythonOption TracUriRoot /trac/ 130 Order deny,allow 131 Deny from all 132 Allow from 192.168.11.0/24 133 AuthType Basic 134 AuthName "Trac" 135 AuthBasicProvider "ldap" 136 AuthLDAPURL "ldap://adserver.company.com:3268/DC=company,DC=com?sAMAccountName?sub?(objectClass=user)" 137 AuthLDAPBindDN ldap-auth-user@company.com 138 AuthLDAPBindPassword "the_password" 139 authzldapauthoritative Off 140 # require valid-user 141 require ldap-group CN=Trac Users,CN=Users,DC=company,DC=com 142 </Location> 143 }}} 144 145 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. 146 147 Note 2: Active Directory requires an authenticating user/password to access records (AuthLDAPBindDN and AuthLDAPBindPassword). 148 149 Note 3: The directive "require ldap-group ..." specifies an AD group whose members are allowed access. 150 102 151 103 152 === Setting the Python Egg Cache === … … 129 178 Be careful about using the !PythonPath directive, and ''not'' `SetEnv PYTHONPATH`, as the latter won't work. 130 179 131 == = Setting up multiple projects ===180 == Setting up multiple projects == 132 181 133 182 The Trac mod_python handler supports a configuration option similar to Subversion's `SvnParentPath`, called `TracEnvParentDir`: … … 164 213 }}} 165 214 166 == = Virtual Host Configuration ===215 == Virtual Host Configuration == 167 216 168 217 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 261 For multiple projects, try restarting the server as well. 213 262 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 263 === Expat-related segmentation faults === #expat 247 264 … … 279 296 280 297 A success story: For me it worked out-of-box, with following trivial config: 281 {{{ #!xml298 {{{ 282 299 SetHandler mod_python 283 300 PythonInterpreter main_interpreter … … 304 321 }}} 305 322 306 === Platform specific issues 307 === = Win32 Issues ====323 324 === Win32 Issues === 308 325 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 326 310 327 311 === = OS X issues ====328 === OS X issues === 312 329 313 330 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 331 315 === = SELinux issues ====332 === SELinux issues === 316 333 317 334 If Trac reports something like: ''Cannot get shared lock on db.lock'' … … 324 341 See also [http://subversion.tigris.org/faq.html#reposperms] 325 342 326 === = FreeBSD issues ====343 === FreeBSD issues === 327 344 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 345 … … 333 350 export LD_PRELOAD=/usr/lib/libc_r.so 334 351 }}} 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 352 341 353 === Subversion issues === … … 379 391 }}} 380 392 393 === Fedora 7 Issues === 394 Make sure you install the 'python-sqlite2' package as it seems to be required for TracModPython but not for tracd 395 381 396 382 397 === Segmentation fault with php5-mhash or other php5 modules ===