2
votes

Déploiement de django sur Heroku: Erreur de serveur (500)

J'essaie de déployer mon application sur heroku.
Le déploiement a été effectué correctement mais j'ai eu une erreur de serveur (500).
Lorsque j'ai activé DEBUG true, l'erreur du serveur ne s'est pas produite.
Donc, je pense qu'il y a quelque chose qui ne va pas avec le chargement de fichiers statiques.

Je ne trouve aucune erreur critique notable dans le journal.
J'ai déjà installé whitenoise, mais cela ne fonctionne pas.

Y a-t-il quelqu'un qui résout ce problème?

Journaux heroku

web: gunicorn project5.wsgi --log-file -

settings.py

import os
from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project5.settings')

application = get_wsgi_application()

wsgi.py

XXX

Procfile

import os
import dj_database_url
import django_heroku

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

DEBUG = False

SECRET_KEY = ***

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
    'blog5.apps.Blog5Config',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    'markdownx',
    'widget_tweaks',
]

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',
]

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

ROOT_URLCONF = 'project5.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',
            ],
        },
    },
]

WSGI_APPLICATION = 'project5.wsgi.application'

DATABASES = { 'default': dj_database_url.config() }
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

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 = 'ja'

TIME_ZONE = 'Asia/Tokyo'

USE_I18N = True

USE_L10N = True

USE_TZ = True

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

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

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

os.makedirs(STATIC_ROOT, exist_ok=True)

try:
    from .local_settings import *
except ImportError:
    pass

django_heroku.settings(locals())


4 commentaires

avez-vous installé gunicorn dans heroku?


Oui. J'ai mis gunicorn == 19.9.0 dans requirements.txt


Essayez ceci DISABLE_COLLECTSTATIC = 1, dans les paramètres-> révéler les configurations-> ajouter ceci


J'ai essayé, mais je n'ai pas fonctionné.


4 Réponses :


2
votes

Cela n'a rien à voir avec la blancheur. Le problème est votre paramètre ALLOWED_HOSTS; cela doit avoir le nom d'hôte de votre site.


4 commentaires

J'ai essayé ALLOWED_HOSTS = ['*'], mais je n'ai pas fonctionné. Existe-t-il un autre moyen de définir ALLOWED_HOSTS?


Essayez ALLOWED_HOSTS = ['.herokuapp.com']


J'ai essayé ALLOWED_HOSTS = ['*'], ALLOWED_HOSTS = ['.herokuapp.com'] et ALLOWED_HOSTS = ['shunka-blog.herokuapp.com']. Mais encore une erreur de serveur ...


Même problème ici. ['*', '.herokuapp.com'] ne fonctionne pas.



0
votes

J'ai déployé mon application sur EC2, au lieu d'Heroku. Cela fonctionne bien pour le moment lorsque DEBUG est défini sur False.

Je ferme donc cette question. Merci pour vos conseils.


0 commentaires

0
votes

Définissez DEBUG = True dans votre fichier settings.py pour vérifier que l'erreur exacte s'est produite et ajoutez l'URL du domaine heroku dans la liste ALLOWED_HOST.


0 commentaires

0
votes

J'ai écrit une petite instruction ici comment j'ai résolu ce problème https://stackoverflow.com/a/56456466/7986808. En bref: vous devez modifier la journalisation pour découvrir le vrai problème dans les journaux heroku.


0 commentaires