运行“foreman start”/将Django应用程序部署到Heroku时出现问题
这就是我的目录结构(我只包括了相关部分): 下面是我的运行“foreman start”/将Django应用程序部署到Heroku时出现问题,django,heroku,directory-structure,foreman,procfile,Django,Heroku,Directory Structure,Foreman,Procfile,这就是我的目录结构(我只包括了相关部分): 下面是我的Procfile中的内容: web: gunicorn my_django_project.wsgi web: gunicorn -b 0.0.0.0:8000 --pythonpath=./my_django_project my_django_project.wsgi:application 但是当我运行foreman start命令时,我得到了一个很长的回溯,结果是导入错误:没有名为my_django_project.wsgi的模块
Procfile
中的内容:
web: gunicorn my_django_project.wsgi
web: gunicorn -b 0.0.0.0:8000 --pythonpath=./my_django_project my_django_project.wsgi:application
但是当我运行foreman start
命令时,我得到了一个很长的回溯,结果是导入错误:没有名为my_django_project.wsgi的模块。
将Procfile
从git\u root/
移动到my\u django\u project/
(django project root)似乎可以工作(就像在中所做的那样),但只能在本地进行——在尝试扩展web进程之前,尝试部署到Heroku似乎没有问题:
$ heroku ps:scale web=1
Scaling web dynos... failed
! No such process type web defined in Procfile.
看起来好像是这样,但我在Procfile
中尝试了很多组合,似乎都不起作用。我也试过:
web: gunicorn my_django_project/my_django_project.wsgi
在Procfile
中,但这会导致导入错误:不支持按文件名导入。
指定python路径也不起作用;i、 e
web: gunicorn my_django_project.wsgi:application --pythonpath=/app/my_django_project
抛出错误ImportError:没有名为my\u django\u project.wsgi的模块
但是,从git_root/my_django_project/使用gunicorn在本地运行似乎是可行的:
$ 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
中的语法是不正确的,但我不知道怎么做 在写这个问题的时候就想出来了
我所要做的是设置--pythonpath
选项指向我的django项目根,即git\u根/my\u django\u项目/
这是我的程序文件中的内容:
web: gunicorn my_django_project.wsgi
web: gunicorn -b 0.0.0.0:8000 --pythonpath=./my_django_project my_django_project.wsgi:application
现在它在本地工作:
$ foreman start
17:04:02 web.1 | started with pid 6327
17:04:02 web.1 | 2013-10-15 17:04:02 [6330] [INFO] Starting gunicorn 18.0
17:04:02 web.1 | 2013-10-15 17:04:02 [6330] [INFO] Listening at: http://0.0.0.0:8000 (6330)
17:04:02 web.1 | 2013-10-15 17:04:02 [6330] [INFO] Using worker: sync
17:04:02 web.1 | 2013-10-15 17:04:02 [6335] [INFO] Booting worker with pid: 6335
17:04:04 web.1 | 2013-10-15 17:04:04 [6330] [INFO] Handling signal: winch
17:04:04 web.1 | 2013-10-15 17:04:04 [6330] [INFO] SIGWINCH ignored. Not daemonized
现在,扩展web流程也可以起作用:
$ heroku ps:scale web=1 --app my-django-project
Scaling web dynos... done, now running 1
使用第一个脚手架,其中Procfile与my_django_项目处于同一级别。我这样做:
web:cd my_django_项目和gunicorn my_django_项目.wsgi
--日志文件-
希望这有帮助
--编辑--
最好用下面的行更改此文件。确保你在你的主分支上(我与heroku在另一分支上的推搡斗争)
web:gunicorn--pythonpath my_django_project my_django_project.wsgi--log文件-
如果我的wsgi文件在根文件夹中,我将如何调整文件中的行?