在轻量级Web服务器lighttpd和树莓派上部署Flask应用程序

7
我将尝试使用lighttpd fastCGI将一个简单的Flask应用程序部署到树莓派上。我按照这个链接中的说明进行了操作:http://flask.pocoo.org/docs/0.10/deploying/fastcgi/
下面是我的Flask应用程序(/var/www/demoapp/hello.py)。
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World From Flask Yeh!"

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000)

这是我的.fcgi文件 (/var/www/demoapp/hello.fcgi)

#!/usr/bin/python
from flup.server.fcgi import WSGIServer
from yourapplication import app

if __name__ == '__main__':
    WSGIServer(app).run()

这是我添加到/etc/lighttpd/lighttpd.conf文件中的内容:

fastcgi.server = ("/hello.fcgi" =>
    ((
        "socket" => "/tmp/hello-fcgi.sock",
        "bin-path" => "/var/www/demoapp/hello.fcgi",
        "check-local" => "disable",
        "max-procs" => 1
    ))
)

alias.url = (
    "/static/" => "/var/www/demoapp/static/",
)

我收到了一个404未找到错误

顺便问一下,/tmp/hello-fcgi.sock是什么?我应该去哪里找这个文件?

请帮忙。我正在尝试在我的树莓派Web服务器上部署Flask,希望能找到一个简单的方法。我已经尝试过几种方法。FastCGI似乎是最简单的。如果有更简单的方法,请告诉我。

谢谢

Vincent


1
我也遇到了同样的问题...你找到解决方法了吗? - Speccy
1
FastCGI已经过时了,可以选择WSGI。Gunicorn是你的好朋友。Apache适用于一些项目。 - CESCO
3个回答

3
我认为问题在于您的hello.fcgi文件中导入了一个名为yourapplication的模块,然而,您创建的flask应用程序的名称是hello
请尝试更改此行: from yourapplication import appfrom hello import app 编辑:还要仔细检查测试时的url,因为您的@app.route设置为根目录,所以您的url必须包含尾部斜杠,例如:

http://xxx.xxx.x.xx/hello.fcgi/

并非

http://xxx.xxx.x.xx/hello.fcgi


1
首先,像c_tothe_k说的那样,在你的hello.fcgi文件中将yourapplication更改为hello
我发现Flask文档中的说明不够详细。它建议阅读这个页面,我也建议您这样做:http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModFastCGI#Troubleshooting 页面底部有一个示例lighttpd.conf
我遵循了Flask文档和上述页面说明的混合方法。我将.fcgi文件重命名为.py,如Lightty文档所示。
如果您采用这种方法,就不必担心.sock文件。这是lighttpd以前与FastCGI进程通信的旧方式,使用UNIX套接字。它只需要在这里,以使配置解析器不会出错。
我在我的lighttpd.conf中使用了以下内容。否则,您的其他文件看起来都很好。(请注意,这将使您的应用程序位于/hello下,而不是/下。)
fastcgi.server = (
    "/hello" =>
    (
        "python-fcgi" =>
        (
         "socket" => "/tmp/fastcgi.python.socket",
         "bin-path" => "/var/www/demoapp/hello.py",
         "check-local" => "disable",
         "max-procs" => 1,
        )
    )
)

0

对我有效的方法是将配置部分放入/etc/lighttpd/conf-enabled/10-fastcgi.conf而不是/etc/lighttpd/lighttpd.conf

我猜测在运行sudo lighttpd-enable-mod fastcgi之后,该文件会出现在那里。

我还运行了pip3 install flup-py3以确保有python3支持。


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