"没有找到python应用程序"uWSGI + nginx + Ubuntu 13

Rus*_*uff 5 python nginx flask uwsgi

我知道这是一个常见的问题,但我看到很多关于frankenstein ini文件的例子没有任何意义.基于具有不同文件系统布局的不同系统:

例如/ etc/uwsgi/vassals -vs-/etc/uwsgi/apps- {enabled | available} -vs- solo launch uwsgi

因此,请在14小时脑损伤后爱我的理智:

我有一个基本的Flask项目,有这个布局:

/srv/py/mylovelyapp/mylovelyapp.py
                   /models.py
                   /database.py
                   /static/
                   /templates/
Run Code Online (Sandbox Code Playgroud)

我的ini文件的怪物(位于/etc/uwsgi/apps-enabled/mylovelyapp.ini)是:

[uwsgi]
plugins = python
base = /srv/py/mylovelyapp
app = mylovelyapp
callable = app
gid = www-data
uid = www-data
vhost = true
socket = 127.0.0.1:3031
master = true
processes = 1
harakiri = 20
limit-as = 128
Run Code Online (Sandbox Code Playgroud)

在/etc/nginx/sites-enabled/mysite.conf中的nginx配置:

server {
listen 80;
server_name www.mylovelyapp.co.uk mylovelyapp.co.uk;

charset     utf-8;
client_max_body_size 75M;

location / { try_files $uri @yourapplication; }
location @yourapplication {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:3031;
}
location /static/ {
    alias /srv/py/mylovelyapp/static/;
    expires 30d;
    access_log off;
}

access_log /var/log/nginx/mylovelyapp-a.conf;
error_log /var/log/nginx/mylovelyapp-e.conf;
}
Run Code Online (Sandbox Code Playgroud)

我在跟踪/var/log/uwsgi/mylovelyapp.log时得到的错误输出是这样的:

Mon May 26 06:41:40 2014 - *** Python threads support is disabled. You can enable it with --enable-threads ***
Mon May 26 06:41:40 2014 - Python main interpreter initialized at 0x1445e50
Mon May 26 06:41:40 2014 - your server socket listen backlog is limited to 100 connections
Mon May 26 06:41:40 2014 - your mercy for graceful operations on workers is 60 seconds
Mon May 26 06:41:40 2014 - mapped 145536 bytes (142 KB) for 1 cores
Mon May 26 06:41:40 2014 - *** Operational MODE: single process ***
Mon May 26 06:41:40 2014 - *** no app loaded. going in full dynamic mode ***
Mon May 26 06:41:40 2014 - *** uWSGI is running in multiple interpreter mode ***
Mon May 26 06:41:40 2014 - spawned uWSGI master process (pid: 2380)
Mon May 26 06:41:40 2014 - spawned uWSGI worker 1 (pid: 2388, cores: 1)
Run Code Online (Sandbox Code Playgroud)

访问URL时会显示以下消息:

Internal Server Error
Run Code Online (Sandbox Code Playgroud)

我知道我错过了一些简单的参考,但我正在尝试各种各样的trual和错误以及谷歌搜索,但是遇到的例子都不适合我的使用.一个令人愤怒的是这么简单的应用程序和设置!

请帮忙.:(

PS.如果你可以告诉我如何使用虚拟机为那个烧瓶应用程序,你可以获得额外的感激和永恒的感激之情.

PPS我听说过Gunicorn更容易 - 也许我应该转向那个?

rob*_*rto 1

您应该尝试花一些时间来理解所涉及的所有组件。例如,您将 .ini uWSGI 文件与 nginx.conf 合并,这是完全错误的。我建议您从这里开始:http://uwsgi-docs.readthedocs.org/en/latest/WSGIquickstart.html

尝试理解每一步(特别是关于使用官方来源而不是发行版包的部分)。开始不使用nginx(仅uWSGI)进行部署,只有在确定事情清楚之后,才可以在nginx后面进行代理。

关于gunicorn,是的,它更容易,因为它是用python编写的(因此你不需要ac编译器来构建它)并且它具有最少的功能集,这减少了你可以在网上找到的不同配置的数量(但实际上,避免盲目剪切和粘贴,您应该投资于了解正在发生的事情,否则您的网站将在第一个小问题时关闭很长时间)。从我从您的消息中看到/理解/想象的情况来看,在当前状态下,使用 WSGI 服务器或其他服务器对您来说没有什么区别。

  • 你是绝对正确的。我已经不耐烦了。我不仅让它工作起来,而且现在我更好地理解了 uwsgi 和管理它的过程。感谢您在面对我固执的无知时的耐心。:) (3认同)