2011-05-16 84 views
2

我已经运行并使用其内置服务器开发了我的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(很可能是因为我的重写规则很不可靠),我真的很感激它。在此先感谢,伙计们!

+0

您是否使用此配置获得ajax? – 2011-12-31 10:18:31

+0

如果我没有记错,这是一个非常挑剔的设置。它不会100%的时间工作。希望Flask 0.8现在可以解决这个问题,但是我现在不能重新访问这个项目。祝你好运! – 2012-01-03 14:59:14

回答

0

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

0

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

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) 

确保当你测试,以清除浏览器缓存。