Ejecute el servidor Python al inicio

Ejecute el servidor Python al inicio

Tengo algunos servidores basados ​​en Python que necesito ejecutar y me gustaría que se inicien automáticamente cuando inicio mi cuadro de servidor Ubuntu. ¿Cuál es la mejor manera de ejecutarlos así?

Esperaba poder escribir un script Bash y usar Screen para que se ejecuten en segundo plano, donde puedo comprobarlos de vez en cuando, pero como

echo screen -d -m python

funciona bien,

echo screen -d -m `sudo python /home/matt/tornadoServer/tornadoDeploy.py`

no lo hace, sin mensajes de error. ¿Tiene eso algo que ver con los espacios? ¿Aunque lo rodeé con comillas invertidas? También probé:

WEB="screen -d -m `sudo python /home/matt/tornadoServer/tornadoDeploy.py`"
echo $WEB

Como forma de escapar de los espacios, pero sin suerte. ¿Cuál es la forma de hacer esto mediante secuencias de comandos Bash?

Y, una vez que el script Bash funcione, ¿dónde puedo colocarlo para que se ejecute al inicio?

Respuesta1

Está fallando porque sudosolicita una contraseña. Dado que no hay ningún TTY abierto, solo está esperando que usted ingrese uno; de hecho, puede fallar instantáneamente. Si está ejecutando esto como root, no necesita iniciarlo como sudo.

Sin embargo, lo que probablemente desee hacer es alterar tornadoDeploy.py para demonizarse, es decir, separarse, de modo que no se ejecute con una sesión abierta. Elbiblioteca python-daemonizeproporciona herramientas sencillas que le permitirán hacer esto. Esto elimina tener que lidiar con la pantalla y al mismo tiempo le permite demonizar el proceso.

Respuesta2

Poner

sudo -n python /home/matt/tornadoServer/tornadoDeploy.py &

en el archivo /etc/rc.d/rc.local. O cualquiera que sea el equivalente para su distribución.

Suponiendo que su secuencia de comandos es un demonio que se comporta bien y que ha configurado sudo para que no requiera una contraseña para ejecutar su secuencia de comandos.

Leerestesobre scripts de inicio yestesobre una biblioteca de demonios de Python. Además, ¿no tienes que correr tornado?detrás de un servidor http real?

Respuesta3

La forma de Ubuntu (y Debian) de hacer que las aplicaciones se inicien en el momento del arranque es convertirlas en servicios del sistema usando update-rc.d; consulte aquí para obtener instrucciones:http://www.debuntu.org/how-to-manage-services-with-update-rc.d

Recuerde que cualquier cosa que se ejecute como root es una vulnerabilidad de seguridad potencial, especialmente si otros usuarios pueden modificarla.

Respuesta4

Si lo ejecuta desde rc.local, también necesita editar /etc/sudoers y comentar esta cadena:

Requisito predeterminado

información relacionada