tutorial python deployment cherrypy

python - cherrypy tutorial



Desplegando CherryPy(demonio) (4)

Daemonizer puede ser bastante simple de usar:

# this works for cherrypy 3.1.2 on Ubuntu 10.04 from cherrypy.process.plugins import Daemonizer # before mounting anything Daemonizer(cherrypy.engine).subscribe() cherrypy.tree.mount(MyDaemonApp, "/") cherrypy.engine.start() cherrypy.engine.block()

Hay un HOWTO decente para el estilo SysV aquí.

Para resumir:

  1. Cree un archivo con el nombre de su aplicación en /etc/init.d que llame a /bin/sh

    sudo vim /etc/init.d/MyDaemonApp

    #!/bin/sh echo "Invoking MyDaemonApp"; /path/to/MyDaemonApp echo "Started MyDaemonApp. Tremble, Ye Mighty."

  2. Hazlo ejecutable

    sudo chmod +x /etc/init.d/MyDaemonApp

  3. Ejecute update-rc.d para crear nuestros enlaces adecuados en el directorio de tiempo de ejecución adecuado.

    sudo update-rc.d MyDaemonApp defaults 80

  4. sudo /etc/init.d/MyDaemonApp

He seguido el tutorial básico de CherryPy ( http://www.cherrypy.org/wiki/CherryPyTutorial ). Una cosa que no se discute es el despliegue.

¿Cómo puedo lanzar una aplicación CherryPy como un demonio y "olvidarlo"? ¿Qué pasa si el servidor se reinicia?

¿Hay una receta estándar? Tal vez algo que cree un script de servicio (/etc/init.d/cherrypy ...)

¡Gracias!


Escribí un tutorial / proyecto de esqueleto, cherrypy-webapp-skeleton , cuyo objetivo era llenar los vacíos para implementar una aplicación CherryPy del mundo real en Debian * para un desarrollador web. Cuenta con cherryd extendido para la caída de privilegios de daemon. También hay una serie de archivos de configuración y scripts importantes para init.d , nginx , monit , logrotate . La parte del tutorial describe cómo unir las cosas y, finalmente, olvidarlas . La parte esquelética propone una forma de posible disposición de los activos del proyecto de la aplicación web CherryPy.

* Fue escrito para Squeeze pero prácticamente debería ser igual para Wheezy.


Hay un complemento Daemonizer para CherryPy incluido de forma predeterminada que es útil para que empiece, pero la forma más sencilla para casos simples es usar el script cherryd:

> cherryd -h Usage: cherryd [options] Options: -h, --help show this help message and exit -c CONFIG, --config=CONFIG specify config file(s) -d run the server as a daemon -e ENVIRONMENT, --environment=ENVIRONMENT apply the given config environment -f start a fastcgi server instead of the default HTTP server -s start a scgi server instead of the default HTTP server -i IMPORTS, --import=IMPORTS specify modules to import -p PIDFILE, --pidfile=PIDFILE store the process id in the given file

En cuanto a la secuencia de comandos init.d, creo que hay ejemplos que se pueden buscar en Google.

Y el cherryd se encuentra en tu:

virtualenv / lib / python2.7 / site-packages / cherrypy / cherryd

o en: https://bitbucket.org/cherrypy/cherrypy/src/default/cherrypy/cherryd


Información sobre las opciones de Daemonizer

Al usar Daemonizer, los docs no indican las opciones, por ejemplo, cómo redirigir stdout o stderr . Desde la fuente de la clase Daemonizer puedes encontrar las opciones. Como referencia toma este ejemplo de mi proyecto:

# run server as a daemon d = Daemonizer(cherrypy.engine, stdout=''/home/pi/Gate/log/gate_access.log'', stderr=''/home/pi/Gate/log/gate_error.log'') d.subscribe()