2012-05-18 29 views
17

Descubrí cómo ejecutar mi aplicación Django a través del sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80. Sin embargo, después de salir de la terminal, el servidor deja de funcionar.¿Cómo puedo mantener mi servidor Django en funcionamiento incluso después de cerrar mi sesión ssh?

He intentado ejecutar este proceso en segundo plano, pero el servidor simplemente se apaga rápidamente después de ejecutar sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 &.

¿Cómo puedo mantener mi aplicación Django ejecutándose incluso después de salir de mi sesión ssh en la terminal?

PD: lo siento si esta pregunta te parece elemental. Tal tontería se produce cuando un programador de javascript de front-end debe convertirse en un administrador de servidor en velocidad vertiginosa.

+3

Solo recuerde que runserver es solo para desarrollo ... –

+0

Espera, ¿por qué es solo para desarrollo? Lo leí también en la documentación de Django, pero ¿cuáles son los inconvenientes? Creo que funcionaría bien. – dangerChihuahua007

+5

No. Utilizar. Runserver. En. Producción. Nunca. Es de un solo hilo. Es inseguro. No está optimizado En absoluto. Es única y puramente una * conveniencia * permitirle probar su código en desarrollo. Nunca fue diseñado ni destinado a ser utilizado para nada más allá de eso. –

Respuesta

26

Conoce screen.

Conectar a través de ssh, pantalla de inicio. Esto abre un emulador de consola virtual encima del proporcionado por ssh. Comience su servidor allí.

A continuación, presione Ctrl-a, luego d. Esto separa la sesión de pantalla, manteniéndola ejecutándose en segundo plano.

Para [R] unir-e, utilice la pantalla -r.

Si la pantalla no está instalada y no puede instalarla, también puede iniciar una aplicación en segundo plano agregando un & al comando, como lo intentó. Pero no deberías cerrar la ventana del terminal entonces; simplemente desconecte, con la salida del comando bash, o Ctrl-d.

La ventaja de la pantalla es que todavía se puede leer la salida del servidor, en caso de que haya un error o algo.

La pantalla es una herramienta realmente poderosa, con muchos más comandos. Puede agregar una nueva ventana virtual con Ctrl-a, luego c (para Crear); cambiar a través de ventanas con Ctrl-a, luego n (siguiente) o p (anterior), ...

Pero necesita que se instale para usarlo. Como parece tener acceso a la raíz, esto no debería ser un problema.

EDIT: tmux es otra gran solución para el mismo caso de uso.

+0

¡Gracias! Veré la pantalla después de instalarla. ¡Me estoy poniendo raro! no hay error: no hay pantalla al hacer la instalación, pero lo resolveré. – dangerChihuahua007

+0

Su distribución probablemente tiene un paquete preconfigurado listo para ser instalado. ¿Usaste eso? Para debian o ubuntu, sería una pantalla apt-get install. De esta forma, también instalará los paquetes requeridos. – Gyscos

+0

¡Ah, gracias! Solucioné el problema ejecutando 'sudo apt-get install libncurses5-dev' para obtener algunas bibliotecas c necesarias. ¡Guau, la pantalla funciona genial! Acabo de ejecutar el servidor en un terminal emulado separado y cerré mi conexión ssh. El servidor aún se está ejecutando: D También verifiqué el proceso con 'pstree'. Puede que no use el servidor de ejecución Django según los comentarios anteriores, pero esta respuesta definitivamente resuelve mi pregunta original y me enseñó algo nuevo. Gracias: D – dangerChihuahua007

4

Usa screen para crear una nueva ventana virtual y ejecuta allí el servidor.

$ screen 
$ python manage.py runserver 

Verás que el servidor Django ha comenzado a funcionar.

Ahora presione Ctrl+A y luego presione la tecla D para desprenderse de esa pantalla. Se dirá:

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

Ahora puede cerrar la sesión de forma segura desde su terminal, vuelva a entrar a su terminal, hacer otros bits de codificación en otros directorios, ir de vacaciones, hacer lo que quiera.


Para volver a la pantalla que usted ha desprendido del

$ screen -r 

para matar al servidor de Django ahora, sólo tiene que pulsar Ctrl+C igual que lo ha hecho normalmente.


Para terminate esta pantalla actual en lugar de detaching desde esta pantalla, utilice Ctrl+D. Dirá:

$ [screen is terminating] 
$ 
+0

Cómo volver a la pantalla después de cerrar la masilla. dice que no hay pantalla para reanudar – amitnair92

+0

No estoy seguro de masilla –

3

Use nohup. Cambie su comando de la siguiente manera:

nohup sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 & 
Cuestiones relacionadas