Hi everyone,

Here's a questions I just posted on stackoverflow.com (because I like
that forum's layout) - but I thought posting it here might lead to
more / better coverage.  See: http://stackoverflow.com/questions/322694/

Multiple installs of Django - How to configure transparent multiplex
through the webserver (Lighttpd)?

Hi Everyone,

This question flows from the answer to: How does one set up multiple
accounts with separate databases for Django on one server? (http://
stackoverflow.com/questions/314515)

I haven't seen anything like this on Google or elsewhere (perhaps I
have the wrong vocabulary), so I think input could be a valuable
addition to the internet discourse.

How could one configure a server likeso:

* One installation of Lighttpd
* Multiple Django projects running as FastCGI
* The Django projects may be added/removed at will, and ought not to
require restarting the webserver
* Transparent redirection of all requests/responses to a particular
Django installation depending on the current user

I.e. Given Django projects (with corresponding FastCGI socket):

* Bob (/tmp/bob.fcgi)
* Sue (/tmp/sue.fcgi)
* Joe (/tmp/joe.fcgi)

The Django projects being started with a (oversimplified) script
likeso:

#!/bin/sh
NAME=bob

SOCKET=/tmp/$NAME.fcgi

PROTO=fcgi
DAEMON=true

/django_projects/$NAME/manage.py runfcgi protocol=$PROTO socket=
$SOCKET
  daemonize=$DAEMON
# ---- end

I want traffic to http://www.example.com/ to direct the request to the
correct Django application depending on the user that is logged in.

In other words, http://www.example.com should come "be" /tmp/bob.fcgi
if bob is logged in, /tmp/joe.fcgi if joe is logged in, /tmp/sue.fcgi
if sue is logged in. If no-one is logged in, it should redirect to a
login page.

I've contemplated a demultiplexing "plexer" FastCGI script with the
following algorithm:

1. If the cookie $PLEX is set, pipe request to /tmp/$PLEX.fcgi

2. Otherwise redirect to login page (which sets the cookie PLEX based
on a many-to-one mapping of Username => PLEX)

Of course as a matter of security $PLEX should be taint checked, and
$PLEX shouldn't give rise to any presumption of trust.

A Lighttpd configuration would be likeso (though Apache, Nginx, etc.
could be used just as easily):

fastcgi.server = ( "plexer.fcgi" =>
                           ( "localhost" =>
                             (
                               "socket" => "/tmp/plexer.fcgi",
                               "check-local" => "disable"
                             )
                           )
                 )
# ---- end

Input and thoughts, helpful links, and to know how to properly
implement the FastCGI plexer would all be appreciated.

Thank you.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
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