无法在Heroku云中部署Django应用程序

时间:2015-11-22 18:08:29

标签: python django heroku cookiecutter-django

我似乎无法通过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文件放在应用程序下并更改应用程序名称,都无济于事。这似乎是我想念的显而易见的东西。有什么想法吗?

使用下面的一点项目结构进行更新。它基于Django的两个Scoops的结构,可以在cookiecutter-django project找到。

base_dir/
 |application/
   |templates/
     |base.html
   |users/
     |views.py
     |model.py
   |...
   |other_apps/
 |config
   |wsgi.py
   |urls.py
   |settings/
     |common.py

2 个答案:

答案 0 :(得分:1)

你必须让gunicorn监听$ PORT环境变量指定的端口。我做这样的事情:

web: gunicorn -w 4 -b 0.0.0.0:$PORT app:app

我想你可能正确调用了所有模块。

答案 1 :(得分:1)

您的config目录似乎没有__init__.py文件。

config必须是常规的python模块/包。