2009-09-23 16 views

Odpowiedz

14

Jest Daemonizer plugin dla CherryPy włączone domyślnie, która jest przydatna dla coraz to aby zacząć, ale zdecydowanie najprostszy sposób na prostych przypadkach jest użycie skryptu 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 

miarę init .d script goes Myślę, że istnieją przykłady, które można wyszukiwać w Google.

A cherryd jest znaleźć w:

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

lub w: https://bitbucket.org/cherrypy/cherrypy/src/default/cherrypy/cherryd

15

Daemonizer może być bardzo prosty w użyciu:

# 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() 

There is a decent HOWTO for SysV style here.

Podsumowując:

  1. Utwórz plik o nazwie dla aplikacji w /etc/init.d który wywołuje /bin/sh

    sudo vim /etc/init.d/MyDaemonApp

    #!/bin/sh 
    echo "Invoking MyDaemonApp"; 
    /path/to/MyDaemonApp 
    echo "Started MyDaemonApp. Tremble, Ye Mighty." 
    
  2. Zrób to wykonywalny

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

  3. Uruchom update-rc.d, aby utworzyć nasze właściwe linki w odpowiednim katalogu wykonawczym reż.

    sudo update-rc.d MyDaemonApp defaults 80

  4. sudo /etc/init.d/MyDaemonApp

+2

Nie mam pojęcia, czym jest "spizouzou", ale zmienna jest zupełnie niepotrzebna. Po prostu powiedz: 'Daemonizer (cherrypy.engine) .subscribe()', a wtyczka będzie się utrzymywać, ponieważ 'engine' utrzymuje odniesienie do niego przy życiu. –

+0

@brandon craig rhodes jest poprawny. Nie ma potrzeby tworzenia zmiennej. – lysdexia

+3

http://tools.cherrypy.org/wiki/WindowsService Jak wspomniano w innym miejscu, można utworzyć usługę Windows z podobnym nakładem pracy. Zwróć uwagę na bity rejestrowania u dołu strony! Oni są ważni. – lysdexia

5

Napisałem szkielet poradnik/projektami, cherrypy-webapp-skeleton, których celem było wypełnienie luki do wdrażania aplikacji w świecie rzeczywistym CherryPy na Debianie * dla WEB- deweloper. Posiada rozszerzony cherryd dla upuszczenia przywilejów demona. Istnieje również szereg ważnych plików skryptów i plików konfiguracyjnych dla init.d,, monit, . Część samouczka opisuje, w jaki sposób połączyć rzeczy i ostatecznie zapomnieć o tym. Część szkieletowa proponuje sposób możliwego rozmieszczenia aktywów projektu webapp CherryPy.


* Został on napisany dla Squeeze, ale praktycznie powinna być taka sama dla astmatycznych.

+0

Kod w tym samouczku był bardzo pomocny, dziękuję –

1

Informacje o opcjach Daemonizer

Podczas korzystania Daemonizer The docs nie stanowią opcje, na przykład jak przekierować stację stdout lub stderr. Ze źródła klasy Daemonizer można znaleźć opcje. Jako odniesienie weź przykład z mojego projektu:

# 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()