这个问题从答案流向:如何在一台服务器上为 Django 设置多个具有不同数据库的帐户?
我没有在谷歌或其他地方看到过这样的东西(也许我的词汇有误),所以我认为输入可能是对互联网话语的有价值的补充。
怎么能像这样配置服务器:
- 一种 Lighttpd 的安装
- 作为 FastCGI 运行的多个 Django 项目
- django项目可以随意添加/删除,不需要重启webserver
- 根据当前用户将所有请求/响应透明重定向到特定 Django 安装
即给定 Django 项目(带有相应的 FastCGI 套接字):
- 鲍勃 (/tmp/bob.fcgi)
- 苏 (/tmp/sue.fcgi)
- 乔 (/tmp/joe.fcgi)
以(过于简单的)脚本开始的 Django 项目如下:
#!/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/的流量根据登录的用户将请求定向到正确的 Django 应用程序。
换句话说,http://www.example.com应该是“be” /tmp/bob.fcgi 如果 bob 已登录, /tmp/joe.fcgi 如果 joe 已登录, /tmp/sue.fcgi 如果 sue已登录。如果没有人登录,它应该重定向到登录页面。
我已经考虑使用以下算法解复用“plexer”FastCGI 脚本:
如果设置了 cookie $PLEX,则通过管道将请求发送到 /tmp/$PLEX.fcgi
否则重定向到登录页面(根据用户名 => PLEX 的多对一映射设置 cookie PLEX)
当然,出于安全考虑,应该对 $PLEX 进行污点检查,并且 $PLEX 不应引起任何信任假设。
Lighttpd 配置会是这样(尽管 Apache、Nginx 等也可以很容易地使用):
fastcgi.server = ( "plexer.fcgi" =>
( "localhost" =>
(
"socket" => "/tmp/plexer.fcgi",
"check-local" => "disable"
)
)
)
输入和想法、有用的链接以及知道如何正确实现 FastCGI plexer 将不胜感激。
谢谢你。