在Cherokee和uWSGI上部署Flask
我正在尝试部署一个我用cherokee和uwsgi开发的flask网页应用。我已经安装并让cherokee和uwsgi运行起来了(我觉得uwsgi是正常工作的),但是当我在cherokee中配置这个应用时,出现了一个错误,提示说 uWSGI Error wsgi application not found
。我使用了一个xml配置文件(我想在cherokee中是需要这个的),文件内容如下:
<uwsgi>
<pythonpath>/srv/mobile-site/app/</pythonpath>
<app mountpoint="/">
<module>mobilecms</module>
<callable>app</callable>
</app>
</uwsgi>
我的flask应用显然放在 /srv/mobile-site/app/
文件夹里,主要的脚本是 mobilecms.py
。
这个文件有什么问题吗?权限错误会导致这个问题吗?提前谢谢大家的帮助!
2 个回答
2
在正式上线之前,最好先尝试直接用uWSGI来部署,而不使用任何网页服务器。
你可以用这个命令:uwsgi -x <xmlfile>
这样做会打印出很多信息和错误提示。
2
Roberto的建议很好,这可以帮助我们找出错误发生的地方(也就是说,是uWSGI的问题还是Cherokee的问题)。
我最近也在努力让uWSGI和Cherokee一起工作。最后我手动在Cherokee中配置了uWSGI的源:
- 在Cherokee管理界面,找到“Sources”标签,添加一个新的源,起个名字叫“uWSGI Source”,并设置socket为“/tmp/foo.sock”。
- 把类型改成“Local Interpreter”(本地解释器)
- 在解释器字段中输入:
/usr/local/bin/uwsgi -x /path/to/uwsgiconfig.xml
- 在虚拟服务器的规则管理中,点击添加一个新的行为规则。
- 选择手动配置,类型为“Directory”(目录),路径设置为“/”
- 把处理程序设置为“uWSGI”
- 滚动到最底部,把负载均衡器设置为“Round Robin”(轮询)
- 添加“uWSGI Source”的信息源
- 保存更改并重启Cherokee
在我的uWSGI配置文件中,我有类似这样的内容(根据你的例子调整过):
<uwsgi>
<chdir>/srv/mobile-site/app/</chdir>
<wsgi-file>/srv/mobile-site/app/mobilecms.py</wsgi-file>
<callable>app</callable>
<socket>/tmp/foo.sock</socket>
<chmod-socket>666</chmod-socket>
<master />
<processes>1</processes>
<disable-logging /><!-- Errors are still logged; this just disables request logging which Cherokee takes care of -->
<vacuum />
<no-orphans />
</uwsgi>
注意,Cherokee的uWSGI向导不接受这个作为有效的配置文件(所以需要手动配置)。