我使用内置服务器运行并开发了我的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(很可能是因为我的重写规则很糟糕),我真的很感激。提前谢谢,伙计们!
答案 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)
确保在测试时清除浏览器缓存。