Flask + Nginx + uWSGI - Python应用程序未找到

5

cat /etc/nginx/sites-available/mywebsite

server {
     listen              80;

    server_name         mywebsite;

    location /static {
        alias           /var/www/mywebsite/static;
    }

    location / {
        include         uwsgi_params;
        uwsgi_pass      unix:/tmp/website.sock;
        uwsgi_param         UWSGI_PYHOME    /var/www/mywebsite/env;
        uwsgi_param         UWSGI_CHDIR     /var/www/mywebsite;
        uwsgi_param         UWSGI_MODULE    mywebsite;
        uwsgi_param         UWSGI_CALLABLE  mywebsite;
    }

    error_page          404     /404.html;

}

cat /etc/uwsgi/apps-available/website.ini

[uwsgi]
plugins=python
vhost=true
socket=/tmp/website.sock

cat /var/www/mywebsite/mywebsite.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "It works!"

if __name__ == "__main__":
    app.run()

我正在运行nginx,然后是uwsgi,在浏览器中出现了uWSGI错误“Python应用程序未找到”。

2个回答

2

我遇到了同样的错误,配置相同,问题在于uwsgi服务没有启动。重新启动nginx和uwsgi即可解决问题。


1

UWSGI_CALLABLE必须是'app'(即要在请求上调用的函数名称)


我按照你的建议对nginx配置进行了更正,但问题仍然存在。这是我的uwsgi日志文件链接,也许问题出在--enable-threads上? - Rigelweb
我在您提供的文件中没有看到请求记录,当您向nginx发出请求时,您应该在uWSGI日志中看到一些内容。如果您没有看到任何内容,请检查nginx日志,可能它无法连接到uWSGI。 - roberto
我重新启动了uwsgi,现在uwsgi日志文件中出现了几个错误。它们都是相同的:)“ImportError: No module named flask”。这非常奇怪,因为我已经在我的虚拟环境中安装了Flask。 - Rigelweb
1
虚拟环境是否位于 /var/www/mywebsite/env,并且是否与 uWSGI 使用的相同的 Python 版本(在启动时打印)? - roberto
看起来这是所有问题的根源。 我已经安装了2.7版本,但当我调用Python解释器时,我得到的是2.6版本。Virtualenv位于/var/www/mywebsite/env。 - Rigelweb
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接