Changes between Version 3 and Version 4 of TracModPython
- Timestamp:
- Jan 13, 2020, 11:22:00 PM (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TracModPython
v3 v4 1 = Trac and mod_python =2 1 [[TracGuideToc]] 3 2 3 4 5 4 6 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 7 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 8 [[PageOutline(2-3,Overview,inline)]] 16 9 17 == Simple configuration: single project ==#Simpleconfiguration10 == Simple configuration: single project #Simpleconfiguration 18 11 19 12 If you just installed mod_python, you may have to add a line to load the module in the Apache configuration: 20 {{{ 13 {{{ 21 14 LoadModule python_module modules/mod_python.so 22 15 }}} 23 16 24 '' Note: The exact path to the module depends on how the HTTPD installation is laid out.''25 26 On Debian using apt-get 27 {{{ 17 '' 18 19 On Debian using apt-get 20 {{{ 28 21 apt-get install libapache2-mod-python libapache2-mod-python-doc 29 22 }}} 30 (Still on Debian) after you have installed mod_python, you must enable the modules in apache2 (equivalent of the above Load Module directive): 31 {{{ 23 24 Still on Debian, after you have installed mod_python, you must enable the modules in apache2, equivalent to the above Load Module directive: 25 {{{#!sh 32 26 a2enmod python 33 27 }}} 28 34 29 On Fedora use, using yum: 35 {{{ 30 {{{ 36 31 yum install mod_python 37 32 }}} 38 You can test your mod_python installation by adding the following to your httpd.conf. You should remove this when you are done testing for security reasons. Note: mod_python.testhandler is only available in mod_python 3.2+. 39 {{{ 40 #!xml 33 34 You can test your mod_python installation by adding the following to your httpd.conf. You should remove this when you are done testing for security reasons. Note: mod_python.testhandler is only available in mod_python 3.2+. 35 {{{#!apache 41 36 <Location /mpinfo> 42 SetHandler mod_python 43 PythonInterpreter main_interpreter 44 PythonHandler mod_python.testhandler 45 Order allow,deny 46 Allow from all 37 SetHandler mod_python 38 PythonInterpreter main_interpreter 39 PythonHandler mod_python.testhandler 40 # For Apache 2.2 41 <IfModule !mod_authz_core.c> 42 Order allow,deny 43 Allow from all 44 </IfModule> 45 # For Apache 2.4 46 <IfModule mod_authz_core.c> 47 Require all granted 48 </IfModule> 47 49 </Location> 48 50 }}} 49 51 50 52 A simple setup of Trac on mod_python looks like this: 51 {{{ 52 #!xml 53 {{{#!apache 53 54 <Location /projects/myproject> 54 SetHandler mod_python 55 PythonInterpreter main_interpreter 56 PythonHandler trac.web.modpython_frontend 57 PythonOption TracEnv /var/trac/myproject 58 PythonOption TracUriRoot /projects/myproject 59 Order allow,deny 60 Allow from all 61 </Location> 62 }}} 63 64 The option '''`TracUriRoot`''' may or may not be necessary in your setup. Try your configuration without it; if the URLs produced by Trac look wrong, if Trac does not seem to recognize URLs correctly, or you get an odd "No handler matched request to..." error, add the '''`TracUriRoot`''' option. You will notice that the `Location` and '''`TracUriRoot`''' have the same path. 65 66 The options available are 67 {{{ 68 # For a single project 69 PythonOption TracEnv /var/trac/myproject 70 71 # For multiple projects 72 PythonOption TracEnvParentDir /var/trac/myprojects 73 74 # For the index of multiple projects 75 PythonOption TracEnvIndexTemplate /srv/www/htdocs/trac/project_list_template.html 76 77 # A space delimitted list, with a "," between key and value pairs. 78 PythonOption TracTemplateVars key1,val1 key2,val2 79 80 # Useful to get the date in the wanted order 81 PythonOption TracLocale en_GB.UTF8 82 83 # See description above 84 PythonOption TracUriRoot /projects/myproject 85 }}} 86 87 === Python Egg Cache === 88 89 Compressed python eggs like Genshi are normally extracted into a directory named `.python-eggs` in the users home directory. Since apache's home usually is not writable an alternate egg cache directory can be specified like this: 90 {{{ 55 SetHandler mod_python 56 PythonInterpreter main_interpreter 57 PythonHandler trac.web.modpython_frontend 58 PythonOption TracEnv /var/trac/myproject 59 PythonOption TracUriRoot /projects/myproject 60 # For Apache 2.2 61 <IfModule !mod_authz_core.c> 62 Order allow,deny 63 Allow from all 64 </IfModule> 65 # For Apache 2.4 66 <IfModule mod_authz_core.c> 67 Require all granted 68 </IfModule> 69 </Location> 70 }}} 71 72 The option '''`TracUriRoot`''' may or may not be necessary in your setup. Try your configuration without it; if the URLs produced by Trac look wrong, if Trac does not seem to recognize URLs correctly, or you get an odd "No handler matched request to..." error, add the '''`TracUriRoot`''' option. You will notice that the `Location` and '''`TracUriRoot`''' have the same path. 73 74 The options available are: 75 {{{#!apache 76 # For a single project 77 PythonOption TracEnv /var/trac/myproject 78 79 # For multiple projects 80 PythonOption TracEnvParentDir /var/trac/myprojects 81 82 # For the index of multiple projects 83 PythonOption TracEnvIndexTemplate /srv/www/htdocs/trac/project_list_template.html 84 85 # A space delimitted list, with a "," between key and value pairs. 86 PythonOption TracTemplateVars key1,val1 key2,val2 87 88 # Useful to get the date in the wanted order 89 PythonOption TracLocale en_GB.UTF8 90 91 # See description above 92 PythonOption TracUriRoot /projects/myproject 93 }}} 94 95 === Python Egg Cache 96 97 Compressed Python eggs like Genshi are normally extracted into a directory named `.python-eggs` in the users home directory. Since Apache's home usually is not writeable, an alternate egg cache directory can be specified like this: 98 {{{#!apache 91 99 PythonOption PYTHON_EGG_CACHE /var/trac/myprojects/egg-cache 92 100 }}} 93 101 94 or you can uncompress the Genshi egg to resolve problems extracting from it.95 96 === Configuring Authentication ===102 r you can uncompress the Genshi egg to resolve problems extracting from it. 103 104 === Configuring Authentication 97 105 98 106 See corresponding section in the [wiki:TracModWSGI#ConfiguringAuthentication] page. 99 107 100 101 108 == Advanced Configuration 102 109 103 === Setting the Python Egg Cache === 104 105 If the Egg Cache isn't writeable by your Web server, you'll either have to change the permissions, or point Python to a location where Apache can write. This can manifest itself as a ''500 internal server error'' and/or a complaint in the syslog. 106 107 {{{ 108 #!xml 110 === Setting the Python Egg Cache 111 112 If the Egg Cache isn't writeable by your Web server, you'll either have to change the permissions, or point Python to a location where Apache can write. This can manifest itself as a `500 internal server error` and/or a complaint in the syslog. 113 114 {{{#!apache 109 115 <Location /projects/myproject> 110 116 ... … … 114 120 }}} 115 121 116 117 === Setting the !PythonPath === 118 119 If the Trac installation isn't installed in your Python path, you'll have to tell Apache where to find the Trac mod_python handler using the `PythonPath` directive: 120 {{{ 121 #!xml 122 === Setting the !PythonPath 123 124 If the Trac installation isn't installed in your Python path, you will have to tell Apache where to find the Trac mod_python handler using the `PythonPath` directive: 125 {{{#!apache 122 126 <Location /projects/myproject> 123 127 ... … … 129 133 Be careful about using the !PythonPath directive, and ''not'' `SetEnv PYTHONPATH`, as the latter won't work. 130 134 131 === Setting up multiple projects ===135 === Setting up multiple projects 132 136 133 137 The Trac mod_python handler supports a configuration option similar to Subversion's `SvnParentPath`, called `TracEnvParentDir`: 134 {{{ 135 #!xml 138 {{{#!apache 136 139 <Location /projects> 137 140 SetHandler mod_python … … 146 149 147 150 If you don't want to have the subdirectory listing as your projects home page you can use a 148 {{{ 149 #!xml 151 {{{#!apache 150 152 <LocationMatch "/.+/"> 151 153 }}} … … 154 156 155 157 You can also use the same authentication realm for all of the projects using a `<LocationMatch>` directive: 156 {{{ 157 #!xml 158 {{{#!apache 158 159 <LocationMatch "/projects/[^/]+/login"> 159 160 AuthType Basic … … 164 165 }}} 165 166 166 === Virtual Host Configuration === 167 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 169 !http://trac.mycompany.com): 170 171 {{{ 172 #!xml 173 <VirtualHost * > 167 === Virtual Host Configuration 168 169 Below is the sample configuration required to set up your Trac as a virtual server, ie when you access it at the URLs like 170 `http://trac.mycompany.com`: 171 172 {{{#!apache 173 <VirtualHost *> 174 174 DocumentRoot /var/www/myproject 175 175 ServerName trac.mycompany.com
