2011-05-16 88 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) 

確保當你測試,以清除瀏覽器緩存。