部署到 heroku 更改 DEBUG = False 导致 500 错误
Posted
技术标签:
【中文标题】部署到 heroku 更改 DEBUG = False 导致 500 错误【英文标题】:Deploying to heroku changing DEBUG = False results in 500 error 【发布时间】:2016-03-12 16:07:34 【问题描述】:我正在使用 Django 1.9 和 Python 3.4.3。 在我的应用程序上更改 DEBUG = False 时,我在应用程序的所有页面上都收到 500 错误。
注意:Django 管理页面也会导致 500 错误。一些 其他帖子报告在管理页面上没有收到此错误,我是。我也尝试了post中的所有内容
# Static files (CSS, javascript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS =(
os.path.join(BASE_DIR, 'static'),
)
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
【问题讨论】:
apache 日志说错误实际上是什么? @marksweb 我将日志编辑成问题,它没有说太多 当你push
你的应用程序时,你能发布什么heroku回复吗?我敢打赌,您的静态文件有些东西弄糊涂了,并且实际上并未部署该应用程序。
@Ben 确定。我将它附加到日志的末尾
您是否运行了他们推荐的命令? heroku run python manage.py collectstatic --noinput
【参考方案1】:
如果你在设置中添加管理员会更好:
ADMINS = (('Your name', 'Your@EMAIL'),)
这样,您将在发生错误时收到更好的报告,您可以使用它来调试错误。
希望对你有帮助
【讨论】:
@groovietunes 设置管理员后,您将收到一封电子邮件,其中包含您通常在DEBUG=True
时看到的回溯。
@Ben 感谢我将回溯结果添加到问题末尾的建议。我开始觉得我的静态文件可能没有正确配置用于生产,但这对于我为什么会收到 500 错误没有意义【参考方案2】:
您可能忘记在 settings.py MIDDLEWARE 设置中包含 whitenoice 中间件。编辑您的 settings.py 文件并将 WhiteNoise 添加到 MIDDLEWARE_CLASSES 列表中,高于除 Django 的 SecurityMiddleware 之外的所有其他中间件:
MIDDLEWARE_CLASSES = [
# 'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
#...
]
当 DEBUG=True 时这不是必需的,但是当 DEBUG=False 时,你突然遇到了问题。不幸的是,Heroku 没有在他们的文档中添加这个中间件,并且他们的演示应用程序在 DEBUG=True 中运行,因此很难找到问题。
更多信息可以在 whitenoise 文档中找到:http://whitenoise.evans.io/en/stable/django.html
完成分步设置,看看您缺少什么。 Heroku 文档倾向于省略中间件添加(这会导致错误),并且您的应用程序可能还缺少其他一些东西。
【讨论】:
【参考方案3】:Whitenoise 正在寻找它找不到的东西。我也有这个问题,但从来没有让它工作。根据你有多少静态文件,决定你是否真的需要缓存它们。
如果您不这样做,请忽略它。 如果你这样做了,你需要找到 whitenoise 试图找到的东西并给出它。也许这有帮助:https://***.com/a/28385055/1322179
【讨论】:
以上是关于部署到 heroku 更改 DEBUG = False 导致 500 错误的主要内容,如果未能解决你的问题,请参考以下文章
从 github 部署更改的模型时,如何在 heroku 上运行 makemigrations/migrate?
数据库更改时,Heroku 部署的 Django 网页不会更新
将预先存在的 django git repo 部署到 heroku
在部署到 Heroku 之前,我应该对 MERN 应用程序的 package.json 文件的脚本进行哪些更改?