2011-02-24 66 views
1

好的,所以我遇到了問題,試圖用FastCGI在lighttpd上運行Django。我按照說明here,但仍然無法使其工作,並不確定問題是什麼。Django,lighttpd,FastCGI - 無法使其工作

當與runserver一起運行時,django項目可以正常工作。

於是,我開始Django的:

python manage.py runfcgi socket=/var/run/django/django.sock pidfile=/var/run/django/django-fcgi.pid 

的lighttpd的FastCGI配置如下:

server.document-root  = "/srv/www/lighttpd/" 

fastcgi.server = (
"/django" => (
     (
      "socket" => "/var/run/django/django.sock", 
      "check-local" => "enable", 
     ) 
    ), 
) 

alias.url = (
    "/static" => "/srv/www/lighttpd/static", 
) 

url.rewrite-once = (
    "^(/static.*)$" => "$1", 
    "^(/.*)$" => "/django$1", 
) 

有了這個配置(或者,如果我取代 「/ Django的」 有,比如說」。 fcgi「或」/django.fcgi「在fastcgi.serverurl.rewrite-once)I 總是當試圖訪問/(文件/static工作正常)時得到404。在error.log,它看起來像服務器沒有嘗試過的FastCGI:

2011-02-24 16:18:00: (response.c.300) -- splitting Request-URI 
2011-02-24 16:18:00: (response.c.301) Request-URI :/
2011-02-24 16:18:00: (response.c.302) URI-scheme : http 
2011-02-24 16:18:00: (response.c.303) URI-authority: XXX.amazonaws.com 
2011-02-24 16:18:00: (response.c.304) URI-path  :/
2011-02-24 16:18:00: (response.c.305) URI-query : 
2011-02-24 16:18:00: (response.c.300) -- splitting Request-URI 
2011-02-24 16:18:00: (response.c.301) Request-URI : /d.fcgi/ 
2011-02-24 16:18:00: (response.c.302) URI-scheme : http 
2011-02-24 16:18:00: (response.c.303) URI-authority: XXX.amazonaws.com 
2011-02-24 16:18:00: (response.c.304) URI-path  : /d.fcgi/ 
2011-02-24 16:18:00: (response.c.305) URI-query : 
2011-02-24 16:18:00: (response.c.349) -- sanatising URI 
2011-02-24 16:18:00: (response.c.350) URI-path  : /d.fcgi/ 
2011-02-24 16:18:00: (mod_access.c.135) -- mod_access_uri_handler called 
2011-02-24 16:18:00: (response.c.470) -- before doc_root 
2011-02-24 16:18:00: (response.c.471) Doc-Root  : /srv/www/lighttpd/ 
2011-02-24 16:18:00: (response.c.472) Rel-Path  : /d.fcgi/ 
2011-02-24 16:18:00: (response.c.473) Path   : 
2011-02-24 16:18:00: (response.c.521) -- after doc_root 
2011-02-24 16:18:00: (response.c.522) Doc-Root  : /srv/www/lighttpd/ 
2011-02-24 16:18:00: (response.c.523) Rel-Path  : /d.fcgi/ 
2011-02-24 16:18:00: (response.c.524) Path   : /srv/www/lighttpd/d.fcgi/ 
2011-02-24 16:18:00: (response.c.541) -- logical -> physical 
2011-02-24 16:18:00: (response.c.542) Doc-Root  : /srv/www/lighttpd/ 
2011-02-24 16:18:00: (response.c.543) Rel-Path  : /d.fcgi/ 
2011-02-24 16:18:00: (response.c.544) Path   : /srv/www/lighttpd/d.fcgi/ 
2011-02-24 16:18:00: (response.c.561) -- handling physical path 
2011-02-24 16:18:00: (response.c.562) Path   : /srv/www/lighttpd/d.fcgi/ 
2011-02-24 16:18:00: (response.c.618) -- file not found 
2011-02-24 16:18:00: (response.c.619) Path   : /srv/www/lighttpd/d.fcgi/ 

如果我設置FastCGI的條目爲「/」,並忽略url.rewrite-once部分,Django的過程確實被調用,但它看起來像傳遞的URI總是「/」,因此請求「/ static」中的內容返回根視圖的HTML。

這是在運行Fedora Core 8的Amazon EC2上。我甚至從源代碼安裝了最新的lighttpd版本,而不是發行版中的舊版本。

+0

呃。好。問題是「本地檢查」需要「禁用」。舊版本的lighttpd我試圖不斷拒絕「check-local」配置,並且永遠不會工作。請原諒噪音。 – 2011-02-24 21:48:02

+0

我很高興你得到它的工作!你應該回答你自己的問題,並接受答案(當它讓你:P),以便其他人遇到這個問題可以很容易地看到解決方案。 – 2011-02-25 00:13:28

回答

1

正如上面的評論,「檢查本地」需要設置爲「禁用」。