重写使用Flask Python框架配置Lighttpd的问题

时间:2011-05-16 22:18:51

标签: python configuration rewrite lighttpd flask

我使用内置服务器运行并开发了我的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处理程序,我使用GET或POST在客户端使用一些XHR访问。

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

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

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

如果有人能够识别问题,那么,AJAX不能使用应用程序的URI(很可能是因为我的重写规则很糟糕),我真的很感激。提前谢谢,伙计们!

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我知道这个回复来自显着的未来,但我遇到了类似的问题,并发现我的修复方法是确保我在模板中使用url_for。 希望你明白这一点!

答案 2 :(得分:0)

我遇到了同样的问题。对我来说,解决方案是在fcgi文件中添加它, 就在主要功能之前:

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)

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