2009-07-27 10 views
43

Come posso rendere permanente il server di sviluppo da django? In modo che non si fermi quando esco dalla shell.Django runserver permanente

Grazie

+5

Spero che non lo stiate chiedendo per l'uso su un server di produzione. Ti condurrà solo al male se lo sei. – wlashell

+1

Si suppone che la shell sia aperta solo durante lo sviluppo. Questo NON è pensato per la produzione! – Soviut

+5

E per i beta tester? – panchicore

risposta

42

Se siete su Linux/Unix utilizzare il comando "nohup".

nohup manage.py runserver & 

Poi per tornare indietro, utilizzare il comando fg:

fg 

Grazie a: Xiong Chiamiov

+1

Quindi per ripristinarlo, utilizzare il comando fg. –

+0

Questo non ti permetterà di uscire dalla shell mentre un lavoro sarà in esecuzione. Destra? –

+1

@Adam N. Sarai in grado di uscire dalla shell, il nohup è per "no hangup", continuerà a eseguire il lavoro dopo aver lasciato la shell. – MikeN

50

un altro modo semplice per farlo è quello di eseguire:

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

Ora premere Ctrl+A e quindi premere d per uscire da questa schermata.

Ciò crea il server in una schermata e quindi la scollega. In questo modo puoi semplicemente tornare indietro e digitare:

ed è possibile riprendere il controllo del server e vedere cosa sta succedendo.

+1

È possibile disconnettersi e tornare allo schermo? –

+0

@AdamNelson Sì, se non si termina esplicitamente una sessione di schermo, continuerà a essere in esecuzione anche dopo un logout. – 0sh

+1

Un problema con questa soluzione è che l'esecuzione del server avvia la console del server e non è possibile fornire comandi al terminale, quindi non è possibile eseguire lo schermo -d metodo – Freestyle076

2

creare un file con questo, ad esempio /tmp/screendjango:

screen python manage.py runserver 

e poi lo metti:

screen -dmS django -c /tmp/screendjango 

per collegare la sessione che si mettono

screen -d -r django. 
+1

Penso che sia il modo più complicato per usare lo schermo, mai. –

0

Su Windows, esegui

pythonw.exe manage.py runserver 
0

Sto per farlo da solo. Lo scenario è che sono un prototipo rapido per un cliente e hanno bisogno di vedere come sono le cose. Non ci sarà mai più di 2-3 persone su questo in un momento, ma io non voglio impostare Apache o rimanere connesso.

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

Come schermata uso Travis says--. Se non lo hai già installato, vai a ottenerlo:

sudo apt-get install screen 
screen 

Invio invio. Ora è come se ti trovassi in un'altra finestra di terminale.

Iniziate la server con:

python manage.py runserver 0.0.0.0:8000 

Ora si sta eseguendo il server, e ti piacerebbe tornare alla tua prima schermata, mentre lasciando l'applicazione Django continuare l'esecuzione. Lo schermo ha una bella funzionalità integrata per questo.Per tornare al vostro tipo di terminale principale:

ctrl+a d 

Da lì, si può tornare alla schermata django digitando:

screen -r 

Se si dispone di più schermate aperte si può raggiungere quella corretta da è 4-5 cifre numero ID:

screen -r 1333 

E le pagine man sono piuttosto buone:

man screen 
+0

Sono molto interessato alla tua soluzione. Dato che sto usando CentOS, ho dovuto usare 'pipl install screen'. L'installazione è stata un successo ma poi ho digitato 'screen' e get -bash: screen: comando non trovato. Qualche idea? Grazie – Dmitry

+1

@dmitrymar anche se potresti aver installato correttamente la schermata, sembra che non ci sia nel tuo PERCORSO. Dovrai capire dove lo ha installato pipl e assicurarti che la directory in cui è stato installato sia nel PERCORSO. Controlla 'echo $ PATH' per vedere qual è il percorso corrente. E 'quale schermo' per verificare che la tua shell lo veda da qualche parte nel percorso. – kelorek

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

>exit 
+0

+1 questo è semplice e posso confermare che funziona anche su centos (e non riesco a pensare a nessuna ragione per cui sarebbe specifico della piattaforma, dato che sei su un sistema unix con bash) – cderwin

+0

Grazie. Funziona alla grande!!! – thedp

Problemi correlati