Джанго:Конфликт между Текущим и Промежуточным сайтами на Одном сервере

StackOverflow https://stackoverflow.com/questions/1019292

  •  06-07-2019
  •  | 
  •  

Вопрос

Недавно я запустил приложение Django в прямом эфире.Мы создали приложение в промежуточном поддомене на сервере.Когда я перешел в оперативный режим, я скопировал файлы промежуточного поддомена на основной сайт, создал промежуточную базу данных и указал старому промежуточному сайту на новую промежуточную базу данных (оставив новый оперативный сайт указывающим на исходную базу данных).Это находится в mod_python под Apache.

Я создал уникальные настройки SESSION_COOKIE_NAME для обоих сайтов и установил для SESSION_COOKIE_DOMAIN значение ".sitename.com " для текущего сайта и None для промежуточного сайта.

Проблема, которую мы наблюдаем, заключается в том, что пользователи в режиме реального времени вносят изменения, которые (как представляется) сохраняются на промежуточном сайте.Пользователи также выходят из системы с сайта администратора "случайным образом" во время запросов.

Есть ли что-то, что я явно делаю здесь не так?Должен ли SESSION_COOKIE_DOMAIN быть "www.sitename.com", чтобы ограничить его, поскольку поддомен находится в "staging.sitename.com"?Оставил ли я старую информацию о сеансе в текущей базе данных (я запустил ./manage.py очистил и удалил все сеансы из текущей базы данных до того, как возникла эта проблема)?

Спасибо

Это было полезно?

Решение

Мы столкнулись с этой проблемой в последние несколько недель.Было несколько мест, где это могло пересекаться.

1) Используете ли вы отдельные интерпретаторы python? Есть несколько способов настроить mod_python так, чтобы потоки не наступали друг на друга.Ключевыми моментами здесь являются предоставление отдельного имени сервера (в данном случае доменов staging.sitename.com и www.sitename.com), а также предоставьте отдельный параметр конфигурации PythonInterpreter в вашем файле конфигурации Apache vhosts.

PythonInterpreter mysite

Соответствующие документы Django о развертываниях на одном сервере

2) Используете ли вы серверную часть кэша на том же порту? Существует конфигурация в settings.py, которая позволяет вам добавлять к кэшированному содержимому несколько символов в качестве префикса, чтобы отделить промежуточный контент от текущего контента.Это реализовано со следующей конфигурацией в settings.py:

CACHE_MIDDLEWARE_KEY_PREFIX = "STG_"

Другим вариантом может быть запуск на некоторое время отдельных кэшей файловой системы, чтобы посмотреть, решена ли проблема.В settings.py попробуйте добавить

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

3) Вы пробовали удалять все свои pyc-файлы? Как ни странно, когда вышеупомянутые два решения не смогли решить нашу проблему, мы запустили команду bash для удаления всех скомпилированных файлов python (pyc-файлы) во время остановки сервера.

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

Это означало бы, что изменения в вашем развертывании не были перекомпилированы по той или иной причине.

Надеюсь, это поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top