2010-12-12 130 views
1

我寫過一個django應用程序,並將它放在CentOS服務器上。當我使用django開發web服務器時,這絕對沒問題。django + apache + mod_wsgi會話問題

如我從「python ./manage.py runserver」啓動它,並從另一臺計算機上的瀏覽器訪問該服務器。我可以登錄一次,並訪問所有頁面,沒有問題。

但是,當我用apache + mod_wsgi運行它時,我發現我必須每次都用用戶名和密碼登錄。我認爲會話中間件可能存在一些問題,那麼,我怎麼才能找到根本原因並解決它呢?

回答

2

有幾個不同的選項。

在情形產生(恕我直言)的順序:

  • 會議後端使用緩存系統來存儲會話和您使用的locmem緩存後端
  • 會話後端沒有存儲的cookie (在服務器上安全啓用Cookie?cookie的超時?不正確的日期?)
  • 會話中間件可能不會被加載(用於生產服務器的自定義設置?)

如果將memcached用作緩存後端,將會話存儲在緩存中只是一個很好的解決方案。所以,如果你存儲在緩存中的會話,請確保您使用的memcache :)

無論哪種方式,檢查是否SESSION_ENGINE設置爲django.contrib.sessions.backends.db

+0

我對他們的設置爲:'CACHE_BACKEND =「的file://% s'%os.path.join(os.path.dirname(__ file __),'cache')。replace('\\','/')'和'SESSION_ENGINE = django.contrib.sessions.backends.db' 。這是否會導致問題?我檢查了**緩存**文件夾,沒有文件。但我已經將其權限設置爲766,對嗎? – William 2010-12-12 17:14:28

+0

我現在正在使用守護進程模式'WSGIDaemonProcess myapp user = apache group = apache threads = 25'。 – William 2010-12-12 17:21:30

+1

@William:如果您的會話引擎設置爲「... backends.db」,則不會使用高速緩存後端來存儲會話。在這種情況下,我猜想這是某種cookie問題。你可以像這樣測試它:http://docs.djangoproject.com/en/dev/topics/http/sessions/#setting-test-cookies – Wolph 2010-12-12 18:06:33