この質問は、答えから次へと流れます: 1 つのサーバー上で Django 用に別々のデータベースを持つ複数のアカウントをどのように設定しますか?
このようなものは Google や他の場所で見たことがありません (おそらく私の語彙が間違っているのでしょう) ので、入力はインターネットの言説への価値ある追加になると思います。
次のようにサーバーを構成する方法は次のとおりです。
- Lighttpd の 1 つのインストール
- FastCGI として実行される複数の Django プロジェクト
- Django プロジェクトは自由に追加/削除でき、Web サーバーを再起動する必要はありません。
- 現在のユーザーに応じて、特定の 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は、bob がログインしている場合は /tmp/bob.fcgi、joe がログインしている場合は /tmp/joe.fcgi、sue の場合は /tmp/sue.fcgi となります。誰もログインしていない場合は、ログイン ページにリダイレクトする必要があります。
次のアルゴリズムを使用して、逆多重化「プレクサー」FastCGI スクリプトを検討しました。
Cookie $PLEX が設定されている場合、要求を /tmp/$PLEX.fcgi にパイプします。
それ以外の場合は、ログイン ページにリダイレクトします (ユーザー名 => PLEX の多対 1 マッピングに基づいて Cookie PLEX を設定します)。
もちろん、セキュリティの問題として、$PLEX は汚染チェックされるべきであり、$PLEX は信頼の推定を生じさせるべきではありません。
Lighttpd の構成は次のようになります (ただし、Apache、Nginx なども同様に簡単に使用できます)。
fastcgi.server = ( "plexer.fcgi" =>
( "localhost" =>
(
"socket" => "/tmp/plexer.fcgi",
"check-local" => "disable"
)
)
)
意見や感想、役に立つリンク、FastCGI plexer を適切に実装する方法を知っていることなど、すべて歓迎します。
ありがとうございました。