Kar*_*van 6 python django heroku
我一直在制作一个 django 应用程序,现在正在尝试将它部署到 heroku。但是,当我继续下去时,说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
Run Code Online (Sandbox Code Playgroud)
这是我的 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)
Run Code Online (Sandbox Code Playgroud)
这是我的 Procfile:
web: gunicorn remberit.wsgi
Run Code Online (Sandbox Code Playgroud)
这是我的 runtime.txt:
python-3.5.2
Run Code Online (Sandbox Code Playgroud)
这是我的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
Run Code Online (Sandbox Code Playgroud)
这是输出pip freeze:
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
Run Code Online (Sandbox Code Playgroud)
此外,当我在本地运行应用程序gunicorn remberit.wsgi或python manage.py runserver它工作正常时,它仅在我使用 heroku 时不起作用。
如果您需要更多信息,请告诉我。
可以解决您的问题的其他解决方案:从白噪声中注释掉或删除 GzipManifestStaticFilesStorage。出于某种原因,这不能很好地工作。
# STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
Run Code Online (Sandbox Code Playgroud)
在仅当 Debug=False AND db 设置为 Heroku 上的生产数据库时,为什么 django 会在服务器 500 上失败,找到此解决方案?
小智 8
正如mustapha-belkacim所说,您需要迁移您的应用程序:
heroku run python manage.py migrate
Run Code Online (Sandbox Code Playgroud)
请从设置中提供(或检查)您的 TEMPLATES 变量。确保“DIRS”值指向index.html(或基本模板)所在的正确模板文件夹。
我遇到了类似的错误,这就是我的情况的问题。
正如其他问题(Django 应用程序部署到 Heroku 生成服务器错误 500)中所评论的那样,我在生产中将 DEBUG 设置为 True 短暂一段时间以找到有关该问题的更好帮助后意识到了这一点。然后,当然回到 False。
你的 /admin 可以用吗?如果是这样,这个答案可能对你有帮助。如果没有,有很多事情可能会出错,也许其他人可以提供帮助?(例如:如果你在requirements.txt中有psycopg2,为什么它没有用pip freeze输出?它安装了吗?你在本地和生产环境中都使用postgreSQL吗?)
| 归档时间: |
|
| 查看次数: |
13912 次 |
| 最近记录: |