Frage

Was kommt gut (oder zumindest klug) Wegen mehrerer Standorte von einem einzigen, gemeinsamen Python-Web-Framework ausgeführt wird (dh: Pylone, Turbogears, etc)? Ich weiß, dass Sie die Umleitung auf der Domäne oder Pfad basiert tun können, die URI neu zu schreiben an einer ortsspezifischen Position zu zeigen, und ich habe auch einige viehisch „if site == 'site1' / elseif / elseif / etc“ gesehen, dass Ich mag würde vermeiden.

War es hilfreich?

Lösung

Django hat diese eingebaut. Siehe die Websites Rahmen .

Als allgemeine Technik, umfasst eine ‚Wirt‘ Spalte in Ihrem Datenbankschema an die Daten angehängt Sie wollen Host-spezifisch sein, schließen Sie dann die Host HTTP-Header in der Abfrage, wenn Sie Daten abgerufen werden.

Andere Tipps

Mit Django auf Apache mit mod_python, Host mehrere (nicht verwandten) django Websites einfach mit der folgenden Apache-Konfiguration:

<VirtualHost 1.2.3.4>
        DocumentRoot /www/site1
        ServerName site1.com
        <Location />
                SetHandler python-program
                SetEnv DJANGO_SETTINGS_MODULE site1.settings
                PythonPath "['/www'] + sys.path"
                PythonDebug On
                PythonInterpreter site1
        </Location>
</VirtualHost>

<VirtualHost 1.2.3.4>
        DocumentRoot /www/site2
        ServerName site2.com
        <Location />
                SetHandler python-program
                SetEnv DJANGO_SETTINGS_MODULE site2.settings
                PythonPath "['/www'] + sys.path"
                PythonDebug On
                PythonInterpreter site2
        </Location>
</VirtualHost>

Keine Notwendigkeit für mehrere Apache-Instanzen oder Proxy-Server. eine andere PythonInterpreter Richtlinie für jede Website mit (der eingegebene Name ist frei wählbar) hält die Namensräume zu trennen.

Ich benutze CherryPy als meine Web-Server (die mit Turbogears mitgeliefert wird), und ich einfach mehrere Instanzen des CherryPy Web-Server auf verschiedenen Ports gebunden zu localhost laufen. Dann konfiguriere ich Apache mit mod_proxy und mod_rewrite transparent vorwärts Anforderungen an den richtigen Port basierend auf der HTTP-Anforderung.

mehrere Serverinstanzen verwenden auf lokalen Ports ist eine gute Idee, aber Sie nicht über einen voll funktionsfähigen Web-Server benötigen, um HTTP-Anforderungen zu umleiten.

Ich würde verwenden Pfund als Reverse Proxy den Job zu erledigen. Es ist klein, schnell, einfach und tut genau das, was wir hier brauchen.

  

WAS IST PFUND:

     
      
  1. ein Reverse-Proxy. Es geht Anfragen von Client-Browser an einen oder mehrere Back-End-Server
  2.   
  3. ein Load-Balancer: es werden die Anforderungen von den Client-Browsern unter mehreren Back-End-Servern verteilen, während Sitzungsinformationen zu halten
  4. .   
  5. ein SSL-Wrapper. Pound wird HTTPS-Anfragen von Client-Browsern entschlüsseln und sie als Plain-HTTP auf den Back-End-Server übergeben
  6.   
  7. ein HTTP / HTTPS Sanitizer. Pfund werden Anträge auf Richtigkeit überprüfen und akzeptieren nur wohlgeformt diejenigen
  8.   
  9. ein Failover-Server. Sollte ein Back-End-Server ausfallen, Pound wird die Tatsache zur Kenntnis nehmen und vorbei Anfragen, um es zu stoppen, bis es wieder
  10.   
  11. eine Anfrage Redirector. Anfragen unter Server verteilt werden können, auf die angeforderte URL nach
  12.   
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top