सवाल पर्यवेक्षक नई विन्यास फाइल लोड नहीं कर रहा है


मुझे Gunicorn और पर्यवेक्षक का उपयोग कर Django ऐप तैनात करने में एक समस्या है। जबकि मैं गनिकोर्न को अपने ऐप की सेवा कर सकता हूं (उचित पायथनपैथ सेट करके और अनुप्रस्थ कमांड चलाकर, पर्यवेक्षक कॉन्फ़िगरेशन में से एक) मैं इसे चलाने के लिए पर्यवेक्षक नहीं बना सकता। यह सिर्फ मेरे ऐप नहीं देखेगा। मुझे नहीं पता कि कॉन्फ़िगरेशन फ़ाइल ठीक है या नहीं।

पर्यवेक्षी कहता है कि यहां क्या है:

# supervisorctl start myapp_live
myapp_live: ERROR (no such process)

मैं इसे निम्नलिखित कॉन्फ़िगरेशन के साथ उबंटू 10.04 पर चला रहा हूं:

फ़ाइल /home/myapp/live/deploy/supervisord_live.ini:

[program:myapp_live]
command=/usr/local/bin/gunicorn_django --log-file /home/myapp/logs/gunicorn_live.log --log-level info --workers 2 -t 120 -b 127.0.0.1:10000 -p deploy/gunicorn_live.pid webapp/settings_live.py
directory=/home/myapp/live
environment=PYTHONPATH='/home/myapp/live/eco/lib'
user=myapp
autostart=true
autorestart=true

फ़ाइल के अंत में /etc/supervisor/supervisord.conf में, वहां है:

[include]
files = /etc/supervisor/conf.d/*.conf

और यहां मेरी कॉन्फ़िगरेशन फ़ाइल में एक सिम्लिंक है:

# ls -la /etc/supervisor/conf.d
lrwxrwxrwx 1 root root   48 Dec  4 18:02 myapp-live.conf -> /home/myapp/live/deploy/supervisord_live.ini

सबकुछ मेरे लिए ठीक दिखता है लेकिन पर्यवेक्षक सिर्फ कहता रहता है myapp_live: ERROR (no such process)। इसके लिए कोई समाधान?


61
2017-12-11 08:48


मूल


मैं एक ही समस्या के साथ अपने सिर खरोंच कर रहा था; जब मैं भाग गया तो मेरी कॉन्फ़िगरेशन फ़ाइलों को लोड नहीं किया जा रहा था reread या update। यह पता चला कि मैंने अपनी कॉन्फ़िगरेशन फ़ाइलों को सहेजा था foo.conf.py के बजाय foo.conf इसलिए उन्हें पहचाना नहीं जा रहा था। - Timmy O'Mahony


जवाब:


मेरे पास एक ही समस्या थी, ए

sudo service supervisord reload

चाल है, हालांकि मुझे नहीं पता कि यह आपके प्रश्न का उत्तर है या नहीं।


28
2017-12-20 14:34



मैंने रोका और फिर कुछ समय पहले पर्यवेक्षक शुरू किया और यह काम किया। पता नहीं है कि रीलोड काम करेगा या नहीं (जैसा कि मैं दिल फिर से शुरू करता हूं) लेकिन मुझे लगता है कि यह हो सकता है - grucha
मैंने यह भी किया और यह काम किया। मुझे आश्चर्य है क्योंकि /etc/init.d/supervisor restart मैन्युअल रुकने और शुरू करने पर काम नहीं करता है। - Kirill
मेरे लिए काम किया, हालांकि सेवा काम नहीं कर सका इसलिए मैं बस भाग गया ps aux | grep supervisor और फिर sudo kill -HUP pid - Wayne Werner
यह खतरनाक है क्योंकि यह पूरे पर्यवेक्षक डिमन को पुनरारंभ करेगा। - Mark Theunissen
पर्यवेक्षी reread सेवा को पुनरारंभ किए बिना भी इसे ठीक कर सकते हैं। - Jonathan Liuti


सही जवाब यह है कि पर्यवेक्षक को आपको फिर से पढ़ने की आवश्यकता होती है तथा जब आप एक नई विन्यास फाइल डालते हैं तो अद्यतन करें। पुनरारंभ करना उत्तर नहीं है, क्योंकि यह अन्य सेवाओं को प्रभावित करेगा। प्रयत्न:

supervisorctl reread
supervisorctl update

183
2018-02-17 20:03



यह सही जवाब होना चाहिए। अकेले पर्यवेक्षक रीड "पर्याप्त नहीं है। - Miebster
+1 यह एक बेहतर जवाब है क्योंकि यह प्रक्रिया प्रबंधकों पर भरोसा नहीं करता है। - tidwall
अकेले "पर्यवेक्षी reread" पर्याप्त नहीं है, लेकिन पर्याप्त "पर्यवेक्षी अद्यतन" पर्याप्त नहीं होगा? प्रलेखन के अनुसार "अद्यतन" किसी भी प्रोग्राम के पुनरारंभ के बाद एक पुनरावृत्ति करता है जिसका कॉन्फ़िगरेशन रीड द्वारा संशोधित किया गया था। - BlueBomber


मास्टर पर्यवेक्षक प्रक्रिया को फिर से लोड करना काम कर सकता है, लेकिन अगर आपके पास पर्यवेक्षक द्वारा एक से अधिक प्रक्रियाओं की निगरानी की जा रही है तो इसका अनपेक्षित साइड इफेक्ट्स होगा।

ऐसा करने का सही तरीका जारी करना है supervisorctl reread जो किसी भी बदलाव के लिए कॉन्फ़िगरेशन फ़ाइलों को स्कैन करने का कारण बनता है:

root@debian:~# supervisorctl reread
gunicorn: changed

फिर, बस उस ऐप को पुनः लोड करें:

root@debian:~# supervisorctl restart gunicorn
gunicorn: stopped
gunicorn: started

14
2018-04-29 07:39



यह सबसे अच्छा समाधान है यदि आप केवल एक बदली / नई कॉन्फ़िगरेशन फ़ाइल पढ़ना चाहते हैं और शेष चल रही प्रक्रियाओं को छूटे रहें। Supervisorctl नया ऐप दिखाएगा avail। इसे जारी करके (पुनः) प्रारंभ करने योग्य प्रक्रियाओं में जोड़ें supervisorctl update। मार्क का जवाब भी देखें serverfault.com/a/479754/125887 - Sjaak Trekhaak
यह मेरे लिए पर्याप्त नहीं था। supervisorctl update आवश्यक था - Yaroslav Nikitenko


सुनिश्चित करें कि आपके पर्यवेक्षक conf फ़ाइलों को .conf में समाप्त करें

मुझे एक को समझने के लिए थोड़ी देर लग गई। उम्मीद है कि यह अगले व्यक्ति की मदद करता है।


14
2017-10-10 23:55



एक ही मुद्दे पर एक घंटे बर्बाद - विश्वास नहीं कर सकता यह आसान था। - Zane Hooper
इस उत्तर को सूचीबद्ध करने के लिए धन्यवाद। मेरे जीवन के लिए, मैं इसे एक नहीं समझ सका। - Phillip Martin


मुझे उबंटू सर्वर 12.10 से पर्यवेक्षक पैकेज, संस्करण 3.0a8-1.1 का उपयोग करके इस समस्या का सामना करना पड़ा। मैंने अंतर्निहित सहायता को पढ़कर समस्या को हल किया:

$ sudo supervisorctl help restart
restart <name>          Restart a process
restart <gname>:*       Restart all processes in a group
restart <name> <name>   Restart multiple processes or groups
restart all             Restart all processes

विशेष रूप से आप वाक्यविन्यास का उपयोग करना चाहते हैं:

sudo supervisorctl restart myapp_live:*

जैसा कि दस्तावेज बताता है http://supervisord.org/configuration.html#programx-section - "ए [प्रोग्राम: एक्स] अनुभाग वास्तव में पर्यवेक्षक (3.0 के रूप में) के लिए" सजातीय प्रक्रिया समूह "का प्रतिनिधित्व करता है।" तो शायद समस्या 3.0 संस्करण में पहली बार सामने आई।

पीएस: मैं पर्यवेक्षक के लिए नया हूँ; मैं उपयोग कर रहा हूँ https://github.com/bdarnell/tornado-production-skeleton/blob/8ad055457646929c0e8f48aaf20d98f054b1787b/production/chat.supervisor एक न्यूनतम कॉन्फ़िगरेशन की तरह दिखने के उदाहरण के रूप में।


5
2017-10-10 01:23





मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था ( myapp_live: ERROR (no such process) ) और ऐसा इसलिए था क्योंकि मेरी प्रक्रिया परिभाषा थी

[program: myapp_live]

जब यह होना चाहिए था

[program:myapp_live]

हालांकि यह पूछे जाने वाले प्रश्न को संबोधित नहीं करता है, मैं खोज से यहां नेतृत्व कर रहा था जो मेरी समस्या का हल ढूंढ रहा है, इसलिए उम्मीद है कि अन्य लोग इसे यहां भी ढूंढें।


4
2018-06-02 01:46



मुझे भी! मैंने इसे छोड़ दिया था [program] केवल, दस्तावेज़ों के बाद, लेकिन इसे बनाते हैं [program:redis] यह मेरे लिए काम किया। चीजें निश्चित रूप से कभी-कभी अजीब हो जाती हैं! - dotslash


मैंने यह समाधान सबसे सुविधाजनक पाया:

संपादित करें: ऐसा करने से पहले अपने पर्यवेक्षक पथ का उपयोग कर जांचें which supervisorctl यह सुनिश्चित करने के लिए कि आप सूडर्स के लिए सही रास्ता जोड़ रहे हैं।

इस लाइन को sudoers फ़ाइल का उपयोग करके जोड़ें visudo (कहा पे: myappuser - वह उपयोगकर्ता जो आपके ऐप को पुनरारंभ करने की आवश्यकता है, myapp - एप्लिकेशन का नाम):

myappuser  ALL=(ALL) NOPASSWD: /usr/bin/supervisorctl restart myapp

और फिर बस:

sudo supervisorctl restart myapp

आप वितरण की स्टार्टअप स्क्रिप्ट से बंधे नहीं हैं और आप अपने बंदूकधारी ऐप को पुनरारंभ करने के लिए उपयोगकर्ता को काफी संकीर्ण विशेषाधिकार देते हैं। इसके अलावा, आपको पिड की परवाह करने की आवश्यकता नहीं है। आदेश पासवर्ड के लिए नहीं पूछेगा, इसलिए यह ऑटो-तैनाती बैश / कपड़े स्क्रिप्ट के लिए उपयुक्त है। दूसरी तरफ - आपको जागरूक होना चाहिए, कि अगर पर्यवेक्षक एक बग को कोड निष्पादन के कारण कमजोर है तो एक दुर्भावनापूर्ण उपयोगकर्ता कोड के रूप में कोड चलाने के लिए इस सुडो विशेषाधिकार का उपयोग कर सकता है (लेकिन जहां तक ​​मुझे पता है कि पर्यवेक्षक के लिए ऐसी कोई बग नहीं मिली है और ऐसी भेद्यता को ढूंढना एक बड़ी बात है)।


2
2017-07-31 09:00





Supervisorctl.py के कोड को यहां पढ़ना: https://github.com/Supervisor/supervisor/blob/master/supervisor/supervisorctl.py

आप देख सकते हैं कि पर्यवेक्षी अद्यतन (फ़ंक्शन do_update) reloadConfig () को ठीक से पर्यवेक्षी reread (function do_reread) के रूप में कॉल कर रहा है।

इसलिए मुझे लगता है कि यदि आप इसके बाद अपडेट को कॉल करते हैं तो कॉलिंग रीड आवश्यक नहीं है।

गिट दोष के उत्पादन से यह जुलाई 200 9 से कम से कम इस तरह से किया गया है।


2
2018-03-04 01:55





मैंने init.d स्क्रिप्ट को विभिन्न उबंटू / डेबियन संस्करणों पर अविश्वसनीय पाया है। ऐसा करने का तरीका यह है:

sudo supervisorctl reload

1
2018-04-24 23:13



ऐसा करने का यह सही तरीका नहीं है हालांकि यह कई परिस्थितियों में काम करेगा। @ बुरहान-खालिद उत्तर सही है, और इसके लिए एक स्पष्टीकरण प्रदान करता है। - glarrain


सिम्लिंक से सावधान रहें और पर्यवेक्षक पर फाइलें शामिल करें। यह आईएनआई फ़ाइल को बदलने और किसी भी दुर्भावनापूर्ण कोड को शुरू करने के लिए /home/myapp/live/deploy/supervisord_live.ini पर w विशेषाधिकार वाले किसी भी व्यक्ति को अनुमति देगा। यह आईएनआई फाइलें आपके पर्यवेक्षक की conf निर्देशिका में या इसके तहत किसी भी उपदिर में होनी चाहिए।


1
2018-02-03 21:30





यहां एक चेकलिस्ट है:

  1. नई कॉन्फ़िगरेशन फ़ाइल को /etc/supervisord.conf में कॉन्फ़िगर किए गए पैटर्न के अनुसार नामित किया जाना चाहिए:

    [include]
    files=supervisord.d/*.ini
    

    जैसा कि हम अपने मामले में देखते हैं, spam.ini शामिल किया जाएगा, लेकिन spam.conf नहीं होगा।

  2. यदि आपने पुरानी प्रतिलिपि बनाकर नई फाइल बनाई है, तो वास्तव में इसे बदलना सुनिश्चित करें [program:] लाइन। क्योंकि यदि आप एक ही कार्यक्रम के लिए दो फाइलों के रूप में बेवकूफ हैं, supervisorctl reread दंड के रूप में आपको इस निराशाजनक त्रुटि संदेश के साथ छोड़ देगा:

    No config updates to processes
    
  3. अगर आपकी फाइल का पता चला है, supervisorctl reread कुछ ऐसा कहना चाहिए:

    spam: available
    
  4. फिर, supervisorctl update spam दोनों इसे शुरू करना चाहिए और इसे प्रकट करना चाहिए supervisorctl status


1
2017-12-05 15:35