heroku에 django를 올린 후에 server error 500이 발생합니다.

조회수 1680회

현재 django를 갖고 간단한 블로그를 만든 후, heroku에 올렸습니다. 근데 몇몇 페이지에서 server error(500)오류가 발생합니다.

일단 server error(500) 오류가 발생하는 부분은 google login페이지, allauth로 만든 email로 로그인하는 페이지, 그리고 django admin페이지 입니다.

settings.py 파일입니다.

import os
import dj_database_url

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

SECRET_KEY = '원래 존재함'
DEBUG = False

ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
    'blog',
    'basecamp',


    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.sites',
    'django.contrib.staticfiles',
    'django_extensions',

    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',

    'markdownx',
    'crispy_forms',
    'storages',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    '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',
    'whitenoise.middleware.WhiteNoiseMiddleware',
]

ROOT_URLCONF = 'my_site_prj.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 = 'my_site_prj.wsgi.application'
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
DATABASES['default'].update(dj_database_url.config(conn_max_age=500))
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 = 'Asia/Seoul'

USE_I18N = True

USE_L10N = True

USE_TZ = True

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
)

ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'none'

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

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

from datetime import datetime

MARKDOWNX_MEDIA_PATH = datetime.now().strftime('markdownx/%Y/%m/%d')

CRISPY_TEMPLATE_PACK = 'bootstrap4'

LOGIN_REDIRECT_URL = '/blog/'

AWS_ACCESS_KEY_ID = ' ' # 원래 존재함
AWS_SECRET_ACCESS_KEY = ' ' #원래 존재함
AWS_REGION = 'ap-northeast-2'
AWS_STORAGE_BUCKET_NAME = 'inflearn-django'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.%s.amazonaws.com' % (AWS_STORAGE_BUCKET_NAME, AWS_REGION)
AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}
DEFAULT_FILE_STORAGE = 'my_site_prj.asset_storage.MediaStorage'

requirements.txt 파일입니다.

beautifulsoup4==4.8.1
boto3==1.10.45
botocore==1.13.45
certifi==2019.11.28
cffi==1.13.2
chardet==3.0.4
cryptography==2.8
defusedxml==0.6.0
dj-database-url==0.5.0
Django==2.2
django-allauth==0.41.0
django-crispy-forms==1.8.1
django-extensions==2.2.5
django-markdownx==2.0.28
django-storages==1.8
docutils==0.15.2
gunicorn==20.0.4
idna==2.8
jmespath==0.9.4
Markdown==3.1.1
oauthlib==3.1.0
Pillow==6.2.1
psycopg2-binary==2.8.4
pycparser==2.19
python-dateutil==2.8.1
python3-openid==3.1.0
pytz==2019.3
requests==2.22.0
requests-oauthlib==1.3.0
s3transfer==0.2.1
six==1.13.0
soupsieve==1.9.5
sqlparse==0.3.0
urllib3==1.25.7
whitenoise==5.0.1

runtime.txt는 python-3.7.2

Procfile은 web: gunicorn my_site_prj.wsgi입니다.

페이지가 처음부터 오류가 나는 것도 아니고 몇몇 서비스만 오류가 발생해서 어떤 부분을 보여야 하는지 감이 잡히질 않습니다.. ㅜ 혹여나 현재 보여드린 부분이외에 다른부분이 필요하다 하시면 바로 업데이트 하겠습니다. 많은 도움 부탁드립니다. 감사합니다 ㅜㅜ


일단 debug를 켜놓고 heroku에 올려서 오류를 봤는데 분명히 localhost에선 잘들어 가지던 accounts/login/과 /accounts/google/login/, /admin/login/도 doesnotexist라고 url이 없다고 합니다. 왜 heroku에만 올라가면 url을 찾지 못하는 걸까요?

이건 config의 urls입니다.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('blog/', include('blog.urls')),
    path('admin/', admin.site.urls),
    path('markdownx/', include('markdownx.urls')),
    path('accounts/', include('allauth.urls')),
    path('', include('basecamp.urls')),
]
  • 에러 메시지를 봐야할거 같네요. heroku는 서버 로그가 없던가요? 엽토군 2020.1.3 15:35

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)