【发布时间】:2021-11-16 07:39:51
【问题描述】:
我在将我的 Django 应用程序部署到 heroku 方面需要帮助。我的 Django 项目在本地工作,但是当我部署到 Heroku 时,应用程序崩溃并且无法加载索引/主页。我不太确定 GET 请求有什么问题。
这里是heroku logs --tail:
2021-09-22T20:25:16.636085+00:00 heroku[web.1]: Starting process with command `gunicorn solarsystem.wsgi`
2021-09-22T20:25:17.678063+00:00 app[web.1]: [2021-09-22 20:25:17 +0000] [4] [INFO] Starting gunicorn 20.1.0
2021-09-22T20:25:17.678545+00:00 app[web.1]: [2021-09-22 20:25:17 +0000] [4] [INFO] Listening at: http://0.0.0.0:34748 (4)
2021-09-22T20:25:17.678598+00:00 app[web.1]: [2021-09-22 20:25:17 +0000] [4] [INFO] Using worker: sync
2021-09-22T20:25:17.681856+00:00 app[web.1]: [2021-09-22 20:25:17 +0000] [7] [INFO] Booting worker with pid: 7
2021-09-22T20:25:17.685446+00:00 app[web.1]: [2021-09-22 20:25:17 +0000] [7] [ERROR] Exception in worker process
2021-09-22T20:25:17.685447+00:00 app[web.1]: Traceback (most recent call last):
2021-09-22T20:25:17.685455+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
2021-09-22T20:25:17.685455+00:00 app[web.1]: worker.init_process()
2021-09-22T20:25:17.685456+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/workers/base.py", line 134, in init_process
2021-09-22T20:25:17.685456+00:00 app[web.1]: self.load_wsgi()
2021-09-22T20:25:17.685456+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
2021-09-22T20:25:17.685457+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2021-09-22T20:25:17.685457+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/app/base.py", line 67, in wsgi
2021-09-22T20:25:17.685458+00:00 app[web.1]: self.callable = self.load()
2021-09-22T20:25:17.685458+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
2021-09-22T20:25:17.685458+00:00 app[web.1]: return self.load_wsgiapp()
2021-09-22T20:25:17.685458+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
2021-09-22T20:25:17.685459+00:00 app[web.1]: return util.import_app(self.app_uri)
2021-09-22T20:25:17.685459+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/util.py", line 359, in import_app
2021-09-22T20:25:17.685460+00:00 app[web.1]: mod = importlib.import_module(module)
2021-09-22T20:25:17.685460+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/importlib/__init__.py", line 127, in import_module
2021-09-22T20:25:17.685460+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2021-09-22T20:25:17.685461+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
2021-09-22T20:25:17.685461+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
2021-09-22T20:25:17.685461+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
2021-09-22T20:25:17.685462+00:00 app[web.1]: ModuleNotFoundError: No module named 'solarsystem.wsgi'
2021-09-22T20:25:17.685525+00:00 app[web.1]: [2021-09-22 20:25:17 +0000] [7] [INFO] Worker exiting (pid: 7)
2021-09-22T20:25:17.705927+00:00 app[web.1]: [2021-09-22 20:25:17 +0000] [8] [INFO] Booting worker with pid: 8
2021-09-22T20:25:17.710035+00:00 app[web.1]: [2021-09-22 20:25:17 +0000] [8] [ERROR] Exception in worker process
2021-09-22T20:25:17.710037+00:00 app[web.1]: Traceback (most recent call last):
2021-09-22T20:25:17.710038+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
2021-09-22T20:25:17.710039+00:00 app[web.1]: worker.init_process()
2021-09-22T20:25:17.710039+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/workers/base.py", line 134, in init_process
2021-09-22T20:25:17.710039+00:00 app[web.1]: self.load_wsgi()
2021-09-22T20:25:17.710040+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
2021-09-22T20:25:17.710040+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2021-09-22T20:25:17.710040+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/app/base.py", line 67, in wsgi
2021-09-22T20:25:17.710041+00:00 app[web.1]: self.callable = self.load()
2021-09-22T20:25:17.710041+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
2021-09-22T20:25:17.710041+00:00 app[web.1]: return self.load_wsgiapp()
2021-09-22T20:25:17.710042+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
2021-09-22T20:25:17.710042+00:00 app[web.1]: return util.import_app(self.app_uri)
2021-09-22T20:25:17.710042+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/util.py", line 359, in import_app
2021-09-22T20:25:17.710043+00:00 app[web.1]: mod = importlib.import_module(module)
2021-09-22T20:25:17.710043+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/importlib/__init__.py", line 127, in import_module
2021-09-22T20:25:17.710043+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2021-09-22T20:25:17.710044+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
2021-09-22T20:25:17.710044+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
2021-09-22T20:25:17.710044+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
2021-09-22T20:25:17.710045+00:00 app[web.1]: ModuleNotFoundError: No module named 'solarsystem.wsgi'
2021-09-22T20:25:17.710149+00:00 app[web.1]: [2021-09-22 20:25:17 +0000] [8] [INFO] Worker exiting (pid: 8)
2021-09-22T20:25:17.716907+00:00 app[web.1]: [2021-09-22 20:25:17 +0000] [4] [WARNING] Worker with pid 8 was terminated due to signal 15
2021-09-22T20:25:17.815963+00:00 app[web.1]: [2021-09-22 20:25:17 +0000] [4] [INFO] Shutting down: Master
2021-09-22T20:25:17.816003+00:00 app[web.1]: [2021-09-22 20:25:17 +0000] [4] [INFO] Reason: Worker failed to boot.
2021-09-22T20:25:18.009217+00:00 heroku[web.1]: Process exited with status 3
2021-09-22T20:25:18.098544+00:00 heroku[web.1]: State changed from starting to crashed
2021-09-22T20:25:18.108568+00:00 heroku[web.1]: State changed from crashed to starting
2021-09-22T20:25:25.900935+00:00 heroku[web.1]: Starting process with command `gunicorn solarsystem.wsgi`
2021-09-22T20:25:27.177917+00:00 app[web.1]: [2021-09-22 20:25:27 +0000] [4] [INFO] Starting gunicorn 20.1.0
2021-09-22T20:25:27.178374+00:00 app[web.1]: [2021-09-22 20:25:27 +0000] [4] [INFO] Listening at: http://0.0.0.0:24186 (4)
2021-09-22T20:25:27.178441+00:00 app[web.1]: [2021-09-22 20:25:27 +0000] [4] [INFO] Using worker: sync
2021-09-22T20:25:27.181781+00:00 app[web.1]: [2021-09-22 20:25:27 +0000] [7] [INFO] Booting worker with pid: 7
2021-09-22T20:25:27.185297+00:00 app[web.1]: [2021-09-22 20:25:27 +0000] [7] [ERROR] Exception in worker process
2021-09-22T20:25:27.185298+00:00 app[web.1]: Traceback (most recent call last):
2021-09-22T20:25:27.185306+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
2021-09-22T20:25:27.185307+00:00 app[web.1]: worker.init_process()
2021-09-22T20:25:27.185307+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/workers/base.py", line 134, in init_process
2021-09-22T20:25:27.185307+00:00 app[web.1]: self.load_wsgi()
2021-09-22T20:25:27.185308+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
2021-09-22T20:25:27.185308+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2021-09-22T20:25:27.185309+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/app/base.py", line 67, in wsgi
2021-09-22T20:25:27.185309+00:00 app[web.1]: self.callable = self.load()
2021-09-22T20:25:27.185309+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
2021-09-22T20:25:27.185310+00:00 app[web.1]: return self.load_wsgiapp()
2021-09-22T20:25:27.185310+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
2021-09-22T20:25:27.185310+00:00 app[web.1]: return util.import_app(self.app_uri)
2021-09-22T20:25:27.185311+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/gunicorn/util.py", line 359, in import_app
2021-09-22T20:25:27.185311+00:00 app[web.1]: mod = importlib.import_module(module)
2021-09-22T20:25:27.185311+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/importlib/__init__.py", line 127, in import_module
2021-09-22T20:25:27.185312+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2021-09-22T20:25:27.185312+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
2021-09-22T20:25:27.185312+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
2021-09-22T20:25:27.185313+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
2021-09-22T20:25:27.185313+00:00 app[web.1]: ModuleNotFoundError: No module named 'solarsystem.wsgi'
2021-09-22T20:25:27.185361+00:00 app[web.1]: [2021-09-22 20:25:27 +0000] [7] [INFO] Worker exiting (pid: 7)
2021-09-22T20:25:27.209899+00:00 app[web.1]: [2021-09-22 20:25:27 +0000] [4] [INFO] Shutting down: Master
2021-09-22T20:25:27.209934+00:00 app[web.1]: [2021-09-22 20:25:27 +0000] [4] [INFO] Reason: Worker failed to boot.
2021-09-22T20:25:27.372467+00:00 heroku[web.1]: Process exited with status 3
2021-09-22T20:25:27.443605+00:00 heroku[web.1]: State changed from starting to crashed
2021-09-22T20:25:29.000000+00:00 app[api]: Build succeeded
主要是我看到问题的地方(这是最后两行日志):
2021-09-22T20:25:38.424383+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=mobius-7.herokuapp.com request_id=d6aab0b1-1ef3-4432-b681-e9eb6abb641b fwd="76.115.207.199" dyno= connect= service= status=503 bytes= protocol=https
2021-09-22T20:25:38.786726+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=mobius-7.herokuapp.com request_id=c99bfa40-9d95-4974-968d-789668b49f29 fwd="76.115.207.199" dyno= connect= service= status=503 bytes= protocol=https
settings.py:
DEBUG = os.environ.get('DJANGO_DEBUG', '') != 'False'
ALLOWED_HOSTS = ['*']
# Application definition
INSTALLED_APPS = [
'space',
'material',
'sass_processor',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
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',
]
ROOT_URLCONF = 'solarsystem.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(SETTINGS_PATH, 'templates')],
'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 = 'solarsystem.wsgi.application'
# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# Password validation
# https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators
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',
},
]
# Internationalization
# https://docs.djangoproject.com/en/3.2/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'static'
SASS_PROCESSOR_ROOT = STATIC_ROOT
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'sass_processor.finders.CssFinder',
]
# Default primary key field type
# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
# Configure Django App for Heroku.
import django_heroku
django_heroku.settings(locals())
Procfile:
web: gunicorn solarsystem.wsgi
【问题讨论】:
-
无关,但现在您已经与全世界共享了您的密钥,您应该立即生成一个新密钥!无论如何,这不应该在您的设置文件中 - 应该通过 env var 或秘密进行设置...
-
@michjnich 是的,但我没有用这个应用程序做任何后端或数据库的东西,所以我真的不在乎哈哈
-
不,这两行并不重要。这更重要:
ModuleNotFoundError: No module named 'solarsystem.wsgi'。请edit您的问题并显示您的目录结构。 (如果您通过heroku local运行,您的应用也可能无法在本地运行。) -
@Chris 你是对的,我在进一步调查时看到了这一点。我能够让那部分工作,我设法放错了 procfile 位置......但现在有一个全新的问题。我现在要修改问题。
标签: django heroku deployment