সুপারভাইজার নতুন কনফিগারেশন ফাইল লোড করছে না


68

গ্যানিকর্ন এবং সুপারভাইজার ব্যবহার করে জ্যাঙ্গো অ্যাপ্লিকেশন স্থাপন করতে আমার সমস্যা আছে। যদিও আমি গুনিকর্নকে আমার অ্যাপ্লিকেশনটি পরিবেশন করতে পারি (যথাযথ পাইথনপ্যাথ সেট করে এবং যথাযথ কমান্ড চালিয়ে, সুপারভাইজার কনফিগারেশন থেকে এটি) আমি এটি চালানোর জন্য তদারক করতে পারি না। এটি কেবল আমার অ্যাপ্লিকেশনটি দেখতে পাবে না। কনফিগার ফাইলটি ঠিক আছে কিনা তা কীভাবে নিশ্চিত করা যায় তা আমি জানি না।

সুপারভাইজেক্টল যা বলেছে তা এখানে:

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

আমি নিম্নলিখিত কনফিগারেশন সহ এটি উবুন্টু 10.04 এ চালাচ্ছি:

ফাইল / হোম / মায়াপ্প / লাইভ / ডিপ্লয় / এসুপারভাইসর্ড_লাইভ.ইআই:

[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)। এর কোন সমাধান?


আমি একই সমস্যা নিয়ে আমার মাথা আঁচড়াচ্ছিলাম; দৌড়ে যাওয়ার সময় rereadবা আমার কনফিগারেশন ফাইলগুলি লোড করা হচ্ছিল না update। দেখা গেল যে আমি আমার কনফিগারেশন ফাইলগুলি foo.conf.pyপরিবর্তে সেভ করেছিলাম foo.confযাতে তাদের সনাক্ত করা যায় নি।
টিমি ও'মাহনি

উত্তর:


31

আমারও একই সমস্যা ছিল, ক

sudo service supervisord reload

কৌতুকটি করেছেন, যদিও আমি জানি না যে এটি আপনার প্রশ্নের উত্তর কিনা।


2
আমি থামলাম এবং তারপরে কিছুক্ষণ আগে সুপারভাইজার শুরু করলাম এবং এটি কাজ করেছিল। পুনরায়
লোডটি

আমি এটিও করেছি এবং এটি কাজ হয়ে গেছে। আমি ভাবছি কেন /etc/init.d/supervisor restartম্যানুয়াল স্টপ এবং কাজ শুরু করার পরে কাজ করে না।
কিরিল

1
আমার জন্য কাজ, যদিও সেবা তাই আমি ঠিক দৌড়ে কাজ করে নি ps aux | grep supervisorএবং তারপরsudo kill -HUP pid
ওয়েন ভের্নার

2
এটি বিপজ্জনক কারণ এটি তত্ত্বাবধায়ক ডেমন পুরোটিই পুনরায় চালু করবে।
মার্ক থিউনিসেন

7
সুপারভাইসরল পুনর্ঠনা পরিষেবাটি আরম্ভ না করেই এটিকে ঠিক করতে পারে।
জোনাথন লিউটি

199

সঠিক উত্তরটি হ'ল সুপারভাইজারের জন্য আপনাকে নতুন কনফিগারেশন ফাইল স্থাপন করার সময় আপনাকে পুনরায় পড়তে হবে এবং আপডেট করতে হবে। পুনরায় আরম্ভ করা উত্তর নয়, কারণ এটি অন্যান্য পরিষেবাগুলিকে প্রভাবিত করবে। চেষ্টা করুন:

supervisorctl reread
supervisorctl update

13
এটি সঠিক উত্তর হওয়া উচিত। "সুপারভাইজার রিডার" একা যথেষ্ট নয়।
মাইবস্টার

3
+1 এটি আরও ভাল উত্তর কারণ এটি প্রক্রিয়া পরিচালকদের উপর নির্ভর করে না।
tidwall

8
"সুপারভাইসেক্টল পুনর্ঠন" একাই যথেষ্ট নয়, তবে "সুপারভাইসরল আপডেট" কি যথেষ্ট হবে না? ডকুমেন্টেশন অনুসারে "আপডেট" একটি পুনর্বারচনা করে তারপরে যেকোন প্রোগ্রামের পুনঃসূচনা হয় যার কনফিগারেশনটি পুনরায় পাঠানো হয়েছিল।
ব্লুবম্বার

এটা আমার জন্য কাজ করে। আমি পরে পুনরায় আরম্ভ করেছি।
ব্যবহারকারী 1012513

15

আপনার সুপারভাইজার কনফারেন্স ফাইলগুলি .conf এ শেষ হয়েছে তা নিশ্চিত করুন

আমাকে এটি বের করতে কিছুক্ষণ লাগল। আশা করি এটি পরবর্তী ব্যক্তিকে সহায়তা করবে।


1
একই ইস্যুতে এক ঘন্টা নষ্ট - বিশ্বাস করা যায় না যে এটি এত সহজ।
জেন হুপার

1
এই উত্তর তালিকাভুক্ত করার জন্য ধন্যবাদ। আমার জীবনের জন্য, আমি এটিকে বের করতে পারি না।
ফিলিপ মার্টিন

14

মাস্টার সুপারভাইজার প্রক্রিয়াটি পুনরায় লোড করা কাজ করতে পারে তবে সুপারভাইজার দ্বারা যদি আপনার একাধিক প্রক্রিয়া পর্যবেক্ষণ করা হয় তবে এটির অনিচ্ছাকৃত পার্শ্ব প্রতিক্রিয়া হবে।

এটি করার সঠিক উপায় হ'ল ইস্যু করা supervisorctl rereadযার কারণে এটি কোনও পরিবর্তনের জন্য কনফিগারেশন ফাইলগুলি স্ক্যান করতে পারে:

root@debian:~# supervisorctl reread
gunicorn: changed

তারপরে, কেবলমাত্র সেই অ্যাপ্লিকেশনটি পুনরায় লোড করুন:

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

আপনি কেবলমাত্র একটি পরিবর্তিত / নতুন কনফিগারেশন ফাইলটি পড়তে চান এবং চলমান প্রক্রিয়াগুলির বাকী অংশটি যদি না রেখে চান তবে এটিই সেরা সমাধান। সুপারভাইসরেক্টল নতুন অ্যাপটি প্রদর্শন করবে avail। ইস্যু করে এটি পুনরায় শুরুযোগ্য প্রক্রিয়াগুলিতে যুক্ত করুন supervisorctl update। মার্কের উত্তর সার্ভারফল্টও
সজাক ট্রেখাক

4
এটি আমার পক্ষে যথেষ্ট ছিল না। supervisorctl updateপ্রয়োজনীয় ছিল।
ইয়ারোস্লাভ নিকিতেনকো

5

আমি উবুন্টু সার্ভার 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/configration.html#programx-section- তে উল্লেখ করেছে - "এ [প্রোগ্রাম: এক্স] বিভাগটি আসলে সুপারভাইজারের (" 3.0 হিসাবে) "একটি সমজাতীয় প্রক্রিয়া গ্রুপ" উপস্থাপন করে। " সুতরাং সমস্যাটি প্রথম সংস্করণ 3.0.০ এ প্রকাশিত হয়েছিল।

পিএস: আমি সুপারভাইজারে নতুন; ন্যূনতম কনফিগারেশনটি দেখতে কেমন হবে তার উদাহরণ হিসাবে আমি https://github.com/bdarnell/tornado-pr Prod-skeleton/blob/8ad055457646929c0e8f48aaf20d98f054b1787b/pr پيداوار/chat.supervisor ব্যবহার করছি ।


4

আমার অনুরূপ সমস্যা ছিল ( myapp_live: ERROR (no such process)) এবং এটি কারণ ছিল আমার প্রক্রিয়া সংজ্ঞা ছিল

[program: myapp_live]

যখন এটি করা উচিত ছিল

[program:myapp_live]

যদিও এটি যে প্রশ্নটি জিজ্ঞাসা করা হয়েছিল তার সমাধান করে না, আমি অনুসন্ধানের দ্বারা এখানে এসেছি যা আমার সমস্যার সমাধানের জন্য খুঁজছেন, সুতরাং আশা করি অন্যান্য ব্যক্তিরাও এটি এখানে খুঁজে পেয়েছেন।


একই অবস্থা! আমি এটিকে [program]কেবল দস্তাবেজগুলি অনুসরণ করে রেখে দিয়েছিলাম , তবে এটি [program:redis]তৈরি করা আমার পক্ষে কাজ করে। বিষয়গুলি নিশ্চিতভাবে সময়ে অদ্ভুত হয়ে যায়!
ankush981

2

আমি এই সমাধানটি সবচেয়ে সুবিধাজনক বলে মনে করেছি:

সম্পাদনা: এটি করার পূর্বে আপনার সুপারভাইজারের পথটি পরীক্ষা করে which supervisorctlনিশ্চিত করুন যে আপনি sudoers এ সঠিক পথ যোগ করছেন।

Sudoers ফাইলটিতে এই লাইনটি যুক্ত করুন visudo(যেখানে: myappuser- আপনার অ্যাপ্লিকেশনটি পুনরায় চালু করতে হবে এমন ব্যবহারকারী, myapp- অ্যাপ্লিকেশন নাম):

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

এবং তারপরে সহজভাবে:

sudo supervisorctl restart myapp

আপনি বিতরণের সূচনা স্ক্রিপ্টগুলিতে আবদ্ধ নন এবং আপনি আপনার বন্দুকের অ্যাপটি পুনরায় চালু করার জন্য ব্যবহারকারীকে যথেষ্ট সংকীর্ণ সুযোগসুবিধা দেন। এছাড়াও, আপনাকে পিডের যত্ন নেওয়ার দরকার নেই। কমান্ডটি পাসওয়ার্ড জিজ্ঞাসা করবে না যাতে এটি স্বয়ং-স্থাপনার ব্যাশ / ফ্যাব্রিক স্ক্রিপ্টগুলির জন্য উপযুক্ত। অন্যদিকে - আপনাকে সচেতন হতে হবে যে সুপারভাইসটেল যদি কিছু বাগের ফলে কোড প্রয়োগের জন্য ঝুঁকির শিকার হয় তবে কোনও দূষিত ব্যবহারকারী এই সুডো সুবিধাকে কোড হিসাবে চালানোর জন্য ব্যবহার করতে পারে (তবে যতদূর আমি জানি যে তদারকির জন্য এই জাতীয় কোনও বাগ আবিষ্কার হয়নি এবং এ জাতীয় দুর্বলতা খুঁজে পাওয়া বড় বিষয়)।


2

সুপারভাইসরl.py কোডটি এখানে পড়ছি: https://github.com/Supervisor/supervisor/blob/master/supervisor/supervisorctl.py

আপনি দেখতে পাচ্ছেন যে সুপারভাইসেক্টল আপডেট (ফাংশন do_update) সুপারভাইসেক্টল রিড (ফাংশন do_reread) ঠিক তেমনভাবে পুনরায় লোডকনফিগ () ডাকে।

সুতরাং আমি মনে করি যে কলিং রিডের প্রয়োজনীয়তা নেই যদি আপনি এর পরে আপডেট কল করেন।

গিট দোষের আউটপুট থেকে এটি কমপক্ষে জুলাই ২০০৯ সাল থেকে এরকম হয়েছে।


2

এখানে একটি চেকলিস্ট রয়েছে:

  1. /Etc/supervisord.conf এ কনফিগার করা অন্তর্ভুক্ত প্যাটার্ন অনুসারে নতুন কনফিগার ফাইলটির নামকরণ করা উচিত:

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

    যেমনটি আমরা আমার ক্ষেত্রে দেখতে পাচ্ছি, স্প্যাম.ইএনআই অন্তর্ভুক্ত করা হবে, তবে স্প্যাম.কনফ তা করবে না।

  2. আপনি যদি কোনও পুরানো ফাইলটি অনুলিপি করে নতুন ফাইলটি তৈরি করেন তবে [program:]লাইনটি বাস্তবে পরিবর্তন করতে ভুলবেন না । কারণ আপনি যদি একই প্রোগ্রামের জন্য দুটি ফাইল রাখার মতো বোকা হন তবে আপনাকে supervisorctl rereadশাস্তি হিসাবে এই হতাশার ত্রুটি বার্তাটি ছাড়বে:

    No config updates to processes
    
  3. আপনার ফাইলটি সনাক্ত করা থাকলে, supervisorctl rereadএমন কিছু বলা উচিত:

    spam: available
    
  4. তারপরে, supervisorctl update spamউভয়েরই এটি শুরু করা এবং এটি উপস্থিত হওয়া উচিত supervisorctl status


1

বিভিন্ন উবুন্টু / ডেবিয়ান সংস্করণে আমি init.d স্ক্রিপ্টগুলি অবিশ্বাস্য হতে খুঁজে পেয়েছি। এটি করার উপায়টি হ'ল:

sudo supervisorctl reload

এটি করার সঠিক উপায় নয় যদিও এটি অনেক পরিস্থিতিতে কাজ করবে। @ বুরহান-খালিদ উত্তরটি সঠিক, এবং এটির জন্য ব্যাখ্যা সরবরাহ করে।
glarrain

1

সিমলিঙ্কগুলি সম্পর্কে সতর্কতা অবলম্বন করুন এবং সুপারভাইজারে ফাইল অন্তর্ভুক্ত করুন। এটি /home/myapp/live/deploy/supervisord_live.ini এ ডাব্লু অধিকারযুক্ত যে কোনও ব্যক্তিকে ইনআই ফাইল পরিবর্তন করতে এবং কোনও দূষিত কোড শুরু করার অনুমতি দেবে। এই আইএনআই ফাইলগুলি আপনার সুপারভাইজারের কনফার্ট ডিরেক্টরিতে বা এর অধীনে থাকা কোনও সাবডিরের মধ্যে থাকা উচিত।


0

আমি ইয়াম ইনস্টল সহ সুপারভাইসরড ইনস্টল করেছিলাম যা ভার্সন ভি 2 এর সুপারভাইজার ইনস্টল করেছে * সুপারভাইজার কেবলমাত্র বাইরের সংস্করণ 3 থেকে অন্তর্ভুক্ত সমর্থন করে 3. পরিবর্তে ইজি_ইনস্টল ব্যবহার করতে হবে, সুপারভাইজার ভি 3 ইনস্টল করতে।


এটি আমার সমস্যাও ছিল, এটি সম্ভবত সমস্ত সেন্টোস 6.5 বা তার চেয়ে কম ইনস্টলের ক্ষেত্রে ঘটবে।
বিয়ারিটো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.