2013-02-07 23 views
10

मैं पिछले कुछ महीनों के लिए बवंडर में एक वेब सेवा को विकसित करने की है रिवर्स, अपने परीक्षण वातावरण में सेवा का उपयोग मैं चलाने के लिए nginx साथ उत्पादन में एक बवंडर वेब सेवा की स्थापना। py मेरा टर्ननाडो एप्लिकेशन हैंडलर है जो पोर्ट 8001 पर सुनता है। फिर मैं http://localhost:8001 का उपयोग कर वेब सेवा से अनुरोध करता हूं। अब मैं अपने परीक्षण पर्यावरण को एक स्टेजिंग वातावरण में तैनात कर रहा हूं जो उत्पादन को दर्पण करना चाहिए। मैं उत्पादन में टर्ननाडो चलाने के बारे में कैसे जा सकता हूं? मुझे लगता है कि मुझे एप्लिकेशन के लिए कुछ प्रकार का डिमन बनाने की ज़रूरत है, लेकिन मुझे नहीं पता कि कहां से शुरू करना है!अप प्रॉक्सी

उत्तर

28

कुछ ऐसे टूल हैं जिनका आप उपयोग कर सकते हैं।

पहले, Supervisord

Supervisord एक "प्रक्रिया नियंत्रण प्रणाली", आप अपने प्रक्रियाओं कॉन्फ़िगर और अगर वे असफल हो यह उन्हें पुनः आरंभ करेंगे पर्यवेक्षक उन्हें प्रबंधन करते हैं, उन्हें आसानी से प्रबंध और उन्हें पृष्ठभूमि में चल रहा रखने के है

यहां नमूने के पर्यवेक्षक कॉन्फ़िग फ़ाइल

[program:myprogram] 
process_name=MYPROGRAM%(process_num)s 
directory=/var/www/apps/myapp 
command=/var/www/apps/myapp/virtualenv/bin/python index.py --PORT=%(process_num)s 
startsecs=2 
user=youruser 
stdout_logfile=/var/log/myapp/out-%(process_num)s.log 
stderr_logfile=/var/log/myapp/err-%(process_num)s.log 
numprocs=4 
numprocs_start=14000 

कि config के साथ है, पर्यवेक्षक 4 (numprocs) बंदरगाहों 14,001-14,004 पर index.py के उदाहरण शुरू कर देंगे (numprocs_start)। प्रत्येक प्रक्रिया को एक अलग बंदरगाह पर शुरू करने के लिए हम --PORT=%(process_num)s पास करते हैं। अपने पर्यावरण/उपकरण के अनुरूप आपको numprocs और numprocs_start बदलना चाहिए। आम तौर पर हम 2xCPU कोर प्रक्रियाओं को चलाते हैं (इसलिए क्वाड कोर प्रोसेसर में 8 प्रक्रियाएं होंगी) लेकिन यह आपकी प्रक्रियाओं के आधार पर बड़े पैमाने पर भिन्न हो सकती है और आपके कोड में कितनी अवरोध है।

इसके बाद, कॉन्फ़िगर अपनी साइट

upstream myappbackend { 
      server 127.0.0.1:14001 max_fails=3  fail_timeout=1s; 
      server 127.0.0.1:14002 max_fails=3  fail_timeout=1s; 
      server 127.0.0.1:14003 max_fails=3  fail_timeout=1s; 
      server 127.0.0.1:14004 max_fails=3  fail_timeout=1s; 
    } 

    server { 
      listen           4.5.6.7:80; 
      server_name          example.com; 

      access_log  /var/log/nginx/myapp.log main; 


      location/{ 
        proxy_set_header    Host   $host; 
        proxy_set_header    X-Real-Ip  $remote_addr; 
        proxy_pass      http://myappbackend/; 
      } 
    }  

करने के लिए अनुरोध अग्रेषित करने के लिए nginx config अपने आवेदन और जिस तरह से यह काम करता है पर निर्भर संशोधित किया जाना चाहिए यही कारण है, कि एक बहुत ही कम से कम विन्यास है और होगा लगभग निश्चित रूप से पर विस्तार की जरूरत है लेकिन जो आपको

+1

प्राप्त करने के लिए पर्याप्त होना चाहिए, क्या यह nginx या पर्यवेक्षक है जो URL को एक्सेस करते समय किस प्रक्रिया का उपयोग किया जाता है? या मुझे इसे प्रबंधित करने के लिए और अधिक सॉफ्टवेयर चाहिए। –

+0

और क्या आप समझा सकते हैं कि आप 14000 पर प्रक्रिया क्यों शुरू कर रहे हैं? –

+2

nginx बैकएंड में से एक के लिए अनुरोध पास करता है। पर्यवेक्षक केवल प्रक्रिया प्रबंधन (लाइव/मृत/पुनरारंभ) का ख्याल रखता है। बंदरगाह के लिए, आप जो कुछ भी चाहते हैं उसे चुन सकते हैं जब तक कि यह किसी अन्य ऐप से टकरा न जाए जो बंदरगाहों में से एक सुन रहा हो –