尝试使用 lighttpd 部署我的 flask web 应用程序

尝试使用 lighttpd 部署我的 flask web 应用程序

我正在尝试使用 lighttpd 部署我的 flask web 应用程序。我创建了这个hello.fcgi文件

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

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

python 文件是hello.py

我在末尾添加了这几行/etc/lighttpd/lighttpd.conf。我希望它可以从 访问http://localhost:7777

$SERVER["socket"] == ":7777" {
    fastcgi.server = ("/hello.fcgi" =>
        ((
            "socket" => "/tmp/hello-fcgi.sock",
            "bin-path" => "/var/www/html/py/hello.fcgi",
            "check-local" => "disable",
            "max-procs" => 1
        ))
    )

    alias.url = (
        "/static/" => "/var/www/html/py/static"
    )

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

我还启用了 FastCGI、别名和重写模块。我的 Web 应用程序的所有文件都位于/var/www/html/py/文件夹中,包括 hello.py、hello.fcgi 和“static”文件夹。

然后我重新启动了 lighttpd 并尝试访问,http://localhost:7777但我的浏览器显示“无法访问该站点”。

这里出了什么问题?我该如何修复?

答案1

知道这已经晚了,但是在搜索另一个问题时遇到了这个问题,并认为我会在这里发布修复程序,该修复程序记录在 Lighttpd 的 Python Flask 文档中。

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


class ScriptNameStripper(object):
    def __init__(self, app):
        self.app = app

    def __call__(self, environ, start_response):
        environ['SCRIPT_NAME'] = ''
        return self.app(environ, start_response)


app = ScriptNameStripper(app)

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

相关内容