2

I've been struggling for days just trying to deploy my site to Heroku. I've referenced many other Stack Overflow questions about this topic, such as:

For reference, I was following Heroku's guide on the deployment of Django apps when doing this. Below is the relevant code to this dilemma of mine.

base_settings.py

import os
from pathlib import Path


# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent.parent


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = thekey

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ['[REDACTED].herokuapp.com','localhost','127.0.0.1']


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'store.apps.StoreConfig',
    'basket.apps.BasketConfig',
    'account.apps.AccountConfig',
    'orders.apps.OrdersConfig',
    'checkout.apps.CheckoutConfig',
    'mptt',
]

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

WSGI_APPLICATION = 'hifive.wsgi.application'


# Database
# https://docs.djangoproject.com/en/3.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

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

STATIC_URL = '/static/'

STATIC_ROOT = (
    os.path.join(BASE_DIR, "static")
)

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

# Basket session ID
BASKET_SESSION_ID = 'basket'

# Email setting
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

#whitenoice static config goes here
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"

Procfile

release: python manage.py migrate
web: gunicorn hifive.wsgi --preload --log-file -

heroku.py (uses the django-environ package, acts similar to the old django-heroku package)

"""
Production Settings for Heroku
"""

import environ

# If using in your own project, update the project namespace below
from projectname.settings.base_settings import *

env = environ.Env(
    # set casting, default value
    DEBUG=(bool, False)
)

# False if not in os.environ
DEBUG = env('DEBUG')

# Raises django's ImproperlyConfigured exception if SECRET_KEY not in os.environ
SECRET_KEY = env('SECRET_KEY')

ALLOWED_HOSTS = env.list('ALLOWED_HOSTS')

# Parse database connection url strings like psql://user:pass@127.0.0.1:8458/db
DATABASES = {
    # read os.environ['DATABASE_URL'] and raises ImproperlyConfigured exception if not found
    'default': env.db(),
}

Most recent Heroku logs

2021-07-09T18:21:24.244522+00:00 app[web.1]: [2021-07-09 18:21:24 +0000] [9] [INFO] Worker exiting (pid: 9)
2021-07-09T18:21:24.246961+00:00 app[web.1]: [2021-07-09 18:21:24 +0000] [4] [WARNING] Worker with pid 8 was terminated due to signal 15
2021-07-09T18:21:24.448574+00:00 app[web.1]: [2021-07-09 18:21:24 +0000] [4] [INFO] Shutting down: Master
2021-07-09T18:21:24.616313+00:00 heroku[web.1]: Process exited with status 0
2021-07-09T18:21:40.928920+00:00 heroku[web.1]: Starting process with command `gunicorn hifive.wsgi --preload --log-file -`
2021-07-09T18:21:48.514793+00:00 app[web.1]: [2021-07-09 18:21:48 +0000] [4] [INFO] Starting gunicorn 20.1.0
2021-07-09T18:21:48.515601+00:00 app[web.1]: [2021-07-09 18:21:48 +0000] [4] [INFO] Listening at: http://0.0.0.0:16532 (4)
2021-07-09T18:21:48.519986+00:00 app[web.1]: [2021-07-09 18:21:48 +0000] [4] [INFO] Using worker: sync
2021-07-09T18:21:48.530310+00:00 app[web.1]: [2021-07-09 18:21:48 +0000] [8] [INFO] Booting worker with pid: 8
2021-07-09T18:21:48.586400+00:00 app[web.1]: [2021-07-09 18:21:48 +0000] [9] [INFO] Booting worker with pid: 9
2021-07-09T18:21:48.604573+00:00 heroku[web.1]: State changed from starting to up
2021-07-09T18:21:56.854782+00:00 app[web.1]: 10.63.102.120 - - [09/Jul/2021:18:21:56 +0000] "GET / HTTP/1.1" 500 145 "https://dashboard.heroku.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
2021-07-09T18:21:56.855004+00:00 heroku[router]: at=info method=GET path="/" host=[REDACTED].herokuapp.com request_id=1781abc4-ea2d-4a6f-8d5a-8d6978e3f796 fwd="146.115.104.181" dyno=web.1 connect=7ms service=2312ms status=500 bytes=403 protocol=https
2021-07-09T18:55:29.769232+00:00 heroku[web.1]: Idling
2021-07-09T18:55:29.772171+00:00 heroku[web.1]: State changed from up to down
2021-07-09T18:55:31.082908+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2021-07-09T18:55:31.292387+00:00 app[web.1]: [2021-07-09 18:55:31 +0000] [4] [INFO] Handling signal: term
2021-07-09T18:55:31.292906+00:00 app[web.1]: [2021-07-09 18:55:31 +0000] [9] [INFO] Worker exiting (pid: 9)
2021-07-09T18:55:31.320569+00:00 app[web.1]: [2021-07-09 18:55:31 +0000] [8] [INFO] Worker exiting (pid: 8)
2021-07-09T18:55:31.699981+00:00 app[web.1]: [2021-07-09 18:55:31 +0000] [4] [INFO] Shutting down: Master
2021-07-09T18:55:31.914898+00:00 heroku[web.1]: Process exited with status 0
2021-07-10T11:01:07.000000+00:00 app[api]: Build started by user [REDACTED]@gmail.com
2021-07-10T11:02:33.756595+00:00 app[api]: Running release v21 commands by user [REDACTED]@gmail.com
2021-07-10T11:02:33.756595+00:00 app[api]: Deploy 5b3c4ba1 by user [REDACTED]@gmail.com
2021-07-10T11:02:34.158924+00:00 app[api]: Starting process with command `/bin/sh -c 'if curl $HEROKU_RELEASE_LOG_STREAM --silent --connect-timeout 10 --retry 3 --retry-delay 1 >/tmp/log-stream; then
2021-07-10T11:02:34.158924+00:00 app[api]: chmod u+x /tmp/log-stream
2021-07-10T11:02:34.158924+00:00 app[api]: /tmp/log-stream /bin/sh -c '"'"'python manage.py migrate'"'"'
2021-07-10T11:02:34.158924+00:00 app[api]: else
2021-07-10T11:02:34.158924+00:00 app[api]: python manage.py migrate
2021-07-10T11:02:34.158924+00:00 app[api]: fi'` by user [REDACTED]@gmail.com
2021-07-10T11:02:46.552302+00:00 heroku[release.8726]: Starting process with command `/bin/sh -c 'if curl https://heroku-release-output.s3.amazonaws.com/log-stream?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJ3LIQ2SWG7V76SVQ%2F20210710%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210710T110234Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=7047143c51310764b25b9b542e07ef0a320a4840d8f2e9b1390a67181543e364 --silent --connect-timeout 10 --retry 3 --retry-delay 1 >/tmp/log-stream; then
2021-07-10T11:02:47.212992+00:00 heroku[release.8726]: State changed from starting to up
2021-07-10T11:02:49.914196+00:00 app[release.8726]: Operations to perform:
2021-07-10T11:02:49.914206+00:00 app[release.8726]: Apply all migrations: account, admin, auth, checkout, contenttypes, orders, sessions, store
2021-07-10T11:02:49.938375+00:00 app[release.8726]: Running migrations:
2021-07-10T11:02:49.938376+00:00 app[release.8726]: No migrations to apply.
2021-07-10T11:02:50.249379+00:00 heroku[release.8726]: Process exited with status 0
2021-07-10T11:02:50.337703+00:00 heroku[release.8726]: State changed from up to complete
2021-07-10T11:02:51.862106+00:00 app[api]: Release v21 created by user [REDACTED]@gmail.com
2021-07-10T11:02:52.474927+00:00 heroku[web.1]: State changed from down to starting
2021-07-10T11:02:56.000000+00:00 app[api]: Build succeeded
2021-07-10T11:03:06.594414+00:00 heroku[web.1]: Starting process with command `gunicorn hifive.wsgi --preload --log-file -`
2021-07-10T11:03:10.041463+00:00 app[web.1]: [2021-07-10 11:03:10 +0000] [4] [INFO] Starting gunicorn 20.1.0
2021-07-10T11:03:10.042372+00:00 app[web.1]: [2021-07-10 11:03:10 +0000] [4] [INFO] Listening at: http://0.0.0.0:57946 (4)
2021-07-10T11:03:10.042475+00:00 app[web.1]: [2021-07-10 11:03:10 +0000] [4] [INFO] Using worker: sync
2021-07-10T11:03:10.048960+00:00 app[web.1]: [2021-07-10 11:03:10 +0000] [8] [INFO] Booting worker with pid: 8
2021-07-10T11:03:10.053062+00:00 app[web.1]: [2021-07-10 11:03:10 +0000] [9] [INFO] Booting worker with pid: 9
2021-07-10T11:03:10.887530+00:00 heroku[web.1]: State changed from starting to up
2021-07-10T11:03:30.263960+00:00 app[web.1]: 10.63.104.194 - - [10/Jul/2021:11:03:30 +0000] "GET / HTTP/1.1" 500 145 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 
like Gecko) Chrome/91.0.4472.124 Safari/537.36"
2021-07-10T11:03:30.264986+00:00 heroku[router]: at=info method=GET path="/" host=[REDACTED].herokuapp.com request_id=59d8fe15-39d2-4c4c-a310-db42018c9c9b fwd="98.118.105.83" dyno=web.1 connect=1ms service=557ms status=500 bytes=403 protocol=https
2021-07-10T11:29:57.576929+00:00 app[api]: Starting process with command `python manage.py migrate` by user [REDACTED]@gmail.com
2021-07-10T11:30:11.074996+00:00 heroku[run.5139]: State changed from starting to up
2021-07-10T11:30:11.079694+00:00 heroku[run.5139]: Awaiting client
2021-07-10T11:30:11.129997+00:00 heroku[run.5139]: Starting process with command `python manage.py migrate`
2021-07-10T11:30:18.414777+00:00 heroku[run.5139]: Process exited with status 0
2021-07-10T11:30:18.480456+00:00 heroku[run.5139]: State changed from up to complete
2021-07-10T11:33:31.796164+00:00 app[api]: Set DJANGO_DEBUG config vars by user [REDACTED]@gmail.com
2021-07-10T11:33:31.796164+00:00 app[api]: Running release v22 commands by user [REDACTED]@gmail.com
2021-07-10T11:33:32.335784+00:00 app[api]: Starting process with command `/bin/sh -c 'if curl $HEROKU_RELEASE_LOG_STREAM --silent --connect-timeout 10 --retry 3 --retry-delay 1 >/tmp/log-stream; then
2021-07-10T11:33:32.335784+00:00 app[api]: chmod u+x /tmp/log-stream
2021-07-10T11:33:32.335784+00:00 app[api]: /tmp/log-stream /bin/sh -c '"'"'python manage.py migrate'"'"'
2021-07-10T11:33:32.335784+00:00 app[api]: else
2021-07-10T11:33:32.335784+00:00 app[api]: python manage.py migrate
2021-07-10T11:33:32.335784+00:00 app[api]: fi'` by user [REDACTED]@gmail.com
2021-07-10T11:33:43.308237+00:00 heroku[release.2575]: Starting process with command `/bin/sh -c 'if curl https://heroku-release-output.s3.amazonaws.com/log-stream?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJ3LIQ2SWG7V76SVQ%2F20210710%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210710T113332Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=f8dddd920ac062b5204f56360898ba12c0526b7b23df394a8f62777e709798db --silent --connect-timeout 10 --retry 3 --retry-delay 1 >/tmp/log-stream; then
2021-07-10T11:33:43.988281+00:00 heroku[release.2575]: State changed from starting to up
2021-07-10T11:33:47.079959+00:00 app[release.2575]: Operations to perform:
2021-07-10T11:33:47.079970+00:00 app[release.2575]: Apply all migrations: account, admin, auth, checkout, contenttypes, orders, sessions, store
2021-07-10T11:33:47.106575+00:00 app[release.2575]: Running migrations:
2021-07-10T11:33:47.106577+00:00 app[release.2575]: No migrations to apply.
2021-07-10T11:33:47.438883+00:00 heroku[release.2575]: Process exited with status 0
2021-07-10T11:33:47.503329+00:00 heroku[release.2575]: State changed from up to complete
2021-07-10T11:33:48.574628+00:00 app[api]: Release v22 created by user [REDACTED]@gmail.com
2021-07-10T11:33:48.984882+00:00 heroku[web.1]: Restarting
2021-07-10T11:33:49.001365+00:00 heroku[web.1]: State changed from up to starting
2021-07-10T11:33:51.000457+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2021-07-10T11:33:51.086147+00:00 app[web.1]: [2021-07-10 11:33:51 +0000] [9] [INFO] Worker exiting (pid: 9)
2021-07-10T11:33:51.130130+00:00 app[web.1]: [2021-07-10 11:33:51 +0000] [8] [INFO] Worker exiting (pid: 8)
2021-07-10T11:33:51.142070+00:00 app[web.1]: [2021-07-10 11:33:51 +0000] [4] [INFO] Handling signal: term
2021-07-10T11:33:51.162224+00:00 app[web.1]: [2021-07-10 11:33:51 +0000] [4] [WARNING] Worker with pid 9 was terminated due to signal 15
2021-07-10T11:33:51.163013+00:00 app[web.1]: [2021-07-10 11:33:51 +0000] [4] [WARNING] Worker with pid 8 was terminated due to signal 15
2021-07-10T11:33:51.248376+00:00 app[web.1]: [2021-07-10 11:33:51 +0000] [4] [INFO] Shutting down: Master
2021-07-10T11:33:51.710703+00:00 heroku[web.1]: Process exited with status 0
2021-07-10T11:34:04.636748+00:00 heroku[web.1]: Starting process with command `gunicorn hifive.wsgi --preload --log-file -`
2021-07-10T11:34:09.776118+00:00 app[web.1]: [2021-07-10 11:34:09 +0000] [4] [INFO] Starting gunicorn 20.1.0
2021-07-10T11:34:09.777118+00:00 app[web.1]: [2021-07-10 11:34:09 +0000] [4] [INFO] Listening at: http://0.0.0.0:40804 (4)
2021-07-10T11:34:09.777259+00:00 app[web.1]: [2021-07-10 11:34:09 +0000] [4] [INFO] Using worker: sync
2021-07-10T11:34:09.783991+00:00 app[web.1]: [2021-07-10 11:34:09 +0000] [8] [INFO] Booting worker with pid: 8
2021-07-10T11:34:09.793436+00:00 app[web.1]: [2021-07-10 11:34:09 +0000] [9] [INFO] Booting worker with pid: 9
2021-07-10T11:34:10.322938+00:00 heroku[web.1]: State changed from starting to up
2021-07-10T11:34:12.800333+00:00 heroku[router]: at=info method=GET path="/" host=[REDACTED].herokuapp.com request_id=031f5fc8-1bbb-4885-89d1-54551816606f fwd="98.118.105.83" dyno=web.1 connect=1ms service=948ms status=500 bytes=403 protocol=https
2021-07-10T11:34:12.801449+00:00 app[web.1]: 10.31.89.92 - - [10/Jul/2021:11:34:12 +0000] "GET / HTTP/1.1" 500 145 "https://dashboard.heroku.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"

The worst part is that whenever I look at the logs, there doesn't seem to be an error and I'm unsure how to solve this. Any advice on how to tackle this problem would be much appreciated.

Edo Akse
  • 4,051
  • 2
  • 10
  • 21
bimmui
  • 131
  • 1
  • 11
  • Have you tried printing the actual problem in heroku logs...?? recommend you to do that... also try `collectstatic` or try running application with `--insecure`. – Shivendra Pratap Kushwaha Jul 10 '21 at 12:43
  • I tried `collectstatic`, but I have not tried using `--insecure` nor have I heard of it until now. I did a quick look of up it and tried running `heroku run python manage.py runserver --insecure` in my terminal, but I still get the server error. – bimmui Jul 10 '21 at 13:05

0 Answers0