@Zuzupoj

Почему heroku выдаёт 500 ошибку?

Развернул сайт на heroku, но при попытку перейти на него выдёт Server Error (500).
Как узнать в чём дело? И куда вообще капать?

update:
Логи из bash heroku:
2020-04-26T16:54:47.386936+00:00 app[web.1]: [2020-04-26 16:54:47 +0000] [11] [INFO] Worker exiting (pid: 11)
2020-04-26T16:54:47.386942+00:00 app[web.1]: [2020-04-26 16:54:47 +0000] [10] [INFO] Worker exiting (pid: 10)
2020-04-26T16:54:47.386943+00:00 app[web.1]: [2020-04-26 16:54:47 +0000] [4] [INFO] Handling signal: term
2020-04-26T16:54:47.487627+00:00 app[web.1]: [2020-04-26 16:54:47 +0000] [4] [INFO] Shutting down: Master
2020-04-26T16:54:53.176427+00:00 app[web.1]: [2020-04-26 16:54:53 +0000] [4] [INFO] Starting gunicorn 20.0.4
2020-04-26T16:54:53.176945+00:00 app[web.1]: [2020-04-26 16:54:53 +0000] [4] [INFO] Listening at: http://0.0.0.0:48342 (4)
2020-04-26T16:54:53.177042+00:00 app[web.1]: [2020-04-26 16:54:53 +0000] [4] [INFO] Using worker: sync
2020-04-26T16:54:53.180869+00:00 app[web.1]: [2020-04-26 16:54:53 +0000] [10] [INFO] Booting worker with pid: 10
2020-04-26T16:54:53.204875+00:00 app[web.1]: [2020-04-26 16:54:53 +0000] [11] [INFO] Booting worker with pid: 11
2020-04-26T16:54:53.865350+00:00 heroku[web.1]: State changed from starting to up
2020-04-26T16:54:55.000000+00:00 app[api]: Build succeeded
2020-04-26T16:55:13.344792+00:00 app[web.1]: 10.142.64.122 - - [26/Apr/2020:16:55:13 +0000] "GET /reviews/ HTTP/1.1" 500 145 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0"
2020-04-26T16:55:13.344461+00:00 heroku[router]: at=info method=GET path="/reviews/" host=prqy.herokuapp.com request_id=98503209-aecc-46cb-abd1-a0f7a7870e07 fwd="188.32.33.3" dyno=web.1 connect=0ms service=145ms status=500 bytes=380 protocol=https
  • Вопрос задан
  • 2160 просмотров
Решения вопроса 1
@Zuzupoj Автор вопроса
Было не просто, но я справился. На компе в проекте:
settings.py
import django_heroku
Debug =  bool( os.environ.get('DJANGO_DEBUG', False) )
ALLOWED_HOSTS = ['*']
MIDDLEWARE = [
    'whitenoise.middleware.WhiteNoiseMiddleware', #Добавляем до 'django.middleware.security.SecurityMiddleware',
]

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'email@gmail.com' #С которого будет приходить сообщение
EMAIL_HOST_PASSWORD = 'password'
EMAIL_PORT = 587

ADMINS = [
    (''Name, 'youremail@gmail.com'),
]
WHITENOISE_USE_FINDERS = True
STATIC_ROOT = None
django_heroku.settings(locals()) #В конце

Проблема была в static файлах. Но при включённом сервере с DEBUG = False ты об этом никак не догодаешься, пока не настроишь почту, ибо при DEBUG = False он отправит тебе инфу об ошибках на почту указанную в ADMINS. Для решения проблемы со статикой я воспользовался whitenoise(Инфу можно накопать в гугле). Так как я решил не париться со статикой дальше, то поставил STATIC_ROOT = none, и теперь whitenoise искал статику как встроенное приложение 'django.contrib.staticfiles',(его я его кстати рубанул тоже, ибо и без него статика ищется). Проблема осталась в том, что он находил папку static в приложениях проекта, но не искал во вложенной в неё, так что я просто перенёс всю статику в одно место, а именно в static(без вложенных папок)
Возможно я где-то не очень точен, но как минимум логи вы увидите при DEBUG = False, а дальше решите всё по накатанной.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@yyyakovlev
На локале всё конечно же работает? Тогда предлагаю проверить написание путей. Эта джанга на хероку чертовски чувствительна к регистру: jpg\JPG, mp4\MP4. В вашем случаем может html\HTML. Тем самым считает, что PHOTO.JPG, photo.JPG, photo.jpg - это три разных файла. Мне оно помогло. Пардоньте, если не в этом, сам дилетант)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы