我遵循了基本的CherryPy教程(http://www.cherrypy.org/wiki/CherryPyTutorial).没有讨论的一件事是部署.
如何启动CherryPy应用程序作为守护进程并"忘记它"?如果服务器重新启动会发生什么?
有标准食谱吗?也许会创建一个服务脚本(/etc/init.d/cherrypy ...)
谢谢!
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()
这里有一个体面的SOWV风格的HOWTO.
总结一下:
在/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
运行update-rc.d
以在适当的运行时目录中创建正确的链接.
sudo update-rc.d MyDaemonApp defaults 80
sudo /etc/init.d/MyDaemonApp
默认情况下包含一个用于CherryPy 的Daemonizer插件,这对于启动它很有用,但到目前为止,简单案例的最简单方法是使用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脚本,我认为有些例子可以用Google搜索.
你cherryd
可以找到:
的virtualenv/lib目录/ python2.7 /站点包/ CherryPy的/ cherryd
或者在:https://bitbucket.org/cherrypy/cherrypy/src/default/cherrypy/cherryd
我编写了一个教程/项目框架,cherrypy-webapp-skeleton,其目标是填补在Debian*上为Web开发人员部署真实的CherryPy应用程序的空白.它具有cherryd
针对守护程序权限下降的扩展功能.还有对于一些重要的脚本和配置文件init.d
,nginx
,monit
,logrotate
.教程部分描述了如何将事物放在一起并最终忘记它.骨架部分提出了一种可能安排CherryPy webapp项目资产的方法.
*它是为Squeeze编写的,但实际上它应该与Wheezy相同.