проблема сеанса с django+apache+mod_wsgi

Я написал приложение django и поместил его на сервер CentOS. Это определенно нормально, когда я использую веб-сервер разработки django.

Например, я запускаю его с помощью «python ./manage.py runserver» и получаю доступ к этому серверу из браузера на другом компьютере. Я могу войти в систему один раз и получить доступ ко всем страницам без проблем.

Однако, когда я запускаю его с apache + mod_wsgi, я просто обнаружил, что мне нужно время от времени входить в систему с пользователем и паролем. Я думаю, может быть, есть какая-то проблема с промежуточным программным обеспечением сеанса, так как я могу найти основную причину и исправить ее?


person William    schedule 12.12.2010    source источник


Ответы (1)


Для этого есть несколько разных вариантов.

В порядке вероятности (имхо):

  • Серверная часть сеанса использует систему кэширования для хранения сеансов, а вы используете серверную часть кэша locmem.
  • Серверная часть сеанса не сохраняет файлы cookie (включены безопасные файлы cookie? тайм-ауты файлов cookie? неправильная дата на сервере?)
  • Промежуточное программное обеспечение сеанса может быть не загружено (пользовательские настройки для рабочего сервера?)

Сохранение сеанса в кеше — хорошее решение, только если вы используете memcached в качестве бэкенда кеша. Поэтому, если вы храните сеансы в кеше, убедитесь, что вы используете memcache :)

В любом случае проверьте, установлено ли SESSION_ENGINE значение django.contrib.sessions.backends.db.

person Wolph    schedule 12.12.2010
comment
Мои настройки из них: CACHE_BACKEND = 'file://%s' % os.path.join(os.path.dirname(__file__),'cache').replace('\\','/') и SESSION_ENGINE = django.contrib.sessions.backends.db. Это вызывает проблемы? Я проверил папку cache, файлов нет. Но я уже установил разрешение на 766, я прав? - person William; 12.12.2010
comment
Сейчас я использую режим демона WSGIDaemonProcess myapp user=apache group=apache threads=25. - person William; 12.12.2010
comment
@William: Если для вашего механизма сеансов установлено значение ...backends.db, вы не используете серверную часть кеша для хранения сеансов. В этом случае я бы предположил, что это какая-то проблема с файлами cookie. Вы можете проверить это следующим образом: http://docs.djangoproject.com/en/dev/topics/http/sessions/#setting-test-cookies - person Wolph; 12.12.2010
comment
теперь все в порядке. очень странно. Ранее я обнаружил, что установил SESSING_ENGINE на cache_db, возможно, это вызывает ошибку. Большое спасибо. - person William; 13.12.2010