I recently upgrade this (and several client servers) over to the latest release of Debian (Debian Jessie). This process went relatively smoothly apart from a couple of gotchas that came when Apache got upgraded.
One of the problems I had is that mod_python and WSGI no longer sit happily together (unless you go through some complicated rebuilding of Python, which I was unwilling to do). I needed WSGI for various things on the server, and seeing as mod_python is viewed as deprecated these days, and I only used it for trac, it made sense to migrate this.
Thankfully, this is relatively straightforward to accomplish.
Create your WSGI script
The first step is to create a python executable called
trac.wsgi in your trac home directory, which you then make executable
touch trac.wsgi; chown www-data:www-data trac.wsgi; chmod 700 trac.wsgi
The script will look something like:
os.environ['PKG_RESOURCES_CACHE_ZIP_MANIFESTS'] = '1'
os.environ['TRAC_ENV_PARENT_DIR'] = '/path/to/trac/parent/html/'
os.environ['PYTHON_EGG_CACHE'] = '/path/to/trac/parent/cache/'
application = trac.web.main.dispatch_request
I use one domain to host all the various trac installs, therefore this one wsgi script needs to power them all. This is what the
TRAC_ENV_PARENT_DIR does. Both
PYTHON_EGG_CACHE can take their values from the existing ones you’ve presumably already set in the apache conf (assuming you’ve already got this working with mod_python).
Updating your Apache configuration
Edit your Apache configuration and comment out or remove all the mod_python entries, e.g.
# SetHandler mod_python
# PythonInterpreter main_interpreter
# PythonHandler trac.web.modpython_frontend
# PythonOption TracEnvParentDir /path/to/trac/parent/html/
# PythonOption TracUriRoot /
# PythonOption PYTHON_EGG_CACHE /path/to/trac/parent/cache/
You now need to add a
WSGIScriptAlias directive for whatever your
TracUriRoot currently is, and modify your
Directory statement to add a
WSGIApplicationGroup directive, as follows:
WSGIScriptAlias / /path/to/trac/parent/html/trac.wsgi
Finally, activate your module:
apt-get install libapache2-mod-wsgi; a2enmod wsgi