Lighttpd

lighttpd + FCGI 設置

  • August 18, 2009

我決定將我的項目伺服器後端從 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",
   )
}

引用自:https://serverfault.com/questions/55330