生产中的 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)”的主要内容,如果未能解决你的问题,请参考以下文章

姜戈。生产中的调试

Django_生产环境静态文件配置

使用 DEBUG 设置为 False 记录 Django SQL 查询

010:DEBUG模式详解

Django 2.2静态文件在生产中不起作用(DEBUG False)[重复]

Django 调试视图,用于管理员的生产环境