Развертывание CherryPy (демон)
я следовал основной CherryPy учебник (http://www.cherrypy.org/wiki/CherryPyTutorial). Одно не обсуждается развертывания.
Как я могу запустить приложение CherryPy в качестве демона и"забыть об этом"? Что произойдет, если сервер перезагружается?
есть ли стандартный рецепт? Возможно, что-то, что создаст скрипт службы (/etc/init.д/cherrypy...)
спасибо!
4 ответов
есть Daemonizer плагин для CherryPy включен по умолчанию, что полезно для его запуска, но, безусловно, самый простой способ для простых случаев-использовать скрипт 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
что касается init.D скрипт идет я думаю, что есть примеры, которые можно погуглить.
и cherryd
в:
virtualenv/lib / python2.7 / сайт-пакеты/cherrypy / cherryd
или в: https://bitbucket.org/cherrypy/cherrypy/src/default/cherrypy/cherryd
Daemonizer может быть довольно простым в использовании:
# 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()
здесь есть приличный HOWTO для стиля SysV.
подведем итоги:
-
создайте файл с именем приложения в
/etc/init.d
что называет/bin/sh
sudo vim /etc/init.d/MyDaemonApp
#!/bin/sh echo "Invoking MyDaemonApp"; /path/to/MyDaemonApp echo "Started MyDaemonApp. Tremble, Ye Mighty."
-
сделать его исполняемым
sudo chmod +x /etc/init.d/MyDaemonApp
-
Run
update-rc.d
создать наши правильные ссылки в правильном во время выполнения реж.sudo update-rc.d MyDaemonApp defaults 80
sudo /etc/init.d/MyDaemonApp
я написал учебник/скелет проекта, cherrypy-webapp-скелет, целью которого было заполнить пробелы для развертывания реального приложения CherryPy в Debian* для веб-разработчика. Он имеет расширенный cherryd
для падения привилегий демона. Есть также ряд важных скриптов и конфигурационных файлов для init.d
, nginx
, monit
, logrotate
. Учебная часть описывает, как собрать вещи вместе и в конечном итоге забыть об этом. Скелет часть предлагает путь о возможном расположении активов проекта cherrypy webapp.
* Это было написано для Squeeze, но практически это должно быть то же самое для Wheezy.
информация о параметрах Daemonizer
при использовании Daemonizer,docs Не указывайте параметры, например, как перенаправить stdout или stderr. От источника Daemonizer class вы можете найти варианты. В качестве ссылки возьмите этот пример из моего проекта:
# 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()