2013-08-06 269 views
4

時指定項目的根我的問題:部署到Heroku的

當使用gunicorn我的WSGI HTTP服務器,工頭未能找到Django的(WSGI?)應用程序。

應用程序結構:

在我的Django應用程序,我有事情的結構是這樣的:

<git_repository_root>/ 
    <django_project_root>/ 
    <configuration_root>/ 

<git_repository_root>包含項目管理和部署有關的東西(requirements.txtProcfilefabfile.py等)

<django_project_root>包含我的Django應用程序和應用程序邏輯。

最後,<configuration_root>包含我的settings.pywsgi.py

我曾嘗試:

Procfile應該是這樣的(根據Heroku Docs):

web: gunicorn myapp.wsgi

當這個項目的佈局運行foreman start,我得到一個錯誤:

ImportError: Import by filename is not supported. 

什麼作品:

如果我移動我的Procfile從<git_repository_root><git_repository_root>它在本地工作。推後Heroku(注:Heroku見<git_repository_root>)我不能縮放任何工人/添加進程。我得到如下:

Scaling web dynos... failed 
! No such process type web defined in Procfile. 

我相信,我想在我的<git_repository_root>反正雖然Procfile - 那麼,爲什麼不工作?我也嘗試將Procfile更改爲: web: gunicorn myapp/myapp.wsgi

但沒有運氣。任何幫助將非常感激!

+0

好措辭/記錄的問題,順便說一句。 –

回答

1

將您Procfile回到<git_repository_root>和使用:

web: gunicorn <django_project_root>.myapp:myapp 

替換最後「的myapp」與您的應用程序的類名,想必這的確是「MYAPP」。

...並閱讀錯誤消息:它告訴你,你不能通過文件名(myapp.wsgi)導入你的工人類(app),所以當然說dirname/myapp.wsgi不會工作。您需要Python module:class語法。

0

將您的Procfile中的條目視爲bash命令。您可以將cd放入您的<django_project_root>,然後運行服務器。

例如,您Procfile(這應該是在你<git_repository_root>)可能是這個樣子:

web: cd <django_project_root> && gunicorn 
    --env DJANGO_SETTINGS_MODULE=<configuration_root>.settings 
    <configuration_root>.wsgi