我的问题:
当使用gunicorn作为我的WSGI HTTP服务器时,工头无法找到Django(wsgi?)应用程序。
应用程序结构:
在我的Django应用程序中,我的代码结构如下:
<git_repository_root>/
<django_project_root>/
<configuration_root>/
<git_repository_root>
包含与项目管理和部署相关的内容(requirements.txt
,Procfile
,fabfile.py
等)<django_project_root>
包含我的Django应用程序和应用程序逻辑。最后,
<configuration_root>
包含我的settings.py
和wsgi.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.
我相信我无论如何都想在自己的
Procfile
中添加<git_repository_root>
-为什么它不起作用?我还尝试将Procfile
更改为:web: gunicorn myapp/myapp.wsgi
但没有运气。任何帮助将非常感激!
最佳答案
将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
关于django - 部署到Heroku时指定项目根目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18076444/