On Oct 31, 10:14 am, Håkan Waara <[EMAIL PROTECTED]> wrote:
> Hi folks,
>
> I'm in the process of for the first time deploying a django site that  
> (unfortunately) needs to share its Apache with an existing PHP site.
>
> I've been reading a bunch about mod_wsgi and in many places there are  
> mentions that setting up apache with mpm-worker (basically  
> multithreaded mode) will not work if you're also hosting a PHP site on  
> the same Apache; Apache will crash, and the world will collapse...
>
> What I haven't been able to find out is if it's possible/worth it to  
> use mod_wsgi (efficiently) in this situation at all, and if so how to  
> do it?
>
> Does anyone have other suggestions on how to avoid mod_python in this  
> situation? Should I have a look at nginx for example?
>
> Any hints appreciated!

It is not necessary to be running Apache worker MPM to run mod_wsgi,
it will work quite happily in Apache prefork MPM, just like mod_python
can. Also note that if you have problems with mod_wsgi, using
mod_python will not help as it can be impacted by exactly the same
problems.

Now, which MPM you use is not the problem you seem to think it is. The
real problem is generally going to be mismatches in what versions of
shared libraries that PHP uses compared to what various Python modules
require. The main culprit for this is MySQL as PHP generally uses a
non reentrant variant of MySQL client libraries where as Python MySQL
module generally uses a reentrant variant of the library. Result of
this can be Apache crashing.

Other problems can also arise if you are using Debian and the broken
Python 2.4 that Debian released. Specifically, Debian folks fiddled
with the hash module code in Python 2.4 and caused a conflict between
it and a hash module in PHP. This can cause problems with session IDs
being generated incorrectly and causing session mechanisms to fail, or
could also crash Apache.

These issues and others can be found described in:

  http://code.google.com/p/modwsgi/wiki/ApplicationIssues

Now, although mod_wsgi can be used with Apache prefork MPM and you can
run your Django application in embedded mode, because prefork means
more Apache child processes, you might not find it desirable that your
fat Django application then causes Apache as a whole to use up so much
memory. In this situation, don't run your Django in mod_wsgi embedded
mode, instead create a mod_wsgi daemon mode process groups and
delegate Django to run in that instead. Use one multithreaded daemon
mode process, or if your Django application isn't thread safe, a small
number of single threaded processes.

For some quick examples of embedded versus daemon mode configuration
see:

  http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide

You should also go through other documentation on the mod_wsgi site
properly as well though. Don't assume that just reading one page, or
some ones blog on how they did it, or relying on answers to questions
you get from irc channels is going to be sufficient. This is why the
documentation exists.

Graham
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to