Got it! I think your regex was just a little off ... changed the * to
(.+) and everything seems to work with the other syntax as it is:

<DirectoryMatch /usr/local/django/(.+)/apache>
       Order allow,deny
       Allow from all
       Options ExecCGI
       AddHandler wsgi-script .wsgi
</DirectoryMatch>

Also works under an SSL configuration. I'm going to work through the
static file serving problem sometime, I'll post here when I figure out
a good way to do that. Thanks!


On Jan 5, 10:04 am, Fotinakis <[email protected]> wrote:
> Definitely on the right track, that's exactly what I'm looking for ...
> one error though in the Apache logs:
>
> File does not exist: /usr/local/django/project/apache/django.wsgi/
>
> (including the trailing slash) I've confirmed that the file does
> definitely exist. It seems to be trying to stat the full file and
> thinking that it is a directory. For example:
> $ stat /usr/local/django/project/apache/django.wsgi/
> stat: cannot stat `/usr/local/django/asusu/apache/django.wsgi/': Not a
> directory
>
> A stat without the trailing slash works as expected. Bug? Or do we
> just need a different syntax in the RewriteRule around /$1 ?
>
> Thanks for the help and your dedication to your community. Every other
> post I've seen recently has had your name on it, thanks for supporting
> all of us so much. :)
>
> On Jan 5, 3:18 am, "Graham Dumpleton" <[email protected]>
> wrote:
>
> > I can probably provide an answer even though you haven't replied.
>
> > RewriteEngine On
> > RewriteMap tolower int:tolower
>
> > RewriteRule ^/(.*)
> > /usr/local/django/${tolower:%{SERVER_NAME}}/apache/django.wsgi/$1
> > RewriteRule . - [E=APPLICATION_GROUP:${tolower:%{SERVER_NAME}}]
>
> > WSGIProcessGroup %{GLOBAL}
> > WSGIApplicationGroup %{ENV:APPLICATION_GROUP}
>
> > <DirectoryMatch /usr/local/django/*/apache>
> > Order allow,deny
> > Allow from all
> > Options ExecCGI
> > AddHandler wsgi-script .wsgi
> > </DirectoryMatch>
>
> > Bit more work required if you want static media served by same server,
> > more so if you want separate static media directories for each Django
> > site. To handle the static media directory you could probably use
> > VirtualDocumentRoot to specify the location of document roots for all
> > sites. Then add an appropriate RewriteCond to above so RewriteRule
> > isn't done for URLs which map to static media directories.
>
> > Another RewriteCond you might want is to check for existence of the
> > WSGI script file for a particular host value and if not present force
> > a forbidden response. This way avoids problems with getting strange
> > errors if request arrives with host for which there isn't yet a
> > configured site.
>
> > So, play with that and post back what you come up with that works, or
> > if you have other issues.
>
> > Graham
>
> > 2009/1/5 Graham Dumpleton <[email protected]>:
>
> > > Which of the methods in that document are you trying to use,
> > > VirtualDocumentRoot from mod_vhost_alias or a mod_rewrite approach?
>
> > > Can you post example for the actual virtual host directory
> > > configuration you are using for document root/static files so can see
> > > what it needs to work in conjunction with, or have you not even looked
> > > at that aspect yet.
>
> > > Graham
>
> > > 2009/1/5 Fotinakis <[email protected]>:
>
> > >> I am using mod_wsgi in embedded mode and attempting to make an Apache
> > >> configuration that will not require any VirtualHost changes to deploy
> > >> new Django sites (similar to the concept of dynamically configured
> > >> mass virtual hostinghttp://httpd.apache.org/docs/2.2/vhosts/mass.html
> > >> ). All that would be required is to create a new folder, such as /usr/
> > >> local/django/_SERVER_NAME_/ ... and then it will Just Work. At least,
> > >> that is the goal.
>
> > >> I've tried many variations of the following (kind of ugly)
> > >> configuration options:
>
> > >> # Causes the server name to be obtained from the client's Host
> > >> headers, instead of the ServerName directive
> > >> UseCanonicalName Off
>
> > >> RewriteEngine On
> > >> # ServerName derived from a Host: header may be in any case
> > >> RewriteMap lowercase int:tolower
> > >> RewriteRule . - [E=wsgiservername:${lowercase:%{SERVER_NAME}}]
>
> > >> WSGIScriptAlias / /usr/local/django/%{ENV:wsgiservername}/apache/
> > >> django.wsgi
> > >> <Directory /usr/local/django/%{ENV:wsgiservername}/apache>
> > >>        Order deny,allow
> > >>        Allow from all
> > >> </Directory>
>
> > >> The error log always says something like:
> > >> Target WSGI script not found or unable to stat: /usr/local/django/%
> > >> {ENV:wsgiservername}
>
> > >> I'm assuming then that WSGIScriptAlias doesn't parse environment
> > >> variables? Though, I'm probably terribly misunderstanding the order
> > >> that Apache follows when interpreting directives.
>
> > >> Is there a way to do this with a WSGIScriptAliasMatch? The problem I
> > >> see is that the requested path doesn't contain the server name, so a
> > >> regex can't pull it out. Perhaps a RewriteRule can mangle the path and
> > >> put the ServerName in? :/
>
> > >> WSGIScriptAliasMatch ^( **can the ServerName ever exist here?**)/ /usr/
> > >> local/django/$1/apache/django.wsgi
>
> > >> That seems to be the cleanest way to do it, if something like that
> > >> would work (is there potential here for a new directive, such as
> > >> WSGIVirtualScriptAlias?). Any ideas would be much appreciated ...
> > >> thank you!
>
>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to