生产中的 Django:设置 DEBUG = False 导致“服务器错误(500)”
Posted
技术标签:
【中文标题】生产中的 Django:设置 DEBUG = False 导致“服务器错误(500)”【英文标题】:Django in production: set DEBUG = False causes `Server Error (500)` 【发布时间】:2015-02-16 18:34:51 【问题描述】:我知道这个问题has been discussed。但是问题仍然存在,我没有任何解决方案。请帮忙。
我的平台是:Ubuntu 14.04 LTS、Python 3.4、mysql 5.5、Django 1.7、nginx 1.4.6 和 Gunicorn 19.1.1。
当我在生产服务器中设置DEBUG = False
时,我的 Django 应用程序运行正常可能半天。在那之后,烦人的Server Error (500)
总是出现在某些功能上,但不是每一个。如果我转DEBUG = True
,一切都会好起来的。
我也设置了ALLOWED_HOSTS = ['*']
。有人说它不应该是生产中的通配符。但是我的应用程序是公开的,我应该如何设置它?还有人说应该是'localhost'
。但是只有localhost
可以访问服务器?那为什么要生产呢?
这个问题有标准的解决方案吗?谢谢。
【问题讨论】:
可能与DUBUG
无关 :) 您是否启用了日志记录,或配置了接收 500 封错误电子邮件的管理员?
谢谢alecxe。您能建议如何启用日志记录吗?我已经登录了 Nginx 和 Gunicorn。
【参考方案1】:
生产中的 500 错误不是您应该猜测的。
您需要确切地知道发生了什么、发生在何时何地:
启用Django Logging 并记录、记录、记录 设置ADMINS
配置设置并接收有关严重错误的电子邮件
管理员
默认值:()(空元组)
列出收到代码错误通知的人员的元组。什么时候 DEBUG=False 并且视图引发异常,Django 将通过电子邮件发送这些 拥有完整异常信息的人。
其他相关资料:
Getting Started with Django Logging in 5 Minutes “第 24 章:日志记录:它到底有什么用?” "Two Scoops of Django"章节我明白它没有给你答案,也没有直接解决你的问题,但我希望你明白我的意思,谢谢。
【讨论】:
好的,我设置了 ADMINS (docs.djangoproject.com/en/dev/ref/settings/#admins)、gmail smtp (mangooranges.com/2008/09/15/sending-email-via-gmail-in-django) 和日志记录 (docs.djangoproject.com/en/dev/topics/logging)。现在一切正常。会继续关注。谢谢一百万,alexce。以上是关于生产中的 Django:设置 DEBUG = False 导致“服务器错误(500)”的主要内容,如果未能解决你的问题,请参考以下文章
使用 DEBUG 设置为 False 记录 Django SQL 查询