2009-09-23 9 views
23

पर तैनाती मैंने मूल चेरीपी ट्यूटोरियल (http://www.cherrypy.org/wiki/CherryPyTutorial) का पालन किया है। एक बात पर चर्चा नहीं की गई तैनाती है।चेरीपी (डेमन)

मैं चेरीपी ऐप को डिमन के रूप में कैसे लॉन्च कर सकता हूं और "इसके बारे में भूल सकता हूं"? सर्वर रीबूट होने पर क्या होता है?

क्या कोई मानक नुस्खा है? हो सकता है कि कुछ ऐसा हो जो सेवा स्क्रिप्ट (/etc/init.d/cherrypy ...)

धन्यवाद! जहाँ तक एक init के रूप में

> 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 

:

उत्तर

14

CherryPy के लिए एक Daemonizer प्लगइन डिफ़ॉल्ट जो इसे शुरू करने के लिए, लेकिन अब तक साधारण मामलों के लिए सबसे आसान तरीका है cherryd स्क्रिप्ट का उपयोग करने के लिए है के बारे में उपयोगी है से शामिल नहीं है .d स्क्रिप्ट मुझे लगता है कि ऐसे उदाहरण हैं जिन्हें गुगल किया जा सकता है।

और cherryd अपने में पाया जाता है:

virtualenv/lib/python2.7/साइट-संकुल/cherrypy/cherryd

या में: https://bitbucket.org/cherrypy/cherrypy/src/default/cherrypy/cherryd

15

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

There is a decent HOWTO for SysV style here.

संक्षेप में:

  1. /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." 
    
  2. यह निष्पादन योग्य बनाने

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

  3. उचित रनटाइम डीआईआर में हमारे उचित लिंक बनाने के लिए update-rc.d चलाएं।

    sudo update-rc.d MyDaemonApp defaults 80

  4. sudo /etc/init.d/MyDaemonApp

+2

मुझे नहीं पता कि क्या एक 'spizouzou' है है, लेकिन चर पूरी तरह अनावश्यक है। बस कहें: 'डेमोनाइज़र (चेरीपी.एन्गिन)। सदस्यता() 'और प्लगइन जारी रहेगा क्योंकि' इंजन 'अब इसके लिए एक संदर्भ रखता है। –

+0

@ ब्रैंडन क्रेग रोड्स सही है। एक चर बनाने की जरूरत नहीं है। – lysdexia

+3

http://tools.cherrypy.org/wiki/WindowsService जैसा कि कहीं और बताया गया है, कोई भी उसी तरह की कोशिश के साथ एक विंडोज सेवा बना सकता है। पेज के नीचे लॉगिंग बिट्स पर ध्यान दें! वे महत्वपूर्ण हैं। – lysdexia

5

मैं एक ट्यूटोरियल/परियोजना कंकाल, cherrypy-webapp-skeleton है, जो लक्ष्य एक वेब के लिए पर डेबियन * एक वास्तविक दुनिया CherryPy आवेदन की तैनाती के लिए अंतराल को भरने के लिए गया था लिखा था डेवलपर। इसमें डेमॉन विशेषाधिकार ड्रॉप के लिए cherryd बढ़ाया गया है। init.d, nginx, monit, logrotate के लिए कई महत्वपूर्ण स्क्रिप्ट और कॉन्फ़िगरेशन फ़ाइलें भी हैं। ट्यूटोरियल भाग वर्णन करता है कि चीजों को एक साथ कैसे रखा जाए और अंत में इसके बारे में भूल जाएं। कंकाल भाग चेरीपी वेबपैप परियोजना संपत्तियों की संभावित व्यवस्था का एक तरीका प्रस्तावित करता है।


* यह निचोड़ के लिए लिखा गया था लेकिन व्यावहारिक रूप से यह व्हीजी के लिए समान होना चाहिए।

+0

इस ट्यूटोरियल में कोड वास्तव में सहायक था, धन्यवाद –

1

Daemonizer विकल्पों

Daemonizer उपयोग करते समय, docs विकल्पों राज्य नहीं है, उदाहरण के लिए पर जानकारी stdout या stderr को पुनर्निर्देशित करने के लिए कैसे करें। Daemonizer कक्षा के स्रोत से आप विकल्प पा सकते हैं। एक संदर्भ के रूप में अपने प्रोजेक्ट से इस उदाहरण लेते हैं:

# 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() 
संबंधित मुद्दे