Late last year my patched along circa 1999 Dell server decided to go belly up. That server was running Centos-5.2 and hosted my Trac installation running Trac-0.11b, running in Apache using mod_wsgi. So recently we finally replaced the server with a brand spanking new Dell server (heck if its predecessor lasted almost 10years, I hope this new one lasts at least 5years). I installed RHEL5.3 on this server instead of Centos since we (the IT group at work) want to simplify our OS variations and stick with the commercially available RedHat Enterprise Linux. And that is where my problems began.....
Well as we all know RHEL5.x still only includes Python2.4 with the distribution. Centos and other variant have started to include or at least are upgradable to Python2.5. While RHEL5 does include mod_python, mod_wsgi, Python2.4 and Trac0.10.x... I needed Trac0.11.x
Solution: drop RHEL and go with Centos... just kidding
So actually it turns out not to be that bad... you just have to do a lot of manual compliations... so here is my step by step solution:
Step 1. install Python from source, I went with the latest 2.6.1 (not 3 yet since on my Mac I've had backwards compitibility issues and didn't want to deal with them)
the 2 key steps: --enable-shared in the configure statement does the work needed later by mod_wsgi and mod_python, and 'make altinstall' which tells the installation to use /usr/local and to appended the 2.6 to the commands to prevent messing up system scripts which are based on Python 2.4 and in many cases (yum included) do not work with Pytohn2.6. The last step 'ldconfig' simply refreshes the library information which is needed before compiling mod_wsgi or mod_python from source.
./configure --with-threads --enable-shared make make altinstall ldconfig
optionally required step: if the shared library for Python is not seen in the '.../python2.6/config/' you'll need to add a symbolic link
now on my server, the python config directory was at: /usr/local/lib/python2.6/configln -s ../../libpython2.5.so .
Step 2. install 'mod_wsgi' from source.
here the only statement of difference is to tell mod_wsgi to use python2.6 instead of the system default 2.4, now if you have installation errors check out http://code.google.com/p/modwsgi/wiki/InstallationIssues this page also explains the optional step after the Python installation.
./configure --with-python=/usr/local/bin/python2.6 make make install
Step 3. install 'mod_python' from source.
as you can see, there is no difference between the methods for compiling mod_python and mod_wsgi. And again the main reason for compiling from source is to enable the use of Python2.6. And since both of these modules will be using Python, this is the reason of compiling Python2.6 with the '--enable-shared' flag.
./configure --with-python=/usr/local/bin/python2.6 make make install
Step 5. using easy_install tool from the setuptools in Step 4, install Trac.
this will automatically install Trac.11.x since it is the latest version compatible with Python2.6, and using 'easy_install-2.6' will ensure that you are using Python 2.6easy_install-2.6 trac
Step 6. configure Apache like instructed by TracModWSGI.
Now that wasn't to painful, the only clevat... now since all these packages have been installed from source, for security purposes, you have to remember on your own to update/patch these installs.
update: I've run into a slight problem where Trac can't access SVN since the libraries aren't 'accessible' by Python2.6, I'l update again when this is solved
update2: Solution to get the SVN-SWIG installation to work with Python2.6... recompile subversion, only 'change' needed was manually hard coding the version of Python in the './configure' file
# Python: Used for testsuite, and bindingsOnly remaining issue was where the files were installed to. Presumingly there is another line in the ./configure file to correct this, but I went the 'quick' way... symbolic links.
#PYTHON="`$abs_srcdir/build/find_python.sh`"
PYTHON="/usr/local/bin/python2.6"
cd /usr/local/lib/python2.6
ln -s /usr/local/lib/svn-python/* .