无法在 Heroku 云中部署 Django 应用程序
Can't deploy Django application in Heroku cloud
我似乎无法通过 gunicorn
部署我的 Django 应用程序。这是我的 Procfile
:
web: gunicorn config.wsgi:application
我的 wsgi 文件不在项目下,而是在配置文件夹下 ./config/wsgi.py
:
import os
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.production")
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
我正在使用 heroku local
工具来尝试对此进行测试,但我 运行 遇到了这个错误:
$heroku local
forego | starting web.1 on port 5000
web.1 | [2015-11-22 10:05:29 -0800] [32081] [INFO] Starting gunicorn 19.3.0
web.1 | [2015-11-22 10:05:29 -0800] [32081] [INFO] Listening at: http://0.0.0.0:5000 (32081)
web.1 | [2015-11-22 10:05:29 -0800] [32081] [INFO] Using worker: sync
web.1 | [2015-11-22 10:05:29 -0800] [32084] [INFO] Booting worker with pid: 32084
web.1 | [2015-11-22 10:05:29 -0800] [32084] [ERROR] Exception in worker process:
web.1 | __import__(module)
web.1 | hon2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
web.1 | [2015-11-22 10:05:29 -0800] [32084] [INFO] Worker exiting (pid: 32084)
web.1 | [2015-11-22 10:05:29 -0800] [32081] [INFO] Shutting down: Master
web.1 | [2015-11-22 10:05:29 -0800] [32081] [INFO] Reason: Worker failed to boot.
几个小时以来,我一直在尝试阅读有关 Procfile 配置和 gunicorn 的内容,并尝试了不同的配置,甚至尝试将 wsgi 文件放在应用程序下并更改应用程序名称,但都无济于事。这似乎很明显我想念的东西。有什么想法吗?
在下面更新了一些我的项目结构。它基于 Two Scoops of Django 的结构,可以在 cookiecutter-django project.
上找到
base_dir/
|application/
|templates/
|base.html
|users/
|views.py
|model.py
|...
|other_apps/
|config
|wsgi.py
|urls.py
|settings/
|common.py
你必须让gunicorn 监听$PORT 环境变量指定的端口。我这样做:
web: gunicorn -w 4 -b 0.0.0.0:$PORT app:app
我认为您可能正确调用了所有模块。
您的 config
目录似乎没有 __init__.py
文件。
config
必须是常规 python 模块/包。
我似乎无法通过 gunicorn
部署我的 Django 应用程序。这是我的 Procfile
:
web: gunicorn config.wsgi:application
我的 wsgi 文件不在项目下,而是在配置文件夹下 ./config/wsgi.py
:
import os
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.production")
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
我正在使用 heroku local
工具来尝试对此进行测试,但我 运行 遇到了这个错误:
$heroku local
forego | starting web.1 on port 5000
web.1 | [2015-11-22 10:05:29 -0800] [32081] [INFO] Starting gunicorn 19.3.0
web.1 | [2015-11-22 10:05:29 -0800] [32081] [INFO] Listening at: http://0.0.0.0:5000 (32081)
web.1 | [2015-11-22 10:05:29 -0800] [32081] [INFO] Using worker: sync
web.1 | [2015-11-22 10:05:29 -0800] [32084] [INFO] Booting worker with pid: 32084
web.1 | [2015-11-22 10:05:29 -0800] [32084] [ERROR] Exception in worker process:
web.1 | __import__(module)
web.1 | hon2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
web.1 | [2015-11-22 10:05:29 -0800] [32084] [INFO] Worker exiting (pid: 32084)
web.1 | [2015-11-22 10:05:29 -0800] [32081] [INFO] Shutting down: Master
web.1 | [2015-11-22 10:05:29 -0800] [32081] [INFO] Reason: Worker failed to boot.
几个小时以来,我一直在尝试阅读有关 Procfile 配置和 gunicorn 的内容,并尝试了不同的配置,甚至尝试将 wsgi 文件放在应用程序下并更改应用程序名称,但都无济于事。这似乎很明显我想念的东西。有什么想法吗?
在下面更新了一些我的项目结构。它基于 Two Scoops of Django 的结构,可以在 cookiecutter-django project.
上找到base_dir/
|application/
|templates/
|base.html
|users/
|views.py
|model.py
|...
|other_apps/
|config
|wsgi.py
|urls.py
|settings/
|common.py
你必须让gunicorn 监听$PORT 环境变量指定的端口。我这样做:
web: gunicorn -w 4 -b 0.0.0.0:$PORT app:app
我认为您可能正确调用了所有模块。
您的 config
目录似乎没有 __init__.py
文件。
config
必须是常规 python 模块/包。