2012-05-18 20 views
17

Ho scoperto come eseguire la mia applicazione Django tramite sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80. Tuttavia, dopo aver chiuso il terminale, il server smette di funzionare.Come posso mantenere attivo il mio server Django anche dopo aver chiuso la sessione ssh?

Ho provato a eseguire questo processo in background, ma il server si spegne rapidamente subito dopo aver eseguito sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 &.

Come mantenere la mia applicazione Django in esecuzione anche dopo aver chiuso la sessione ssh nel terminale?

PS - Scusa se questa domanda ti colpisce come elementare. Tale sciocchezza si verifica quando un programmatore javascript front-end deve trasformarsi in un amministratore di server con una velocità incredibile.

+3

Basta ricordare runserver è solo per lo sviluppo ... –

+0

Attendere, perché è solo per lo sviluppo? L'ho letto anche nella documentazione di Django, ma quali sono gli svantaggi? Penso che funzionerebbe bene. – dangerChihuahua007

+5

no. Uso. Runserver. In. Produzione. Mai. È single-threaded. È insicuro. Non è ottimizzato Affatto. È solo e puramente una * comodità * per consentire di testare il codice in fase di sviluppo. Non è mai stato progettato né destinato a essere utilizzato per qualcosa oltre a questo. –

risposta

26

Incontra screen.

Connessione tramite ssh, schermata iniziale. Questo apre un emulatore di console virtuale su quello fornito da ssh. Avvia il tuo server lì.

Quindi premere Ctrl-a, quindi d. Questo separa la sessione dello schermo, mantenendola in esecuzione in background.

A [R] e-allegare ad esso, utilizzare lo schermo -r.

Se lo schermo non è installato e non è possibile installarlo, è anche possibile avviare un'applicazione in background aggiungendo un comando & al comando, come si è tentato. Ma non dovresti chiudere la finestra del terminale; basta disconnettersi, con il comando bash exit o Ctrl-d.

Il vantaggio dello schermo è che è ancora possibile leggere l'output dal server, nel caso si verifichi un errore o altro.

Lo schermo è uno strumento davvero potente, con molti più comandi. È possibile aggiungere una nuova finestra virtuale con Ctrl-a, quindi c (per Crea); passare attraverso Windows con Ctrl-a, poi n (successivo) o p (precedente), ...

Ma è necessario installarlo per usarlo. Poiché sembra che tu abbia accesso come root, questo non dovrebbe essere un problema.

MODIFICA: tmux è un'altra grande soluzione per lo stesso caso d'uso.

+0

Grazie! Controllerò la schermata dopo averla installata. Sto diventando strano '!!! no tgetent - no screen' error su come effettuare l'installazione, ma lo capirò. – dangerChihuahua007

+0

La tua distribuzione probabilmente ha un pacchetto preconfigurato pronto per essere installato. L'hai usato? Per debian o ubuntu, sarebbe apt-get schermata di installazione. In questo modo, installerà anche i pacchetti richiesti. – Gyscos

+0

Ah, grazie! Ho risolto il problema eseguendo 'sudo apt-get install libncurses5-dev' per ottenere alcune librerie c richieste. Wow, lo schermo funziona alla grande! Ho appena eseguito il server in un terminale emulato separato e ho chiuso la mia connessione ssh. Il server è ancora in esecuzione: D Ho verificato il processo anche con 'pstree'. Non potrei usare il runserver di Django per i commenti sopra, ma questa risposta risolve certamente la mia domanda originale e mi ha insegnato qualcosa di nuovo. Grazie: D – dangerChihuahua007

4

Utilizzare screen per creare una nuova finestra virtuale ed eseguire il server lì.

$ screen 
$ python manage.py runserver 

Vedrai che il server Django ha iniziato a funzionare.

Ora premere Ctrl+A e quindi premere la chiave D per staccare da quella schermata. Si dirà:

$ [detached from ###.pts-0.hostname] 

È ora possibile effettuare il logout in modo sicuro dal vostro terminale, accedere nuovamente al tuo terminal, fare altri pezzi di codifica in altre directory, andare per una vacanza, fare quello che vuoi.


Per tornare alla schermata che si è staccato dal,

$ screen -r 

per uccidere il server di Django ora, è sufficiente premere Ctrl+C come avresti fatto normalmente.


Per terminate questa schermata corrente invece di detaching da questa schermata, utilizzare Ctrl+D. Dirà:

$ [screen is terminating] 
$ 
+0

Come tornare alla schermata dopo la chiusura di Putty. si dice che non ci sia schermo da riprendere – amitnair92

+0

Non sono sicuro dello stucco –

3

Utilizzare nohup. Cambia il tuo comando come segue:

nohup sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 & 
Problemi correlati