Lighttpd
lighttpd + FCGI 設置
我決定將我的項目伺服器後端從 Apache+WSGI 更改為 lighttpd+FCGI。現在,一切正常,除了 DOCUMENT_URI 有一個煩人的問題,它接收我的 django 伺服器(以 ./manage.py runfcgi … 開始)。它總是包含 /index.fcgi 前綴!
讓我們看看我的 lighttpd conf:
fastcgi.server = ( ".fcgi" => ( "localhost" => ( "host" => "127.0.0.1", "port" => 3033, "check-local" => "disable", ) ), ) url.rewrite-once = ( "^(/.*)$" => "/index.fcgi$1", )
根據重寫規則,http ://www.mysite.com/procucts/ 請求將被 mod_rewrite 更改為 ….mysite.com/index.fcgi/procucts/,因此 DOCUMENT_URI 將是:index.fcgi/procucts/ .
但是,當我以前在 Apache 上使用 WSGI 時,我的 DOCUMENT_URI 不包含處理程序腳本名稱。
我的 Apache WSGI 設置:
WSGIScriptAlias / /path/to/my/site/index.wsgi
請給我一個建議!
看看http://docs.djangoproject.com/en/dev/howto/deployment/fastcgi/
我跟著它讓我的 Lighttpd + FastCGI 設置工作(我在下麵包含了我的配置的淨化版本以供參考)。您還需要在 settings.py 中設置 FORCE_SCRIPT_NAME=""。
server.modules += ( "mod_fastcgi" ) server.modules += ( "mod_alias" ) $HTTP["host"] =~ "(www\.)?domain\.com" { fastcgi.server = ( "/django.fcgi" => ( "main" => ( "host" => "127.0.0.1", "port" => 3000, "check-local" => "disable", ) ), ) alias.url = ( "/admin-media" => "/path/to/django/contrib/admin/media/", ) url.rewrite-once = ( "^(/admin-media.*)$" => "$1", "^(/.*)$" => "/django.fcgi$1", ) }