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:
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."
Hazlo ejecutable
sudo chmod +x /etc/init.d/MyDaemonApp
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
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()