我试图在Raspberry Pi上用lighttpd和fastcgi部署我的flask应用。不幸的是,我不能让它工作。下面是我的过程。
sudo apt install lighttpd
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。
你能发现我的程序有什么问题吗?我是不是错过了什么?
谢谢你的帮助
在重写之后,lighttpd会在内部重新处理请求,所以重写删除 "static "前缀时,不会匹配 "static "前缀的别名,因为 "static "前缀在重写之后已经不存在了。
if $HTTP["url] !~ "^/static($|/)" {
url.rewrite-once = (
"^/hello.fcgi" => "",
"^(/.*)$" => "/hello.fcgi$1"
)
}