【问题标题】:"no python application found" uWSGI + nginx + Ubuntu 13“未找到 python 应用程序”uWSGI + nginx + Ubuntu 13
【发布时间】:2026-02-19 13:50:02
【问题描述】:

我知道这是一个常见的问题,但我已经看到很多关于 frankenstein ini 文件的示例,这些示例毫无意义。基于具有不同文件系统布局的不同系统:

例如/etc/uwsgi/vassals -vs- /etc/uwsgi/apps-{enabled|available} -vs- 单独启动 uwsgi

所以,在 14 小时的脑损伤后,请看在我的理智上:

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

/srv/py/mylovelyapp/mylovelyapp.py
                   /models.py
                   /database.py
                   /static/
                   /templates/

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

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

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

我在跟踪 /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)

访问 URL 时会给出消息:

Internal Server Error

我知道我缺少一些简单的参考,但我正在尝试各种正确和错误以及谷歌搜索,但遇到的示例都不太适合我使用。如此简单的应用程序和设置!

请,请帮忙。 :(

P.S. 如果您能告诉我如何让它使用该烧瓶应用程序的虚拟机,那么您将获得额外的爱和永恒的感激。

P.P.S 我听说 Gunicorn 更容易 - 也许我应该改用那个?

【问题讨论】:

    标签: python nginx flask uwsgi


    【解决方案1】:

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

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

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

    【讨论】:

    • 这是我帖子中的格式错误。 nginx 文件位于单独的位置。我以前有过这个工作,所以我知道我可以设置它。它只是我的服务器最近死了,我不得不重新记住如何让 uWSGI 再次运行我的 Flask 应用程序。
    • 好的,建议没有改变,按照 uWSGI 快速入门,我很难相信你的第一次部署尝试需要这么大的 .ini 文件,并启用虚拟主机(非常不常见)和地址空间限制.您收到该错误是因为 uWSGI 尚未加载您的应用程序。
    • 我听从了你的建议并尝试了示例命令“uwsgi --socket 127.0.0.1:3031 --wsgi-file myappfile.py --callable app --processes 4 --threads 2”但得到错误:“uwsgi: unrecognized option '--wsgi-file'” 所以你给出的 RTFM 建议不起作用!
    • 从头到尾跟随快速入门,它会多次警告您在学习时不要使用发行版包。 (事实上​​你得到的错误是因为你使用的发行包需要显式加载 python 插件)。 “pip install uwsgi”既便宜又快速
    • 你说得对。我不耐烦了。我不仅让它工作了,而且我现在更了解 uwsgi 和管理它的过程。感谢您在我顽固的无知面前保持耐心。 :)