运行`foreman start` /将Django应用程序部署到Heroku的问题
这就是我的目录结构(我只包括相关部分):
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 在official Heroku docs之后,这是我在Procfile中的内容: web: gunicorn my_django_project.wsgi 但是当我运行foreman start,command时,我得到一个以ImportError结尾的长回溯:没有名为my_django_project.wsgi的模块. 将Procfile从git_root /移动到my_django_project /(Django项目根目录)似乎工作(就像在this post中所做的那样),但只在本地 – 尝试部署到Heroku似乎没问题,直到您尝试扩展Web进程: $heroku ps:scale web=1 Scaling web dynos... failed ! No such process type web defined in Procfile. 它看起来好像是Heroku wants you to put the Procfile in the project’s git repository root,但我在Procfile中尝试了很多组合,但似乎都没有.我也尝试过: web: gunicorn my_django_project/my_django_project.wsgi 在Procfile中但导致ImportError:不支持按文件名导入. 指定python路径也不起作用;即 web: gunicorn my_django_project.wsgi:application --pythonpath=/app/my_django_project 抛出错误ImportError:没有名为my_django_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_root / my_django_project /. 这就是我在Procfile中的含义: 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |