Я решил изменить свой серверный сервер проектов с Apache + WSGI на lighttpd + FCGI. Теперь все работает нормально, кроме одной неприятной проблемы с DOCUMENT_URI, который получает мой сервер django (запущенный как ./manage.py runfcgi…). Он всегда содержит префикс /index.fcgi!
Давайте посмотрим на мою конфигурацию lighttpd:
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 /.
Но когда я работал с WSGI на Apache, мой DOCUMENT_URI не содержал имени сценария обработчика.
Мои настройки Apache WSGI:
WSGIScriptAlias / /path/to/my/site/index.wsgi
Пожалуйста, дайте мне совет!
Посмотри на http://docs.djangoproject.com/en/dev/howto/deployment/fastcgi/
Я следил за этим, чтобы заставить мою установку Lighttpd + FastCGI работать (я включил дезинфицированную версию моей конфигурации ниже для справки). Вы также захотите установить FORCE_SCRIPT_NAME = "" в вашем settings.py.
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",
)
}