I started working on CSProjects quite a few months ago.
Problems started early on. I began by bringing our software up-to-date. This included Apache, Python, Subversion, Trac and mod_python. It took some time, but I didn’t experience any problems… until I tried to run them. Seemingly at random, but quite frequently, the Apache children would get a Bus Error. I googled around and discovered this was a fairly common problem, but none of the solutions (mostly involving library versions, particularly expat) seemed to make any difference.
After a few weeks of recompiling, stripping things down to the bare bones, turning on debugging and staring endlessly in to the output of gdb, I struck upon a solution. And annoyingly it wasn’t in any of the things I’d be staring it, but instead it appeared in the form of mod_wsgi. This wonderful piece of code does a similar job to mod_python, so I dropped it in and hoped for the best. Nope, it still crashed. But what saved me was the documentation – the author wrote, and I quote:
Do note though that some versions of the Subversion Python bindings apparently have problems when being used from within secondary Python sub interpreters rather than the main Python interpreter. The result of this will be strange Python exceptions or the Apache child processes could even crash.
To avoid such problems, the Trac application should be forced to run within the main Python interpreter. This can be done using the WSGIApplicationGroup directive with the value ‘%{GLOBAL}’.
This was precisely my problem. So I did as suggested and to much relief everything worked. And mod_wsgi a’int half good too… in my opinion it’s much better than mod_python.
At this point I had all the software working. So I took a month off. Literally.
When I returned I had to move all of our frickin’ servers. But after that I got back to CSProjects.
With the help of Adam Sampson I got down to the business of bringing these software packages together in to something we could offer our users. We did a lot of coding and a few weeks later the final CSProjects was published. Then we had to change it all and another week later CSProjects was published again. Today we launched it to our users and we already have a whole bunch of people using it. Which brings a satisfying end to a few months of work.
Oh, and the logo. I did that (mostly – I got a little bit of help). Sometimes the simple things work best…
That’s correct, it’s not as explicit. It mentions it as a fix to a runtime error, which I wasn’t getting. Whilst your site talks about apache crashing.
I still feel happier with mod_wsgi, and you posting here just confirms the commitment you have to it. Thank-you!
The issue with using the main Python interpreter is covered in the Trac/mod_python integration documentation on the Trac site, but just isn’t perhaps as explicit in describing it as the mod_wsgi documentation. For mod_python, all you had to use was ‘PythonInterpreter main_interpreter’.