2015-09-28 86 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