Deploying flask on cherokee and uwsgi [closed]

匿名 (未验证) 提交于 2019-12-03 02:53:02

问题:

I'm attempting to deploy a flask web app I've developed using cherokee and uwsgi. I got cherokee and uwsgi installed and working (i think uwsgi works), but when I configure the app in cherokee, i just get an error saying uWSGI Error wsgi application not found. I used an xml config file (I think you need to with cherokee), and that contains this:

<uwsgi>     <pythonpath>/srv/mobile-site/app/</pythonpath>     <app mountpoint="/">         <module>mobilecms</module>         <callable>app</callable>     </app> </uwsgi> 

My flask app is obviouly in the /srv/mobile-site/app/ folder with the main script being mobilecms.py.

Is there something wrong with this file? Would permission errors cause this? Thanks in advance for any help!

回答1:

Roberto's suggestion is a good one; it will help diagnose where the error is occurring (i.e. whether it's uWSGI or Cherokee).

I've also recently fought to get uWSGI and Cherokee to work together. I ended up configuring the uWSGI source in Cherokee manually:

  • In Cherokee Admin, under the "Sources" tab, add a new source with nickname "uWSGI Source" and socket "/tmp/foo.sock"
    • Change the type to "Local Interpreter"
    • In the interpreter field, enter: /usr/local/bin/uwsgi -x /path/to/uwsgiconfig.xml
  • In rule management for the virtual server, click to add a new behaviour rule.
    • Choose a manual configuration of type "Directory" with a path of "/"
    • Set the handler to "uWSGI"
    • Scroll to the bottom and set "Round Robin" for the balancer
    • Add the "uWSGI Source" information source
  • Save changes and restart Cherokee

In my uWSGI config file I have something like this (adapted to your example):

<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> 

Note that the Cherokee uWSGI wizard doesn't accept this as a valid configuration file (hence the manual configuration).



回答2:

Always try uWSGI deploy without a webserver, before going in production.

uwsgi -x <xmlfile>

It will print a lot of information/errors



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!