【问题标题】:session issue with django+apache+mod_wsgidjango+apache+mod_wsgi 的会话问题
【发布时间】:2011-05-24 04:41:29
【问题描述】:

我编写了一个 django 应用程序,并将其放在 CentOS 服务器上。用django开发web server肯定没问题。

例如我通过“python ./manage.py runserver”启动它,然后从另一台计算机上的浏览器访问该服务器。我可以一次登录,然后毫无问题地访问所有页面。

但是,当我使用 apache+mod_wsgi 运行它时,我发现我必须一次又一次地使用用户名和密码登录。我认为会话中间件可能存在问题,那么,我该如何找到根本原因并解决它?

【问题讨论】:

    标签: django apache session login mod-wsgi


    【解决方案1】:

    有几个不同的选项。

    按可能性顺序(恕我直言):

    • 会话后端使用缓存系统来存储会话,而您正在使用 locmem 缓存后端
    • 会话后端未存储 cookie(安全 cookie 已启用?cookie 超时?服务器上的日期不正确?)
    • 会话中间件可能未加载(生产服务器的自定义设置?)

    如果您使用 memcached 作为缓存后端,将会话存储在缓存中只是一个很好的解决方案。因此,如果您将会话存储在缓存中,请确保使用 memcache :)

    无论哪种方式,检查SESSION_ENGINE是否设置为django.contrib.sessions.backends.db

    【讨论】:

    • 我的设置是:CACHE_BACKEND = 'file://%s' % os.path.join(os.path.dirname(__file__),'cache').replace('\\','/')SESSION_ENGINE = django.contrib.sessions.backends.db。这会导致问题吗?我检查了 cache 文件夹,没有文件。但我已经将它的权限设置为 766,对吗?
    • 我现在使用的是守护模式WSGIDaemonProcess myapp user=apache group=apache threads=25
    • @William:如果您的会话引擎设置为...backends.db,那么您就没有使用缓存后端来存储会话。在那种情况下,我猜这是某种 cookie 问题。你可以这样测试:docs.djangoproject.com/en/dev/topics/http/sessions/…
    • 现在好了。很奇怪。我之前发现,我将SESSING_ENGINE设置为cache_db,可能会导致错误。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 2012-03-17
    • 1970-01-01
    相关资源
    最近更新 更多