2009-07-27 6 views
43

Wie kann ich den Entwicklungsserver von Django dauerhaft machen? Damit es nicht aufhört, wenn ich die Shell verlasse.Django runserver permanent

Dank

+5

Ich hoffe, dass Sie dies nicht für die Verwendung auf einem Produktionsserver fragen. Es wird dich nur zum Bösen führen, wenn du es bist. – wlashell

+1

Sie sollten die Shell nur während der Entwicklung geöffnet haben. Dies ist NICHT für die Produktion gedacht! – Soviut

+5

Und für Beta-Tester? – panchicore

Antwort

42

Wenn Sie auf Linux/Unix sind verwenden, um die "nohup" -Befehl.

nohup manage.py runserver & 

Dann ist es zurück zu bekommen, verwenden Sie den Befehl fg:

fg 

Dank: Xiong Chiamiov

+1

Dann verwenden Sie den Befehl fg, um es zurück zu bekommen. –

+0

Dadurch können Sie die Shell nicht verlassen, da ein Job ausgeführt wird. Recht? –

+1

@Adam N. Sie werden in der Lage sein, die Shell zu verlassen, das Nohup ist für "kein Aufhängen", es wird den Job weiterlaufen lassen, nachdem Sie die Shell verlassen haben. – MikeN

50

eine weitere einfache Möglichkeit, dies zu tun ist, auszuführen:

[[email protected]]$screen 
[[email protected]]$python manage.py runserver 0.0.0.0:8000 

Drücken Sie nun Ctrl+A und dann d, um diesen Bildschirm zu verlassen.

Dies erstellt den Server in einem Bildschirm und löst es dann. Auf diese Weise können Sie einfach wieder reingehen und eingeben:

[[email protected]]$screen -r 

und Sie können die Kontrolle über den Server wieder übernehmen und sehen, was los ist.

+1

Kann man sich abmelden und zurück zum Bildschirm? –

+0

@AdamNelson Ja, wenn Sie eine Bildschirmsitzung nicht explizit beenden, wird sie auch nach einer Abmeldung weiter ausgeführt. – 0sh

+1

Ein Problem mit dieser Lösung ist, dass beim Ausführen des Servers die Serverkonsole gestartet wird und man keine Befehle an das Terminal senden kann. Daher kann die Bildschirm-Methode – Freestyle076

2

eine Datei mit diesem erstellen, zB /tmp/screendjango:

screen python manage.py runserver 

und dann setzen Sie:

screen -dmS django -c /tmp/screendjango 

für die Sitzung befestigen Sie setzen

screen -d -r django. 
+1

Ich denke, das ist die komplizierteste Art, den Bildschirm zu benutzen. –

0

Führen Sie unter Windows

aus
pythonw.exe manage.py runserver 
0

Ich bin gerade dabei, das selbst zu tun. Das Szenario ist, dass ich Rapid Prototyping für einen Kunden bin und sie sehen müssen, wie die Dinge aussehen. Es wird nie zu einem Zeitpunkt mehr als 2-3 Personen auf das sein, aber ich will nicht Apache einrichten oder in eingeloggt bleiben.

sudo ./manage.py runserver 192.168.1.94:80 [run this on port 80 so a normal business user can see it] 
ctrl+z [to suspend the job (same thing as appending & to the above command but then I don't need to deal with entering the sudo password on the command line)] 
bg %1 [puts the job in the background] 
jobs [just to see what's going on] 
exit [exit the session] 
22

wie Travis says-- Verwendung Bildschirm. Wenn Sie es noch nicht installiert haben, holen Sie es:

sudo apt-get install screen 
screen 

Drücken Sie Enter. Jetzt sind Sie in einem anderen Terminalfenster.

Starten Sie Server mit:

python manage.py runserver 0.0.0.0:8000 

Jetzt sind Sie den Server ausgeführt wird, und Sie möchten Ihre ersten Bildschirm zurück zu bekommen, während die django app lassen weiter ausgeführt. Der Bildschirm hat eine nette Funktion dafür.Um wieder zu Ihrem Haupt-Terminal-Typ:

ctrl+a d 

Von dort können Sie auf der django Bildschirm zurück, indem Sie:

screen -r 

Wenn Sie mehrere Bildschirme geöffnet haben, können Sie die richtige erreichen durch es ist 4-5-stellige ID-Nummer:

screen -r 1333 

und der Mann Seiten sind ziemlich gut:

man screen 
+0

Ich bin sehr an Ihrer Lösung interessiert. Da ich CentOS benutze, musste ich 'Pip Install Screen 'verwenden. Die Installation war ein Erfolg, aber ich tippe 'screen' und bekomme -bash: screen: command not found. Irgendwelche Ideen? Danke – Dmitry

+1

@dmitrymar, obwohl Sie möglicherweise Bildschirm erfolgreich installiert haben, scheint es nicht in Ihrem Pfad zu sein. Sie sollten herausfinden, wo pipl es installiert hat, und sicherstellen, dass das Verzeichnis, in dem es installiert wurde, im PATH enthalten ist. Überprüfen Sie 'echo $ PATH', um zu sehen, was der aktuelle Pfad ist. Und 'which screen' um zu überprüfen, ob deine Shell es irgendwo im Pfad sieht. – kelorek

9
on Ubuntu run:>./manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 & 

>exit 
+0

+1 das ist einfach und ich kann bestätigen, dass es auch auf Centos funktioniert (und ich kann mir keinen guten Grund vorstellen, dass es plattformspezifisch wäre, vorausgesetzt, Sie befinden sich auf einem Unix-System mit bash) – cderwin

+0

Danke. Funktioniert super!!! – thedp