2015-09-28 102 views
0

我想组装一些missing pieces以了解如何将一个Django应用部署到heroku,以便我可以在Heroku上启动一个Newsdiffs的实例。“hellodjango.wsgi”在哪里?

当我走过运行Django on Heroku说明他们有添加一行Procfile,上面写着这样的:web: gunicorn hellodjango.wsgi --log-file -

但是没有实际的文件名为“hellodjango.wsgi”所以......在教程,“hellodjango.wsgi”模块在哪里创建?

而且,也许更重要的一点是,为什么heroku local不合适,我有web.1 | : No module named newsdiffs.wsginewdsdiffs/wsgi.py肯定存在。

我可以在本地与python website/manage.py runserver的启动应用程序,但如果我这样做gunicorn newsdiffs.wsgi我得到以下,其中不包括任何明显的迹象(我的眼睛)我在做什么错:

(venv)[email protected]:newsdiffs$ gunicorn newsdiffs.wsgi 
Traceback (most recent call last): 
    File "/home/amanda/Public/newsdiffs/venv/bin/gunicorn", line 11, in <module> 
    sys.exit(run()) 
    File "/home/amanda/Public/newsdiffs/venv/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 74, in run 
    WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run() 
    File "/home/amanda/Public/newsdiffs/venv/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 185, in run 
    super(Application, self).run() 
    File "/home/amanda/Public/newsdiffs/venv/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 71, in run 
    Arbiter(self).run() 
    File "/home/amanda/Public/newsdiffs/venv/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 169, in run 
    self.manage_workers() 
    File "/home/amanda/Public/newsdiffs/venv/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 477, in manage_workers 
    self.spawn_workers() 
    File "/home/amanda/Public/newsdiffs/venv/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 542, in spawn_workers 
    time.sleep(0.1 * random.random()) 
    File "/home/amanda/Public/newsdiffs/venv/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 209, in handle_chld 
    self.reap_workers() 
    File "/home/amanda/Public/newsdiffs/venv/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 459, in reap_workers 
    raise HaltServer(reason, self.WORKER_BOOT_ERROR) 
gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3> 

回答

1

gunicorn命令采用Python模块的名称,而不是文件的路径。如果hellodjango.wsgi是Python模块的名称,则相应的文件将是hellodjango/wsgi.pyhellodjango/wsgi/__init__.py

这与用于在导入模块时引用模块的语法相同,例如,您将import * from hellodjango.wsgi访问hellodjango/wsgi.py中定义的内容。

django-admin startproject命令将在与项目的settings.pyurls.py文件相同的目录中创建wsgi.py文件。

+0

嗯。我确实有一个文件'newsdiffs/wsgi.py',但'heroku local'表示“没有名为newsdiffs.wsgi的模块”(注意:更新了我的问题以澄清这一点。) – Amanda

+0

您可以运行'gunicorn newsdiffs.wsgi'而不用' heroku本地'? – georgebrock

+0

在这个错误中没有太多可以继续。可能有一些有用的其中之一:http://stackoverflow.com/questions/24488891/gunicorn-errors-haltserver-haltserver-worker-failed-to-boot-3-django或http://stackoverflow.com/问题/ 24639907/gunicorn - 错误 - haltserver-haltserver-工人未能开机的-3 – georgebrock