这个问题从答案流向:How does one set up multiple accounts with separate databases for Django on one server?多次安装Django - 如何通过网络服务器(Lighttpd)配置透明Multiplex?
我还没有见过这样的事情在谷歌或其他地方(也许我错了词汇),所以我觉得输入可以是一个有价值的除了互联网话语。
一个人怎么能配置likeso服务器:
- 一个Lighttpd的安装
- 多个Django项目运行的FastCGI的
- Django的项目可以添加/随意删除,不应该要求重新启动网络服务器
- 根据当前用户将所有请求/响应透明地重定向到特定的Django安装
I.e.鉴于Django的项目(具有相应的FastCGI插座):
- 鲍勃(/tmp/bob.fcgi)
- 苏(/tmp/sue.fcgi)
- 乔(/tmp/joe.fcgi)
Django的项目正在启动了(简单化)脚本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
我想流量http://www.example.com/直接将R eQUEST的取决于已登录用户的正确的Django应用程序。
换句话说,http://www.example.com应该来“是” /tmp/bob.fcgi如果Bob已登录,/tmp/joe.fcgi如果joe是如果sue登录,则登录/tmp/sue.fcgi。如果没有人登录,则应该重定向到登录页面。
我设想的解复用 “路器” 以下算法FastCGI的脚本:
如果cookie $ PLEX设置,管请求/tmp/$PLEX.fcgi
否则重定向到登录页面(这将基于用户名=> PLEX的一个多到一的映射饼干PLEX)
当然作为安全$ PLEX的问题应该是污点检查,$ PLEX不应引起任何推定信任。
一个lighttpd的配置将被likeso(虽然阿帕奇,Nginx的,等等,也可以很容易地进行使用):
fastcgi.server = ("plexer.fcgi" =>
("localhost" =>
(
"socket" => "/tmp/plexer.fcgi",
"check-local" => "disable"
)
)
)
输入和想法,有用的链接,并知道如何正确实施的FastCGI路器都将不胜感激。
谢谢。
你能否澄清*为什么*你想根据用户进行复用?这看起来很奇怪,而且它绝对不会很好地扩展...... – 2008-12-05 22:48:31