我的问题:

当使用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.

我相信我无论如何都想在自己的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/

10-12 19:13