生产环境下的Django:设置DEBUG = False会导致“服务器错误(500)”。

4

我知道这个问题已经被讨论过了。但问题仍然存在,我没有任何解决方案。请帮忙。

我的系统环境是:Ubuntu 14.04 LTS、Python3.4、MySQL5.5、Django1.7、Nginx1.4.6和Gunicorn19.1.1。

当我在生产服务器上将DEBUG = False时,我的Django应用程序可以运行约半天时间。之后,某些功能总是出现令人恼火的Server Error (500)错误,而不是所有的功能都出现这个问题。如果我将DEBUG = True,一切都会很好。

我还设置了ALLOWED_HOSTS = ['*']。有人说,在生产中不应该使用通配符。但我的应用程序是公共的,我应该如何设置?其他人说它应该是'localhost'。但只有localhost可以访问服务器?为什么要走生产呢?

这个问题有标准的解决方案吗?谢谢。


2
可能与“DUBUG”无关 :) 您是否已启用日志记录或配置了接收500错误电子邮件的管理员? - alecxe
谢谢alecxe。你能建议如何启用日志记录吗?我已经记录了Nginx和Gunicorn。 - Randy Tang
1个回答

5

生产环境出现500错误不应该随意猜测原因。

你需要确切地了解发生了什么、在哪里和何时发生了:

  • 启用Django Logging并记录相关日志信息
  • 设置ADMINS配置,并在发生严重错误时接收邮件通知

ADMINS

默认值:()(空元组)

一个包含代码错误通知人员的元组。当DEBUG=False且视图引发异常时,Django将通过电子邮件向这些人发送完整的异常信息。

其他相关材料:

我知道这并没有直接解决你的问题,但希望能让你明白我的意思,谢谢。


好的,我已经设置了ADMINS(https://docs.djangoproject.com/en/dev/ref/settings/#admins),gmail smtp(http://www.mangooranges.com/2008/09/15/sending-email-via-gmail-in-django/)和logging(https://docs.djangoproject.com/en/dev/topics/logging/)。现在一切都正常工作。我会继续观察。非常感谢,alexce。 - Randy Tang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接