【问题标题】:Flask app deployment with lighttpd results in error使用 lighttpd 部署 Flask 应用程序会导致错误
【发布时间】:2020-08-28 20:55:39
【问题描述】:

我正在尝试在 Raspberry Pi 上使用 lighttpd 和 fastcgi 部署我的烧瓶应用程序。不幸的是,我无法让它工作。这是我的程序:

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

创建 /var/www/demoapp/hello.py

from flask import Flask
app = Flask(__name__)

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

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

创建 /var/www/demoapp/hello.fcgi

#!/usr/bin/python
from flup.server.fcgi import WSGIServer
from hello 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"
)

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

要重新加载配置,使用sudo /etc/init.d/lighttpd restart 重新启动网络服务器

然后我希望我可以访问raspberrypi.local/static 下的应用程序,我只是通过 Chrome 获得了一个ERR_EMPTY_RESPONSE

您能发现我的程序中有什么问题吗?我错过了什么吗?

感谢您的帮助!

【问题讨论】:

    标签: python flask webserver wsgi lighttpd


    【解决方案1】:

    重写后,lighttpd 在内部重新处理请求,因此删除“/static”前缀的重写将不匹配“/static”前缀的别名,因为“/static”前缀在重写后不再存在。

    if $HTTP["url] !~ "^/static($|/)" {
        url.rewrite-once = (
           "^/hello.fcgi" => "",
           "^(/.*)$" => "/hello.fcgi$1"
        )
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      相关资源
      最近更新 更多