2

我已经使用其内置服务器运行和开发了我的 Flask 应用程序,没有发生任何意外。它运行良好,并且非常流畅和有趣。不幸的是,Lighttpd 一如既往地难以部署。我尽可能地按照说明进行操作,但不幸的是,我的应用程序仍然无法正常工作。

到目前为止,这是我的配置:

server.modules   += ( "mod_fastcgi" )
server.modules   += ( "mod_rewrite" )

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

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

# in: /etc/lighttpd/conf-available/10-fastcgi.conf

这样做的原因是它显示主页,但不显示任何后续页面。

我的 Flask 应用程序中有几个 app.route 处理程序,我使用客户端中的一些 XHR 使用 GET 或 POST 访问它们。

另外,这是我的 .fcgi 文件,只是为了确保我在这里没有任何明显的错误:

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

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

如果有人能找出问题所在,即 AJAX 不适用于应用程序的 URI(很可能是因为我的重写规则不可靠),我将不胜感激。提前谢谢各位!

4

3 回答 3

0

您需要手动 chdir 到您的应用程序运行所在的目录。

于 2011-05-16T23:38:34.713 回答
0

我知道这个响应来自未来,但我遇到了类似的问题,发现对我来说解决方法是确保我url_for在我的模板中使用。希望你明白了!

于 2015-12-02T07:44:24.893 回答
0

我有同样的问题。对我来说,解决方案是将其添加到 fcgi 文件中,就在 main 函数之前:

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)

确保在测试时清除浏览器缓存。

于 2016-07-29T15:22:40.833 回答