Django dans Lighttpd + FCGI sur Ubuntu - les réécritures cessent de fonctionner lorsque j'active un deuxième site
Question
J'ai configuré lighttp pour démarrer et servir django via fastcgi sur Ubuntu. Lorsque je n'ai qu'un seul site activé (via le mécanisme d'apache similaire à apache d'ubuntu), tout fonctionne à merveille. Lorsque j'active un deuxième site, mes réécritures d'url semblent cesser de fonctionner correctement, bien que les processus fcgi soient démarrés et servent des données. Voici ma configuration:
conf-available / 10-example.conf
$HTTP["host"] == "example.com" {
var.virt_name = "example"
include "includes/incl-fastcgi.conf"
}
inclut / 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.*)Page not found (404)
Request Method: GET
Request URL: http://example.com/django.fcgi/[the url I requested]
quot; => "$1",
"^/favicon\.ico<*>quot; => "/media/favicon.ico",
"^/robots\.txt<*>quot; => "/robots.txt",
"^(/.*)<*>quot; => "/django.fcgi$1",
)
Lorsque j'active le deuxième site, tout est identique sauf qu'il existe maintenant un deuxième lien vers une copie (légèrement modifiée) de 10-example.conf
dans conf-enabled. Lorsque cela se produit, mes sites échouent avec cette erreur django-desservie:
Je ne sais pas pourquoi l'activation d'un autre site devrait rompre la configuration existante. Je pense que la syntaxe basée sur l'hôte devrait isoler toute modification apportée à cet hôte spécifique, mais cela ne semble pas être le cas.
La solution
Au cas où quiconque se pencherait sur cette question à l'avenir, je pense que la réponse a été qu'il est corrigé dans la version 1.4.20 ou ultérieure et que le serveur exécutait la version 1.4.19, car c'est ce que le référentiel Ubuntu possédait.
Autres conseils
Avez-vous défini FORCE_SCRIPT_NAME à " ; " dans settings.py?
FORCE_SCRIPT_NAME=""