这是我的目录结构的样子(我只包含了相关部分):
my_git_root/
├── Procfile
├── README.md
├── requirements.txt
└── my_django_project
├── app1
│ ├── admin.py
│ ├── __init__.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── fabfile.py
├── app2
│ ├── __init__.py
│ ├── models.py
│ ├── templates
│ ├── tests.py
│ └── views.py
├── manage.py
└── my_django_project
├── __init__.py
├── settings
│ ├── base.py
│ ├── __init__.py
│ ├── local.py
│ ├── production.py
│ └── staging.py
├── static
├── urls.py
└── wsgi.py
遵循官方 Heroku 文档,这就是我的Procfile
:
web: gunicorn my_django_project.wsgi
但是当我运行foreman start
, 命令时,我得到一个以ImportError: No module named my_django_project.wsgi.
.
Procfile
从git_root/
到(Django 项目根目录)移动似乎有效(就像在这篇文章my_django_project/
中所做的那样),但仅限于本地——尝试部署到 Heroku 似乎没问题,直到您尝试扩展 Web 进程:
$ heroku ps:scale web=1
Scaling web dynos... failed
! No such process type web defined in Procfile.
Heroku似乎希望您将 Procfile 放入项目的 git 存储库 root中,但我尝试了很多组合,Procfile
但似乎没有一个有效。我也试过:
web: gunicorn my_django_project/my_django_project.wsgi
Procfile
但这会导致ImportError: Import by filename is not supported.
指定 python 路径也不起作用;IE
web: gunicorn my_django_project.wsgi:application --pythonpath=/app/my_django_project
抛出错误ImportError: No module named my_django_project.wsgi
。
但是,使用 gunicorn from 在本地运行git_root/my_django_project/
似乎可行:
$ gunicorn -b 0.0.0.0:8000 my_django_project.wsgi:application
2013-10-15 16:55:31 [5703] [INFO] Starting gunicorn 18.0
2013-10-15 16:55:31 [5703] [INFO] Listening at: http://0.0.0.0:8000 (5703)
2013-10-15 16:55:31 [5703] [INFO] Using worker: sync
2013-10-15 16:55:31 [5708] [INFO] Booting worker with pid: 5708
2013-10-15 16:56:04 [5703] [INFO] Handling signal: winch
2013-10-15 16:56:04 [5703] [INFO] SIGWINCH ignored. Not daemonized
所以我的猜测是我的语法Procfile
不正确,但我不确定如何。