Domanda

Quali sono i modi migliori (o almeno intelligenti) per eseguire più siti da un unico framework web Python comune (ovvero:Piloni, TurboGears, ecc.)?So che puoi eseguire il reindirizzamento in base al dominio o al percorso per riscrivere l'URI in modo che punti a una posizione specifica del sito e ho anche visto alcuni brutali "if site == 'site1' / elseif / elseif / etc"che vorrei evitare.

È stato utile?

Soluzione

Django ha questo integrato.Vedere la struttura dei siti.

Come tecnica generale, includi una colonna "host" nello schema del tuo database allegata ai dati che desideri siano specifici dell'host, quindi includi il Host Intestazione HTTP nella query durante il recupero dei dati.

Altri suggerimenti

Utilizzando Django su Apache con mod_python, ospito più siti Django (non correlati) semplicemente con la seguente configurazione di Apache:

<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>

Non sono necessarie più istanze Apache o server proxy.L'utilizzo di una diversa direttiva PythonInterpreter per ciascun sito (il nome immesso è arbitrario) mantiene gli spazi dei nomi separati.

Utilizzo CherryPy come server web (che viene fornito in bundle con Turbogears) ed eseguo semplicemente più istanze del server web CherryPy su diverse porte legate a localhost.Quindi configuro Apache con mod_proxy e mod_rewrite per inoltrare in modo trasparente le richieste alla porta corretta in base alla richiesta HTTP.

Utilizzare più istanze del server su porte locali è una buona idea, ma non è necessario un server Web completo per reindirizzare le richieste HTTP.

io userei libbra come proxy inverso per svolgere il lavoro.È piccolo, veloce, semplice e fa esattamente ciò di cui abbiamo bisogno qui.

CHE COSA È LA STERlina:

  1. un proxy inverso:passa le richieste dai browser client a uno o più server back-end.
  2. un bilanciatore del carico:distribuirà le richieste dai browser client tra diversi server back-end, mantenendo le informazioni sulla sessione.
  3. un wrapper SSL:Pound decodificherà le richieste HTTPS dai browser client e le passerà come semplice HTTP ai server back-end.
  4. un disinfettante HTTP/HTTPS:Pound verificherà la correttezza delle richieste e accetterà solo quelle ben formulate.
  5. un fail sul server:nel caso in cui un server back-end dovesse guastarsi, Pound prenderà nota del fatto e interromperà l'invio di richieste fino al ripristino.
  6. un reindirizzatore di richiesta:le richieste possono essere distribuite tra i server in base all'URL richiesto.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top