使用lighttpd部署Flask应用会出现错误。

问题描述 投票:0回答:1

我试图在Raspberry Pi上用lighttpd和fastcgi部署我的flask应用。不幸的是,我不能让它工作。下面是我的过程。

  • 我安装了lighttpd sudo apt install lighttpd
  • 我安装了flup与 pip install flup

创建了varwwwdemoapphello.py。

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World"

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

创建了varwwwdemoapphello.fcgi。

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

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

在etclighttpdlighttpd.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"
)

url.rewrite-once = (
   "^(/static($|/.*))$" => "$1",
   "^(/.*)$" => "/hello.fcgi$1"
)

要重新加载配置,webserver需要通过以下方法重新启动。sudo /etc/init.d/lighttpd restart

那么我希望我可以在下面访问应用程序 raspberrypi.local/static 我只是得到一个 ERR_EMPTY_RESPONSE 由Chrome。

你能发现我的程序有什么问题吗?我是不是错过了什么?

谢谢你的帮助

python flask webserver wsgi lighttpd
1个回答
0
投票

在重写之后,lighttpd会在内部重新处理请求,所以重写删除 "static "前缀时,不会匹配 "static "前缀的别名,因为 "static "前缀在重写之后已经不存在了。

if $HTTP["url] !~ "^/static($|/)" {
    url.rewrite-once = (
       "^/hello.fcgi" => "",
       "^(/.*)$" => "/hello.fcgi$1"
    )
}
© www.soinside.com 2019 - 2024. All rights reserved.