Frage

Ich habe vor kurzem stieß eine Django App leben. Wir bauten die App in einer Staging-Sub-Domain auf dem Server. Als ich Betrieb genommen wurde, kopierte ich die Dateien der Inszenierung Sub-Domain auf die Hauptseite, schaffte eine Staging-Datenbank und wies auf die alte Staging-Stelle an der Neuinszenierung Datenbank (in der ursprünglichen Datenbank die neue Live-Site verlassen hingewiesen). Dies ist auf mod_python unter Apache.

Ich habe für beide Standorte einzigartige SESSION_COOKIE_NAME Einstellungen erstellt, und ich habe festgelegt SESSION_COOKIE_DOMAIN auf „.sitename.com“ für die Live-Site und keine für den Staging-Website.

Das Problem wir sehen ist Benutzer in der Live-Admin-Änderungen macht, dass (es erscheint) in der Staging-Site gespeichert werden. Die Benutzer werden auch aus der Admin-Seite „zufällig“ bei Anfragen protokolliert werden.

Gibt es etwas, was ich klar bin falsch hier? SESSION_COOKIE_DOMAIN „www.sitename.com“ sollte es zu beschränken, da die Sub-Domain auf „staging.sitename.com“ ist? Habe ich hinter sich lassen alte Session info in der jetzt-live-Datenbank (Ich lief ./manage.py sauber und gelöscht alle Sitzungen aus der Live-Datenbank, bevor dieses Problem auftauchten)?

Danke

War es hilfreich?

Lösung

Wir liefen in dieses Problem in den letzten Wochen. Es gab ein paar Orte, wo diese überlappen könnten.

1) Sind Sie mit separaten Python-Interpreter? Es gibt ein paar Möglichkeiten, mod_python so zu konfigurieren, dass die Fäden aufeinander Schritt nicht. Die wichtigsten Punkte sind hier einen eindeutigen Server, um (in diesem Fall die Domains staging.sitename.com und www.sitename.com ), sowie ein deutlichen bieten PythonInterpreter Konfigurationseinstellung in Ihrer Apache vhosts Konfigurationsdatei.

PythonInterpreter mysite

relevante Django docs auf same-Server-Implementierungen

2) Sind Sie mit einem Cache-Backend auf dem gleichen Port? Es ist eine Konfiguration, in settings.py, dass Sie die im Cache gespeicherten Inhalte mit mehreren Zeichen Präfix kann Inhalte von Live-Inhalten zu trennen Inszenierung. Dies wird mit der folgenden Konfiguration in settings.py implementiert:

CACHE_MIDDLEWARE_KEY_PREFIX = "STG_"

könnte eine weitere Option auf separaten Dateisystem-Caches laufen für eine Weile, um zu sehen, ob das Problem behoben ist. In settings.py, versuchen Sie,

CACHE_BACKEND = 'file:///var/tmp/django_cache'

3) Haben Sie versucht, alle Ihre .pyc Dateien zu löschen? Bizarr, wenn die beiden oben genannten Lösungen versagt unser Problem zu lösen, führten wir ein Bash-Befehl alle der kompilierten Python-Dateien (.pyc-Dateien), während der Server gestoppt wurde zu löschen.

find ./ -type f -name "*.pyc" -exec rm -f {} \;

Dies würde darauf hindeuten, dass Änderungen in der Bereitstellung nicht für einen oder anderen Grund wurden neu zu kompilieren.

Hope, das hilft!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top