Назад | Перейти на главную страницу

настройки lighttpd + FCGI

Я решил изменить свой серверный сервер проектов с 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",
    )
}