Django в Lighttpd + FCGI на Ubuntu - перезаписи перестают работать при включении второго сайта - PullRequest
2 голосов
/ 18 июня 2009

У меня настроен lighttp для запуска и обслуживания django через fastcgi на Ubuntu. Когда у меня включен только один сайт (через apache-подобный механизм conf-available, conf-enabled в ubuntu), все работает прекрасно. Когда я включаю второй сайт, мои перезаписи URL, кажется, перестают работать правильно, хотя процессы fcgi запускаются и обслуживают данные. Вот моя конфигурация:

conf-available/10-example.conf

$HTTP["host"] == "example.com" {
    var.virt_name = "example"
    include "includes/incl-fastcgi.conf"
}

includes/incl-fastcgi.conf

global {
    server.modules += ("mod_rewrite",
                   "mod_fastcgi")
}

var.site_folder = "/" + virt_name
var.site_root = server_root + site_folder
var.socket = server_root + "/.handles/" + virt_name + ".socket"
server.document-root = site_root

fastcgi.server = (
    "/django.fcgi" => (
        "main" => (
            "socket" => socket,
            "bin-path" => "/etc/lighttpd/scripts/fcgi.sh",
            "bin-environment" => ( "VIRT" => virt_name, ),
            "check-local" => "disable",
            "min-procs" => 1,
            "max-procs" => 1,
            "allow-x-send-file" => "enable",
        ),
    ),
)

alias.url = (
    "/media/admin" => "/usr/share/python-support/python-django/django/contrib/admin/media", #why the hell does it live here?
)

url.rewrite-once = (
    "^(/media.*)$" => "$1",
    "^/favicon\.ico$" => "/media/favicon.ico",
    "^/robots\.txt$" => "/robots.txt",
    "^(/.*)$" => "/django.fcgi$1",
)

Когда я включаю второй сайт, все идентично, за исключением того, что теперь есть вторая ссылка на (слегка измененную) копию 10-example.conf в conf-enabled. Когда это происходит, мои сайты перестают работать с этой ошибкой django:

Page not found (404)
Request Method:     GET
Request URL:    http://example.com/django.fcgi/[the url I requested]

Я не уверен, почему включение другого сайта должно нарушить существующую настройку. Я считаю, что синтаксис на основе хоста должен изолировать любые изменения на этом конкретном хосте, но, похоже, это не так.

Ответы [ 2 ]

2 голосов
/ 10 июля 2009

Вы установили FORCE_SCRIPT_NAME в "" в settings.py?

FORCE_SCRIPT_NAME=""
2 голосов
/ 20 июня 2009

В случае, если кто-нибудь в будущем захочет взглянуть на этот вопрос, я думаю, что ответ был в том, что он исправлен в версии 1.4.20 или более поздней, а сервер работал под управлением v1.4.19, поскольку это было в хранилище Ubuntu.

...