3ch*_*eel 3 django directory-structure heroku foreman procfile
这就是我的目录结构(我只包括相关部分):
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
Run Code Online (Sandbox Code Playgroud)
遵循官方Heroku文档,这是我在我的内容Procfile:
web: gunicorn my_django_project.wsgi
Run Code Online (Sandbox Code Playgroud)
但是当我运行foreman start命令时,我会得到一个结尾的长回溯ImportError: No module named my_django_project.wsgi..
移动Procfile从git_root/到my_django_project/(Django的项目根)似乎工作(像什么在做这个职位),但只有在当地-尝试部署到Heroku的似乎是确定,直到您尝试缩放网页的过程:
$ heroku ps:scale web=1
Scaling web dynos... failed
! No such process type web defined in Procfile.
Run Code Online (Sandbox Code Playgroud)
看起来好像Heroku希望你把Procfile放在项目的git存储库根目录中,但是我已经尝试了很多组合Procfile,但似乎都没有.我也尝试过:
web: gunicorn my_django_project/my_django_project.wsgi
Run Code Online (Sandbox Code Playgroud)
在Procfile但结果是ImportError: Import by filename is not supported.
指定python路径也不起作用; 即
web: gunicorn my_django_project.wsgi:application --pythonpath=/app/my_django_project
Run Code Online (Sandbox Code Playgroud)
抛出错误ImportError: No module named my_django_project.wsgi.
然而,在当地用gunicorn运行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
Run Code Online (Sandbox Code Playgroud)
所以我的猜测是我的语法Procfile不正确,但我不确定如何.
写这个问题的同时想出来了!
我必须做的是设置--pythonpath指向我的django项目根目录的选项,即git_root/my_django_project/.
这就是我对我的看法Procfile:
web: gunicorn -b 0.0.0.0:8000 --pythonpath=./my_django_project my_django_project.wsgi:application
Run Code Online (Sandbox Code Playgroud)
现在它在本地工作:
$ 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
Run Code Online (Sandbox Code Playgroud)
现在,扩展Web流程也可以正常工作:
$ heroku ps:scale web=1 --app my-django-project
Scaling web dynos... done, now running 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2851 次 |
| 最近记录: |