如何修改Procfile在Heroku的非标准文件夹中运行Gunicorn进程?
我是新来的heroku和gunicorn,所以我不知道这是如何工作的。 但我已经做了一些search,我想我已经接近部署我的Django应用程序(1.5.1)。 所以我知道我需要一个Procfile
web: gunicorn app.wsgi
因为我的目录有点不同 我不能在根目录下运行gunicorn
app_project requirements/ contributors/ app/ app/ settings/ wsgi.py # Normally Procfile goes here Procfile
通常应用程序/将是根目录,但我决定这样构造我的文件夹来分隔我的Django应用程序从其他一些事情。 由于我必须把procfile放在heroku的根目录下才能识别,我应该在procfile中join什么和/或者我应该在gunicorn命令中join什么参数?
注意:
web: gunicorn app.wsgi # won't work because Procfile is in a directory above # I also want to keep the directories as is # I also don't want to create a secondary git inside the app folder just for heroku web: gunicorn app.app.wsgi # won't work because I don't want to convert the folder into a python module
尝试:
web: gunicorn --pythonpath app app.wsgi
正如@Graham Dumpleton在他的回答中所说,OP的问题可以通过修改他的Procfile来解决:
web: gunicorn --pythonpath app app.wsgi
为什么这个工作:
- 请记住,Herc简单地使用Procfile来启动进程。 在这种情况下,gunicorn进程。
-
--pythonpath
的--pythonpath
参数允许您dynamic地将目录附加到Python运行时search模块查找的目录列表。 - 通过向
--pythonpath app
命令添加--pythonpath app
,解释器基本上被告知“ 查看应用程序目录的内部(称为应用程序),其中包含名为wsgi的模块。 `
在OP的问题中的文件夹的通用名称可以掩盖命令的语法,如下所示: gunicorn --pythonpath <directory_containing_package> <package>.<module>
更多信息:
Gunicorn文档
我做了一个丑陋的黑客得到这个工作。 所以我会发布我的答案,但我希望你们能想出一个更好的解决scheme
Procfile
web: sh ./app/run.sh
app_project /应用程序/ run.sh
#!/bin/bash cd app gunicorn app.wsgi