2010-12-12 102 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