python - "no python application found"uWSGI + nginx + Ubuntu 13

标签 python nginx flask uwsgi

我知道这是一个常见问题,但我见过太多关于弗兰肯斯坦 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.. 如果你能告诉我如何让它使用虚拟机来运行那个 flask 应用程序,我将得到额外的爱和永恒的感激。

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

最佳答案

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

尝试理解每一步(特别是关于使用官方资源而不是发行包的部分)。在没有nginx的情况下开始部署(只有uWSGI),只有在你确定事情清楚之后,你才能在nginx后面代理它。

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

关于python - "no python application found"uWSGI + nginx + Ubuntu 13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23863852/

相关文章:

sqlite - SQLite从联接表执行查询

python - 将数字写入 Excel 时应用公式

Python:函数返回

python - 在生产环境中在 Windows 上部署 Flask

php - 如何配置 nginx 将所有响应重定向到 .php 文件以在 404 上重定向?

python - wtforms 验证下拉值

python - 导入错误 : No module named 'gdbm' occuring while using source ~/. bashrc

python - 在wxpython的列上排序?

node.js - nodejs 应用程序工作,但 nginx 代理没有捕捉到它

javascript - 尽管将 JavaScript 放在静态目录中,但无法将 JavaScript 应用到 Flask 中的模板。我该如何解决下面代码中的问题?