Я первый таймер, работающий с Джанго, и сейчас пытаюсь развернуть его в Heroku.Я могу нажать на heroku, и их служба распознает мое приложение как приложение на Python.Однако при переходе к моему приложению в браузере я получаю следующую ошибку:
В приложении произошла ошибка, и ваша страница не может быть обработана.Если вы являетесь владельцем приложения, проверьте подробности в своих журналах.Это можно сделать из интерфейса командной строки Heroku с помощью команды heroku logs --tail
, проверяя журналы. Я получаю следующее:
2019-07-09T06:00:29.052294+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2019-07-09T06:00:29.052301+00:00 app[web.1]: ModuleNotFoundError: No module named 'xxxx'
2019-07-09T06:00:29.052738+00:00 app[web.1]: [2019-07-09 06:00:29 +0000] [10] [INFO] Worker exiting (pid: 10)
2019-07-09T06:00:29.198426+00:00 app[web.1]: [2019-07-09 06:00:29 +0000] [4] [INFO] Shutting down: Master
2019-07-09T06:00:29.198530+00:00 app[web.1]: [2019-07-09 06:00:29 +0000] [4] [INFO] Reason: Worker failed to boot.
2019-07-09T06:00:29.314321+00:00 heroku[web.1]: State changed from up to crashed
2019-07-09T06:00:29.296331+00:00 heroku[web.1]: Process exited with status 3
2019-07-09T06:00:29.937311+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=murmuring-dusk-96030.herokuapp.com request_id=38020b2b-dc63-42aa-91e6-63e1c377eadd fwd="155.93.179.40" dyno= connect= service= status=503 bytes= protocol=https
2019-07-09T06:00:30.382887+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=murmuring-dusk-96030.herokuapp.com request_id=133a6de4-be78-4ac9-9fcf-f65e74c41de3 fwd="155.93.179.40" dyno= connect= service= status=503 bytes= protocol=https
Я не уверен на 100%, ноЯ думаю, что проблема связана с тем, как я обслуживаю статические файлы?
У меня есть настроенный статический файл, служащий с пробелами, подобный этому:
needs.txt:
dj-database-url==0.5.0
Django==2.2.3
django-heroku==0.3.1
django-tinymce4-lite==1.7.5
gunicorn==19.9.0
jsmin==2.2.2
Pillow==6.0.0
psycopg2==2.8.3
pytz==2019.1
sqlparse==0.3.0
whitenoise==4.1.2
procfile:
web: gunicornblog.wsgi --log-file -
настройки:
import os
import django_heroku
import dj_database_url
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
ALLOWED_HOSTS = ['murmuring-dusk-96030.herokuapp.com', '127.0.0.1:8000']
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'post',
'marketing',
'tinymce'
]
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 = 'blog.urls'
# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATICFILES_DIRS=[os.path.join(BASE_DIR,'static_in_env')]
VENV_PATH=os.path.dirname(BASE_DIR)
STATIC_ROOT=os.path.join(VENV_PATH,'static_root')
MEDIA_ROOT=os.path.join(VENV_PATH,'media_root')
# Add configuration for static files storage using whitenoise
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
django_heroku.settings(locals())
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
Буду признателен за любой совет, как решить.Развертывание на heroku не вызывает затруднений, но подача статических файлов с Django и Heroku, похоже, немного сложнее.