繁体   English   中英

将 Django 部署到 Heroku - 服务器错误 (500)

[英]Deploying Django To Heroku - Server Error (500)

我一直在制作 django 应用程序,现在正在尝试将其部署到 heroku。 但是,当我在 go 上运行时,显示Server Error (500) ,并且日志显示: 2017-05-27T21:00:14.634310+00:00 heroku[router]: at=info method=GET path="/" host=remberit.herokuapp.com request_id=065d27c6-9211-458f-9fc6-bb677d43581e fwd="86.13.204.65" dyno=web.1 connect=0ms service=151ms status=500 bytes=387 protocol=https

这是我的 settings.py (至少是相关部分,但请询问您是否想要其余部分):

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))

STATIC_ROOT = os.path.join(PROJECT_ROOT, "staticfiles")
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

import dj_database_url

DATABASES['default'] = dj_database_url.config()

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

ALLOWED_HOSTS = ['*']

DEBUG = False

try:
    from .local_settings import *
except ImportError:
    pass

这是我的 wsgi.py:

import os

from django.core.wsgi import get_wsgi_application
#from whitenoise.django import DjangoWhiteNoise
import django

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'remberit.settings')
django.setup()

application = get_wsgi_application()
#application = DjangoWhiteNoise(application)

这是我的Procfile:

web: gunicorn remberit.wsgi

这是我的 runtime.txt:

python-3.5.2

这是我的requirements.txt:

appdirs==1.4.3
dj-database-url==0.4.2
gunicorn==19.7.1
packaging==16.8
pyparsing==2.2.0
six==1.10.0
whitenoise==3.3.0
psycopg2==2.6.2

这是pip freeze的 output :

appdirs==1.4.3
dj-database-url==0.4.2
gunicorn==19.7.1
packaging==16.8
pyparsing==2.2.0
six==1.10.0
whitenoise==3.3.0

此外,当我使用gunicorn remberit.wsgipython manage.py runserver在本地运行应用程序时,它工作正常,只有当我使用 heroku 时它才不起作用。

如果您需要更多信息,请告诉我。

可以解决您的问题的其他解决方案:从白噪声中注释掉或删除 GzipManifestStaticFilesStorage。 出于某种原因,这不能很好地工作。

# STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

仅当 Debug=False AND db 设置为 Heroku 上的生产数据库时为什么 django 会在服务器 500 上失败,找到此解决方案

正如mustapha-belkacim所说,您需要迁移您的应用程序:

heroku run python manage.py migrate

请从设置中提供(或检查)您的 TEMPLATES 变量。 确保“DIRS”值指向 index.html(或基本模板)所在的正确模板文件夹。

我遇到了类似的错误,这就是我的问题。

正如在其他问题中所评论的( 部署到 Heroku 的 Django 应用程序产生服务器错误 500 ),我在将 DEBUG 在生产中转为 True 片刻后意识到这一点,以找到有关该问题的更好帮助。 然后,当然回到 False。

你的 /admin 有效吗? 如果是这样,这个答案可能会帮助你。 如果没有,有很多事情可能会出错,也许其他人可以提供帮助? (例如:如果在 requirements.txt 中有 psycopg2,为什么不使用 pip freeze 输出它?是否已安装?您是否在本地和生产环境中使用 postgreSQL?)

当我第一次将我的应用程序部署到 heroku 时,我遇到了类似的问题,就我而言,它是需要迁移的数据库。 所以我不得不运行这个命令:

heroku run -a your-app-name python manage.py migrate

看看这个教程https://devcenter.heroku.com/articles/getting-started-with-python#provision-a-database

确保您没有链接任何不存在的外部文件,就像在我的情况下,我的 html 链接的 css 文件很少,但实际文件已被删除。

我也遇到了同样的问题,所以最好和最快的解决方案是删除这一行:

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

并添加这个:

STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'

500 错误可能是很多可能的事情。 暂时设置 DEBUG=True 以获取更多信息。

我遇到了同样的问题,但是当我将 settings.py 中的Debug选项设置false时,站点按预期运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM