2009-06-17 13 views
2

Ich habe Lighttp konfiguriert, um Django über Fastcgi auf Ubuntu zu starten und zu bedienen. Wenn ich nur eine einzige Seite aktiviert habe (über den Apache-ähnlichen conf-available, conf-enabled-Mechanismus von ubuntu), läuft alles wunderbar. Wenn ich eine zweite Website aktiviere, scheinen meine URL-Umschreibungen nicht mehr ordnungsgemäß zu funktionieren, obwohl die fcgi-Prozesse gestartet werden und Daten bereitstellen. Hier ist meine Konfiguration:Django in Lighttpd + FCGI auf Ubuntu - Neuschreiben funktioniert nicht mehr, wenn ich eine zweite Site aktiviere

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", 
) 

Wenn ich den zweiten Standort ermöglichen, alles ist identisch mit der Ausnahme, dass jetzt gibt es eine zweite Verbindung zu einer (leicht modifizierte) Kopie von 10-example.conf in conf-aktiviert. Wenn dies geschieht, nicht meine Seiten mit diesem django-served Fehler:

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

Ich bin nicht sicher, warum eine andere Website ermöglichen sollte die bestehende Einrichtung brechen. Ich glaube, dass die Host-basierte Syntax alle Änderungen an diesem spezifischen Host isolieren sollte, aber das scheint nicht der Fall zu sein.

Antwort

2

Falls jemand in der Zukunft diese Frage anschaut, glaube ich, dass die Antwort darin bestand, dass sie in Version 1.4.20 oder später behoben wurde und der Server v1.4.19 lief, da das Ubuntus Repository hatte.

2

Haben Sie in settings.py FORCE_SCRIPT_NAME auf "" eingestellt?

FORCE_SCRIPT_NAME="" 
+0

Ja, das hatte keine Wirkung. –

+0

Behalte es da, denn das ist sowieso nötig;) – jpic

+0

Das hat bei mir funktioniert! Vielen Dank! –