Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行“foreman start”/将Django应用程序部署到Heroku时出现问题_Django_Heroku_Directory Structure_Foreman_Procfile - Fatal编程技术网

运行“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文件在根文件夹中,我将如何调整文件中的行?