简体   繁体   English

当 DEBUG=False 时服务器错误 500

[英]Server Error 500 when DEBUG=False

I am trying to deploy a web application to Heroku using Django.我正在尝试使用 Django 将 Web 应用程序部署到 Heroku。 I can run the app locally just fine, but when I try to load it up live with DEBUG = False , I get a server 500 error.我可以在本地运行应用程序就好了,但是当我尝试使用DEBUG = False实时加载它时,我收到服务器 500 错误。 If I change the settings to DEBUG = True , it works.如果我将设置更改为DEBUG = True ,它会起作用。 I would appreciate any help.我将不胜感激任何帮助。

EDIT: I found a thread that helped me get an email version of the error, which is Missing staticfiles manifest entry for 'home/css/bootswatch.css' .编辑: 我发现一个线程帮助我获得了错误的电子邮件版本,即Missing staticfiles manifest entry for 'home/css/bootswatch.css' So now my concern is that the static files are not configured properly but I don't know how to fix them.所以现在我担心的是静态文件没有正确配置,但我不知道如何修复它们。 I am using this default django/heroku template with collectstatic disabled - I had to do this in order to even get the app to deploy.我正在使用禁用collectstatic默认 django/heroku 模板- 我必须这样做才能部署应用程序。 Could this be the issue?这可能是问题吗? I can't remember the exact command I had to run, but basically heroku told me it could not deploy the app until I disabled collectstatic .我不记得我必须运行的确切命令,但基本上 heroku 告诉我它无法部署应用程序,直到我禁用collectstatic

*NEW EDIT: Thanks to this thread , I realized I had to remove my disabled collectstatic config var, then try to build again. *新编辑: 多亏了这个线程,我意识到我必须删除禁用的 collectstatic 配置变量,然后再次尝试构建。 Didn't work.没用。 Error led me to realize that the default static file that comes with the starter template has to be INSIDE the settings MODULE.错误让我意识到启动模板附带的默认静态文件必须在设置模块内。 Did that, pushed - still didn't work.这样做了,推了 - 仍然没有用。 The traceback showed me that there was something wrong with my font-awesome css file.回溯显示我的字体很棒的 css 文件有问题。 Deleted the file, added a CDN instead, pushed, and boom.删除了文件,改为添加了 CDN,推送和繁荣。 Site works.网站工作。 I hope this is helpful to someone else in the future.我希望这对未来的其他人有帮助。

Error log错误日志

2017-10-08T19:33:03.000000+00:00 app[api]: Build started by user me@email.com
2017-10-08T19:33:19.148973+00:00 heroku[web.1]: Restarting
2017-10-08T19:33:19.149620+00:00 heroku[web.1]: State changed from up to starting
2017-10-08T19:33:19.717815+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2017-10-08T19:33:19.732436+00:00 app[web.1]: [2017-10-08 19:33:19 +0000] [4] [INFO] Handling signal: term
2017-10-08T19:33:19.732487+00:00 app[web.1]: [2017-10-08 19:33:19 +0000] [8] [INFO] Worker exiting (pid: 8)
2017-10-08T19:33:19.732716+00:00 app[web.1]: [2017-10-08 19:33:19 +0000] [9] [INFO] Worker exiting (pid: 9)
2017-10-08T19:33:19.833095+00:00 app[web.1]: [2017-10-08 19:33:19 +0000] [4] [INFO] Shutting down: Master
2017-10-08T19:33:20.012423+00:00 heroku[web.1]: Process exited with status 0
2017-10-08T19:33:18.676112+00:00 app[api]: Release v30 created by user me@email.com
2017-10-08T19:33:18.676112+00:00 app[api]: Deploy 8f625678 by user me@email.com
2017-10-08T19:33:03.000000+00:00 app[api]: Build succeeded
2017-10-08T19:33:29.936137+00:00 heroku[web.1]: Starting process with command `gunicorn portfolio.wsgi`
2017-10-08T19:33:32.419548+00:00 app[web.1]: [2017-10-08 19:33:32 +0000] [4] [INFO] Starting gunicorn 19.6.0
2017-10-08T19:33:32.420072+00:00 app[web.1]: [2017-10-08 19:33:32 +0000] [4] [INFO] Listening at: http://0.0.0.0:23534 (4)
2017-10-08T19:33:32.420207+00:00 app[web.1]: [2017-10-08 19:33:32 +0000] [4] [INFO] Using worker: sync
2017-10-08T19:33:32.424142+00:00 app[web.1]: [2017-10-08 19:33:32 +0000] [8] [INFO] Booting worker with pid: 8
2017-10-08T19:33:32.523409+00:00 app[web.1]: [2017-10-08 19:33:32 +0000] [9] [INFO] Booting worker with pid: 9
2017-10-08T19:33:33.592588+00:00 heroku[web.1]: State changed from starting to up
2017-10-08T19:33:33.991800+00:00 heroku[router]: at=info method=GET path="/" host=myproject.herokuapp.com request_id=89d87c81-0ab1-4b
2e-8705-43ef55710082 fwd="my.public.ip.address" dyno=web.1 connect=0ms service=225ms status=500 bytes=234 protocol=https
2017-10-08T19:33:36.569500+00:00 heroku[router]: at=info method=GET path="/" host=myproject.herokuapp.com request_id=cb8ea686-89ba-44
0f-8e66-0c3258c2de92 fwd="my.public.ip.address" dyno=web.1 connect=0ms service=42ms status=500 bytes=234 protocol=https

Folder structure:文件夹结构:

  • project项目
    • app应用程序
    • app应用程序
    • project项目
      • settings设置
        • __ init __.py __ 初始化 __.py
        • base_settings.py base_settings.py
        • local_settings.py local_settings.py
        • production_settings.py生产设置.py
      • manage.py管理文件

__ init __.py __ 初始化 __.py

from .base_settings import *
from .production_settings import *

try:
    from .local_settings import *
except:
    pass

base_settings.py base_settings.py

import os, dj_database_url

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

DEBUG = ""


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    # Disable Django's own staticfiles handling in favour of WhiteNoise, for
    # greater consistency between gunicorn and `./manage.py runserver`. See:
    # http://whitenoise.evans.io/en/stable/django.html#using-whitenoise-in-development
    'whitenoise.runserver_nostatic',
    'django.contrib.staticfiles',
    'app ',
    'app',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'project.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
            'debug': DEBUG,
        },
    },
]

WSGI_APPLICATION = 'project.wsgi.application'


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True

# Change 'default' database configuration with $DATABASE_URL.
DATABASES['default'].update(dj_database_url.config(conn_max_age=500))

# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

# Allow all host headers
ALLOWED_HOSTS = ['myproject.herokuapp.com', 'localhost']

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/

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

# Extra places for collectstatic to find static files.
STATICFILES_DIRS = [
    os.path.join(PROJECT_ROOT, 'static'),
]

# Simplified static file serving.
# https://warehouse.python.org/project/whitenoise/
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

local_settings.py local_settings.py

from .base_settings import *

SECRET_KEY = 'mysecretkey'

DEBUG = True

production_settings.py生产设置.py

from .base_settings import *

SECRET_KEY = os.environ.get('SECRET_KEY')

DEBUG = False

The only problem I know of that kicks in when DEBUG = False is the ALLOWED_HOSTS setting.DEBUG = False时,我知道的唯一问题是ALLOWED_HOSTS设置。 With DEBUG off Django will check your host name against the list and will reject the request if the host is not on the allowed list.关闭调试后,Django 将根据列表检查您的主机名,如果主机不在允许列表中,则拒绝请求。

It usually results in a 400 but can give a 500 if further problems are encountered: Django allowed hosts with port number它通常会导致 400,但如果遇到进一步的问题,可以给出 500: Django allowed hosts with port number

Thanks to this thread , I realized I had to remove my disabled collectstatic config var, then try to build again. 感谢这个线程,我意识到我必须删除禁用的 collectstatic 配置变量,然后再次尝试构建。 Didn't work.没用。 Error led me to realize that the default static file that comes with the starter template has to be INSIDE the settings MODULE.错误让我意识到启动模板附带的默认静态文件必须在设置模块内。 Did that, pushed - still didn't work.这样做了,推了 - 仍然没有用。 The traceback showed me that there was something wrong with my font-awesome css file.回溯显示我的字体很棒的 css 文件有问题。 Deleted the file, added a CDN instead, pushed, and boom.删除了文件,改为添加了 CDN,推送和繁荣。 Site works.网站工作。 I hope this is helpful to someone else in the future.我希望这对未来的其他人有帮助。

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

相关问题 当生产中的debug = False时500服务器错误 - 500 server error when debug=False in production 当 DEBUG=False 时 django 服务器错误 (500) - django server error (500) when DEBUG=False 每当django中debug = False时,Heroku会显示Server Error(500),而debug = True no error时 - Whenever debug=False in django, Heroku gives Server Error (500) and when debug=True no error 使用 Heroku 和 Django 时 Debug=False 时出现 500 错误 - 500 error when Debug=False with Heroku and Django 当Debug = False时,在Heroku中出现500错误 - 500 error in Heroku, when Debug=False 当 debug 设置为 False 时,在 Heroku 上部署 Django 时出现服务器错误 500 - Server error 500 on Django when deployed on Heroku when debug is set to False 当 DEBUG=False 时,我的 Django 管理面板给出服务器错误(500) - My Django admin panel gives server error(500) when DEBUG=False 尝试在 heroku 上使用 DEBUG=False 部署 django 应用程序时出现服务器错误 (500) - Server error (500) when trying to deploy django app with DEBUG=False on heroku Django 应用程序在 Debug = False 时在本地主机上获取服务器错误 500 - Django app getting server error 500 on local host when Debug = False 当 django 中的 Debug = False 时,为什么我在我的网站上看到服务器错误 500 - Why i am see server error 500 in my website when Debug = False in django
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM