Changes between Version 3 and Version 4 of TracModPython


Ignore:
Timestamp:
Jan 13, 2020, 11:22:00 PM (6 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracModPython

    v3 v4  
    1 = Trac and mod_python =
    21[[TracGuideToc]]
    32
     3
     4
     5
    46Trac 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.
    57
    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 
    158[[PageOutline(2-3,Overview,inline)]]
    169
    17 == Simple configuration: single project == #Simpleconfiguration
     10== Simple configuration: single project #Simpleconfiguration
    1811
    1912If you just installed mod_python, you may have to add a line to load the module in the Apache configuration:
    20 {{{
     13{{{
    2114LoadModule python_module modules/mod_python.so
    2215}}}
    2316
    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
     19On Debian using apt-get
     20{{{
    2821apt-get install libapache2-mod-python libapache2-mod-python-doc
    2922}}}
    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
     24Still on Debian, after you have installed mod_python, you must enable the modules in apache2, equivalent to the above Load Module directive:
     25{{{#!sh
    3226a2enmod python
    3327}}}
     28
    3429On Fedora use, using yum:
    35 {{{
     30{{{
    3631yum install mod_python
    3732}}}
    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
     34You 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
    4136<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>
    4749</Location>
    4850}}}
    4951
    5052A simple setup of Trac on mod_python looks like this:
    51 {{{
    52 #!xml
     53{{{#!apache
    5354<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
     72The 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
     74The options available are:
     75{{{#!apache
     76# For a single project
     77PythonOption TracEnv /var/trac/myproject
     78
     79# For multiple projects
     80PythonOption TracEnvParentDir /var/trac/myprojects
     81
     82# For the index of multiple projects
     83PythonOption TracEnvIndexTemplate /srv/www/htdocs/trac/project_list_template.html
     84
     85# A space delimitted list, with a "," between key and value pairs.
     86PythonOption TracTemplateVars key1,val1 key2,val2
     87
     88# Useful to get the date in the wanted order
     89PythonOption TracLocale en_GB.UTF8
     90
     91# See description above       
     92PythonOption TracUriRoot /projects/myproject
     93}}}
     94
     95=== Python Egg Cache
     96
     97Compressed 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
    9199PythonOption PYTHON_EGG_CACHE /var/trac/myprojects/egg-cache
    92100}}}
    93101
    94 or you can uncompress the Genshi egg to resolve problems extracting from it.
    95 
    96 === Configuring Authentication ===
     102r you can uncompress the Genshi egg to resolve problems extracting from it.
     103
     104=== Configuring Authentication
    97105
    98106See corresponding section in the [wiki:TracModWSGI#ConfiguringAuthentication] page.
    99107
    100 
    101108== Advanced Configuration
    102109
    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
     112If 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
    109115<Location /projects/myproject>
    110116  ...
     
    114120}}}
    115121
    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
     124If 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
    122126<Location /projects/myproject>
    123127  ...
     
    129133Be careful about using the !PythonPath directive, and ''not'' `SetEnv PYTHONPATH`, as the latter won't work.
    130134
    131 === Setting up multiple projects ===
     135=== Setting up multiple projects
    132136
    133137The Trac mod_python handler supports a configuration option similar to Subversion's `SvnParentPath`, called `TracEnvParentDir`:
    134 {{{
    135 #!xml
     138{{{#!apache
    136139<Location /projects>
    137140  SetHandler mod_python
     
    146149
    147150If you don't want to have the subdirectory listing as your projects home page you can use a
    148 {{{
    149 #!xml
     151{{{#!apache
    150152<LocationMatch "/.+/">
    151153}}}
     
    154156
    155157You can also use the same authentication realm for all of the projects using a `<LocationMatch>` directive:
    156 {{{
    157 #!xml
     158{{{#!apache
    158159<LocationMatch "/projects/[^/]+/login">
    159160  AuthType Basic
     
    164165}}}
    165166
    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
     169Below 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 *>
    174174    DocumentRoot /var/www/myproject
    175175    ServerName trac.mycompany.com