2009-04-23 7 views
1

Ich führe Django auf einem Server mit einem Dutzend virtueller Hosts aus. Die erste Django-Seite, die ich zusammengestellt habe, funktioniert großartig, aber ich bin gerade dabei, eine zweite einzurichten. Muss ich einen zweiten Fastcgi-Prozess ausführen?Wie kann ich mehr als eine Django-Site auf einem einzelnen Server mit fastcgi ausführen?

Zum ersten Seite, die ich fcgi so renne:

/home/django/app1/manage.py runfcgi protocol=fcgi host=127.0.0.1 port=8081 

Die nginx Config für die Domain auf diesem fcgi Prozess (fastcgi_pass 127.0.0.1:8081).

Für die zweite Seite, brauche ich eine weitere Kopie der fcgi, wie in einem fcgi pro Standort

/home/django/app2/manage/py runfcgi protocol=fcgi host=127.0.0.1 port=8082 

Und dann leiten die nginx Config zu diesem Prozess (fastcgi_pass 127.0.0.1 laufen ?:

: 8082)?

Oder gibt es eine Möglichkeit, mehr als eine Django-Site mit einem einzigen Fastcgi zu behandeln? Gibt es eine bewährte Methode zum Einrichten eines Multi-Django-Servers?

Antwort

2

Es hängt davon ab, was Sie mit der Site meinen und wie Ihre Django-Konfigurationen aussehen.

Jede Django settings.py definiert eine und nur eine Datenbank, eine und nur eine urls.py-Struktur.

Jedes Django hat eine settings.py - eine Datenbank - eine urls.py-Struktur.

Wenn jede Site über eine eigene Datenbank verfügt, benötigen sie eine eigene settings.py-Datei, und Sie benötigen eine eigene fastcgi-Instanz.

Wenn alle Sites von einer einzigen Datenbank mit einer einzigen settings.py unterstützt werden, können Sie sie alle aus einer einzigen Fastcgi-Instanz herausquetschen.

Beachten Sie, dass der urls.py-Handler von Django den Hostnamen und die Portnummer in der URL-Parsing in der Anfrage ignoriert. Wenn Sie jedoch das Sites-Modell einschließen, können Sie den Namen des virtuellen Hosts in die Anfrageverarbeitung mit einbeziehen.

+0

Vielen Dank, das ist sehr hilfreich. –

0

Für was es wert Sie können mit dem TCP-Overhead tun weg und verwenden Sie eine Steckdose statt:

/home/django/app1/manage.py runfcgi protocol = fcgi socket =/var/run/mysite.sock

Sockets müssen für den Webserver-Benutzer lesbar und schreibbar sein.

Verwandte Themen