重写使用Flask Python框架配置Lighttpd的问题
问题描述:
我已经运行并使用其内置服务器开发了我的Flask应用程序,而不会发生事故。它运行良好,一直非常流畅和有趣。不幸的是,Lighttpd与往常一样,很难部署。我尽可能按照说明进行操作,但不幸的是,我的应用程序仍然无法正常工作。重写使用Flask Python框架配置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(很可能是因为我的重写规则很不可靠),我真的很感激它。在此先感谢,伙计们!
答
您需要chdir手动运行您的应用程序的目录。
答
我知道这个回应来自未来的显着,但我遇到了类似的问题,发现我的修复是为了确保我在我的模板中使用url_for
。 希望你明白!
答
我有同样的问题。对我来说,解决办法是 ,就在主函数之前添加此在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)
确保当你测试,以清除浏览器缓存。
您是否使用此配置获得ajax? – 2011-12-31 10:18:31
如果我没有记错,这是一个非常挑剔的设置。它不会100%的时间工作。希望Flask 0.8现在可以解决这个问题,但是我现在不能重新访问这个项目。祝你好运! – 2012-01-03 14:59:14