2009/3/23 [email protected] <[email protected]>:
>
> Hi Graham,
> One final question. The scripts above required a wsgi file per site.
> I've rewritten it to direct all the sites through a single .wsgi file,
> then used thin wrapper round the application to send it on its way to
> the correct (django) settings based on environs settings. This seems
> to work pretty well, even though it removes the 'touch' reloading
> method.
>
> But I'm concerned whether this script might be setting itself up for a
> fall due to the way modwsgi is handling apache processes in embedded
> mode since a new application group is being defined for each site
> (which it needs to be since each site may be operating in different
> virtualenv)? Isn't this what the daemon process mode is for? I'm
> thinking of this line from the Configuration Guidelines:
>
> 'Where multiple applications, potentially owned by different users,
> need to be run, 'daemon' mode of mod_wsgi should instead be used."
Using daemon mode would certainly be preferable, but as you already
know, one can do it with different application groups (sub
interpreters) within same process.
> If that's true can the daemon process name be defined dynamically? Or
> does this method necessarily require embedded mode?
You can switch it around.
WSGIProcessGroup %{ENV:subdomain}
WSGIApplicationGroup %{GLOBAL}
The only problem with this is that you then need to statically define
a WSGIDaemonProcess directive for each sub domain, which is contrary
to what your original aims were from memory. That is, to not have to
change the Apache configuration to add a new site.
One of the main aims in mod_wsgi 4.0, see:
http://blog.dscpl.com.au/2009/03/future-roadmap-for-modwsgi.html
is to provide support for dynamic creation of daemon process groups
through defining only a single parameterisable template.
So, you will not get exactly what you wish until then.
The closest thing you will get for now is to define in advance
WSGIDaemonProcess directives for a pool of daemon process groups. This
would be given generic names. You would then use a RewriteMap to
dynamically assign stuff for a sub domain to one of the daemon process
groups in the pool of daemon process groups.
WSGIDaemonProcess site-1
WSGIDaemonProcess site-2
WSGIDaemonProcess site-3
WSGIDaemonProcess site-4
WSGIDaemonProcess site-5
WSGIDaemonProcess site-6
WSGIDaemonProcess site-7
RewriteEngine On
RewriteMap wsgiprocmap txt:/etc/httpd/wsgiprocmap.txt
RewriteRule . - [E=PROCESS_GROUP:${wsgiprocmap:%{ENV:subdomain}}]
WSGIProcessGroup %{ENV:PROCESS_GROUP}
Then when you add a new site, as well as creating directories in file
system, add an entry in the rewrite map, such as:
foobar.com site-1
Does mean you have to do some manual stuff in Apache configuration,
but you can at least preconfigure a whole bunch and then map then with
the write map file without having to restart Apache, as Apache will
automatically reread the rewrite map file when it changes.
Have I captured the intent of what you are trying to do?
Graham
> Once again, many thanks for your advice on this.
> Ben
>
>
> On Mar 15, 12:20 am, Graham Dumpleton <[email protected]>
> wrote:
>> Bouncing this back onto list for general interest.
>>
>> 2009/3/15 [email protected] <[email protected]>:
>>
>>
>>
>> > Been meaning to do this for ages now. Thanks Graham for all your help
>> > in other posts about this. Anyhow, following on from the thread as
>> > mentioned above, script below includes media handling, using
>> > VirtualDocumentRoot as mentioned above. The hard work was really
>> > already done above and this one has been modified to handle
>> > subdomains, using the subdomain name to identify the relevant
>> > folders.
>>
>> > I only just got it work and have posted it in a slightly overexcited
>> > way so probably needs tidying and strengthening. But any obvservations
>> > most welcome (yup favicon not handled), thanks:
>>
>> > RewriteEngine on
>> > RewriteMap tolower int:tolower
>>
>> > VirtualDocumentRoot /home/sites/static/%1/
>>
>> > <Directory /home/sites/static/* >
>> > Order deny,allow
>> > Allow from all
>> > </Directory>
>>
>> > RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.co\.uk$ [NC]
>> > RewriteRule . - [E=subdomain:%1]
>>
>> > RewriteCond %{REQUEST_URI} !^/media/*
>> > RewriteCond %{REQUEST_URL} !^favicon.ico
>> > RewriteRule ^/(.*) /home/sites/init/modwsgi/${tolower:%
>> > {ENV:subdomain}}/django.wsgi/$1
>> > RewriteRule . - [E=APPLICATION_GROUP:${tolower:%{SERVER_NAME}}]
>>
>> > WSGIProcessGroup %{GLOBAL}
>> > WSGIApplicationGroup %{ENV:subdomain}
>>
>> > <Directory /home/sites/init/modwsgi/* >
>> > Order allow,deny
>> > Allow from all
>> > Options ExecCGI
>> > AddHandler wsgi-script .wsgi
>> > </Directory>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"modwsgi" 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/modwsgi?hl=en
-~----------~----~----~----~------~----~------~--~---