คำถามติดแท็ก supervisord

Supervisor เป็นระบบไคลเอนต์ / เซิร์ฟเวอร์ที่อนุญาตให้ผู้ใช้ควบคุมกระบวนการต่างๆบนระบบปฏิบัติการที่เหมือน UNIX

12
หัวหน้างานไม่โหลดไฟล์การกำหนดค่าใหม่
ฉันมีปัญหาในการปรับใช้แอพ Django โดยใช้ Gunicorn และ Supervisor ในขณะที่ฉันสามารถให้ Gunicorn ให้บริการแอปของฉัน (โดยการตั้งค่า PYTHONPATH ที่เหมาะสมและเรียกใช้คำสั่ง apropriate หนึ่งตัวจากการตั้งค่า supervisord) ฉันไม่สามารถทำให้หัวหน้างานเรียกใช้งานได้ มันจะไม่เห็นแอพของฉัน ฉันไม่ทราบวิธีการตรวจสอบให้แน่ใจว่าไฟล์ปรับแต่งนั้นใช้ได้ นี่คือสิ่งที่ supervisorctl พูดว่า: # supervisorctl start myapp_live myapp_live: ERROR (no such process) ฉันใช้งานบน Ubuntu 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 …

2
ปัญหาพอร์ตเซิร์ฟเวอร์ HTTP ของหัวหน้างาน
ฉันมีการตั้งค่าหัวหน้างานเพื่อจัดการกระบวนการบางอย่าง มันทำงานได้อย่างสมบูรณ์แบบเมื่อฉันบูตเซิร์ฟเวอร์ แต่เมื่อฉันหยุดมันและพยายามที่จะเริ่มมันอีกครั้งมันล้มเหลวและทำให้ฉันมีข้อผิดพลาดนี้ msg: * กำลังเริ่มต้นผู้จัดการ daemon ของหัวหน้า ... ข้อผิดพลาด: โปรแกรมอื่นกำลังฟังพอร์ตที่เซิร์ฟเวอร์ HTTP หนึ่งในเรากำหนดค่าให้ใช้ ปิดโปรแกรมนี้ก่อนที่จะเริ่ม supervisord สำหรับความช่วยเหลือให้ใช้ / usr / bin / supervisord -h ...ล้มเหลว! ฉันใช้งาน nginx บนพอร์ต 80 และ 4 เว็บเซิร์ฟเวอร์บนพอร์ต 8000, 8001, 8002, 8003 ไม่มีใครมีความคิดในสิ่งที่เกิดขึ้น? เมื่อฉันรีบูตทุกอย่างทำงานได้ดี

7
วิธีเริ่มต้นการควบคุมอัตโนมัติบน Linux (Ubuntu)
Supervisord ไม่ได้มาพร้อมกับสคริปต์เริ่มต้นหรือไม่ได้ระบุว่าจะเริ่มต้นอย่างไรโดยอัตโนมัติเช่น หลังจากรีบูตเครื่อง ฉันได้ลองใช้สคริปต์ /etc/init.d ที่สนับสนุนโดยผู้ใช้บางคน แต่พวกเขาทั้งหมดล้มเหลว สิ่งที่จะเป็นทางออกที่ต้องการ?

2
รับการแจ้งเตือนจากหัวหน้างานเมื่อออกจากงาน
มีวิธีใดบ้างที่supervisordสามารถรีสตาร์ทงานที่ล้มเหลว / ออก / สิ้นสุดโดยอัตโนมัติและส่งอีเมลแจ้งเตือนพร้อมกับดัมพ์ของไฟล์บันทึกการทำงาน x บรรทัดสุดท้าย?

1
ฉันจะควบคุมกลุ่มหัวหน้างานทั้งหมดในครั้งเดียวได้อย่างไร
ฉันได้กำหนดกลุ่มหัวหน้างานที่ไม่เหมือนกัน อย่างไรก็ตามฉันไม่สามารถควบคุมกลุ่มนั้นด้วยชื่อกลุ่มได้ ถ้าฉันลองฉันได้รับข้อผิดพลาดต่อไปนี้: $ supervisorctl start groupname groupname ERROR (no such process) อย่างไรก็ตามฉันสามารถควบคุมองค์ประกอบเดียวของกลุ่มตัวอย่างได้ supervisorctl start groupname:programname เป็นไปได้หรือไม่ที่จะควบคุมทั้งกลุ่มในคราวเดียว (เริ่ม / หยุด / รีสตาร์ทโปรแกรมทั้งหมดในกลุ่ม)? ถ้าเป็นเช่นนั้นได้อย่างไร

2
Supervisord: วิธีต่อท้ายที่ $ PATH
ฉันไม่สามารถหาวิธีผนวกเส้นทางเริ่มต้นในการกำหนดค่าโปรแกรม supervisord ฉันสามารถรีเซ็ตเส้นทาง: environment=PATH="/home/site/environments/master/bin" แต่เมื่อฉันลอง: environment=PATH="/home/site/environments/master/bin:$PATH" ฉันเห็น supervisord $PATHที่ไม่ได้ประเมิน Google ไม่ได้ช่วยอะไรมากในเรื่องนี้ด้วยเหตุผลบางอย่างฉันไม่อยากจะเชื่อเลยว่าฉันเป็นคนแรกที่ต้องการสิ่งนี้ Supervisord จะต้องสนับสนุนสิ่งนี้ความคิดใด ๆ

1
Supervisord - ข้อผิดพลาดไฟล์ ini บน CentOS
ฉันติดตั้ง Supervisor บน CentOS 6.5 และขณะนี้พบข้อผิดพลาดแปลก ๆ ที่ฉันไม่สามารถแก้ไขได้ ฉันสร้างsupervisord.confไฟล์ใน/etcไดเรกทอรีและผู้ควบคุมการโทรเช่นนี้: $ supervisord -c /etc/supervisord.conf ซึ่งดูพื้นฐานสวย แต่ข้อผิดพลาดนี้ยังคงปรากฏ: Error: .ini file does not include supervisord section ไฟล์ supervisord.conf ของฉันดูเหมือนว่า: [program:supervisord] command=/usr/local/bin/run_queue.sh autostart=true autorestart=true stderr_logfile=/var/log/laraqueue.err.log stdout_logfile=/var/log/laraqueue.out.log ใครบ้างรู้ว่าปัญหาคืออะไรที่นี่?

3
การควบคุมแมวตัวผู้กับหัวหน้างาน
มีวิธีการ "ปิด" แมวเหมียวปิดเมื่อควบคุมผ่านหัวหน้างานหรือไม่? ความเข้าใจของฉันคือสคริปต์การปิดระบบของ Tomcat พูดคุยกับ Tomcat ที่พอร์ตการปิดระบบเพื่อเริ่มต้นการปิดระบบที่สง่างาม ผู้ควบคุมดูเหมือนจะไม่มีวิธีระบุคำสั่ง "ปิดระบบ" โดยใช้สัญญาณเท่านั้น มีใครเคยใช้ผู้ควบคุมดูแลกับ Tomcat สำเร็จหรือไม่ นอกจากนี้เนื่องจากสคริปต์ startup.sh ของ tomcat เริ่มต้นกระบวนการ java ฉันได้คัดลอกคำสั่ง java ที่เป็นผลลัพธ์โดยตรงไปยังหัวหน้างาน แต่สิ่งนี้ไม่ดีเท่ากับการใช้สคริปต์ startup.sh เนื่องจากการตั้งค่าสภาพแวดล้อมทั้งหมด มีวิธีรับผู้ดูแลระบบให้ใช้สคริปต์ startup.sh แต่ยังคงติดตามกระบวนการ java child ที่เกิดขึ้นหรือไม่?

1
จำกัด กระบวนการที่ผู้ใช้สามารถรีสตาร์ทด้วยหัวหน้างานได้หรือไม่
ฉันใช้หัวหน้างานเพื่อจัดการกระบวนการของ Gunicorn ที่ใช้เว็บไซต์ Django แม้ว่าคำถามนี้อาจเกี่ยวข้องกับสิ่งใดก็ตามที่ถูกควบคุมโดยหัวหน้างาน ก่อนหน้านี้ฉันเป็นคนเดียวที่จัดการและใช้เซิร์ฟเวอร์ของเราและหัวหน้างานก็วิ่งตามรูทและฉันจะใช้ sudo เพื่อทำงานsupervisorctl restart myappเมื่อจำเป็น ตอนนี้เซิร์ฟเวอร์ของเราต้องรองรับผู้ใช้หลายคนที่ทำงานในไซต์ที่ต่างกันและแต่ละโครงการต้องสามารถเริ่มกระบวนการ Gunicorn ของตนเองใหม่โดยไม่สามารถรีสตาร์ทกระบวนการของผู้ใช้รายอื่น ฉันติดตามโพสต์บล็อกนี้: http://drumcoder.co.uk/blog/2010/nov/24/running-supervisorctl-non-root/ และสามารถอนุญาตให้ผู้ใช้ที่ไม่ใช่รูทใช้งาน supervisorctl แต่ตอนนี้ทุกคนสามารถรีสตาร์ทกระบวนการของผู้อื่นได้ จากรูปลักษณ์ของมันหัวหน้างานไม่มีวิธีการควบคุมการเข้าถึงแบบผู้ใช้แต่ละคน ทุกคนมีแนวคิดใด ๆ เกี่ยวกับวิธีอนุญาตให้ผู้ใช้รีสตาร์ทเฉพาะกระบวนการของตนเองโดยไม่ต้องรูท แก้ไข: บางสิ่งบางอย่างที่เราเคยคิดเกี่ยวกับการรวมถึงการเขียนสคริปต์ที่เป็นเจ้าของโดยรากกับชุดบิต SUID ที่มีอะไร แต่และวางไว้ในไดเรกทอรีของผู้ใช้ที่เป็นเจ้าของsupervisorctl restart myapp myappอินเทอร์เน็ตดูเหมือนจะบอกว่าสคริปต์ดังกล่าวไม่ปลอดภัยหากทำผิด นอกจากนี้เรายังพิจารณาการเขียนดีมอนที่กำหนดเองซึ่งรับฟังคำสั่งจากผู้ใช้เฉพาะและรีสตาร์ทกระบวนการผู้ดูแลหากผู้ใช้มีสิทธิ์ แนวคิดนี้ดูซับซ้อนเกินไปหากวิธีแก้ปัญหาที่ง่ายกว่าใช้งานได้

3
วิธีออกจากกระบวนการผู้ควบคุมงานทั้งหมดหากมีการออกด้วย 0 ผลลัพธ์
ฉันเรียกใช้คอนเทนเนอร์นักเทียบเคียงกับหัวหน้างานเช่นนี้: Dockerfile CMD ["/run.sh"] run.sh #!/usr/bin/env bash exec supervisord -n ผู้บังคับบัญชา serf.conf [group:job] programs=serf,producer [program:serf] command=/start-serf-agent.sh numprocs=1 autostart=true autorestart=unexpected stopasgroup=true killasgroup=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 start-serf-agent.sh #!/bin/bash exec serf agent --join=serf:7946 -tag role=producer ผู้บังคับบัญชา servce.conf [program:producer] command=/start.sh numprocs=1 stopasgroup=true killasgroup=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 start.sh #!/bin/bash exec /producer --project=${NAME} หลังจากที่ผู้ผลิตหยุดฉันก็มี: …

2
ฉันจะเลือกระหว่าง upstart, runit, supervisor, daemontools และอื่น ๆ เพื่อเริ่มกระบวนการใหม่ได้อย่างไรถ้ามันตาย
ฉันมีเว็บพร็อกซี่ Nginx เว็บเซิร์ฟเวอร์ Gunicorn และเว็บแอพไพ ธ อน / ขวด เห็นได้ชัดว่ากระบวนการของ Gunicorn นั้นตายไปแล้วและฉันต้องการแก้ไขให้ดีขึ้นในอนาคตโดยการค้นหายูทิลิตี้ที่สามารถตรวจสอบและเริ่มกระบวนการ Gunicorn ในกรณีที่เกิดปัญหาอีกครั้ง ฉันพบหลายอย่างที่สามารถทำงานได้: พุ่งพรวด runit ผู้ดูแล daemontools อื่น ๆ อีกมากมาย มีบทความที่ครอบคลุมที่เปรียบเทียบและแตกต่างสาธารณูปโภคต่าง ๆ ที่ใช้ในการตรวจสอบและเริ่มกระบวนการใหม่หรือไม่?

3
หัวหน้างานออกจากกระบวนการเสมอด้วย 'exit status 0; ไม่ได้คาดหวัง'
ขณะนี้ฉันกำลังสร้าง vps ขึ้นใหม่และฉันต้องการใช้หัวหน้างานเพื่อจัดการกระบวนการ gunicorn / wsgi django ของฉัน สิ่งที่ต้องทำคือหัวหน้างานออกจากกระบวนการต่อไป: 2010-07-23 14:54:40,575 INFO supervisord started with pid 31391 2010-07-23 14:54:41,582 INFO spawned: 'projectx' with pid 31395 2010-07-23 14:54:41,691 INFO exited: projectx (exit status 0; not expected) 2010-07-23 14:54:42,695 INFO spawned: 'projectx' with pid 31401 2010-07-23 14:54:42,801 INFO exited: projectx (exit status …

2
เหตุใดจึงใช้ `bash -c` ในหัวหน้างานแทนที่จะเรียกใช้สคริปต์โดยตรง
ฉันเริ่มใช้supervisordเพื่อควบคุมบริการต่างๆในเซิร์ฟเวอร์ของฉัน ฉันไม่ใช่ผู้ใช้ระดับมืออาชีพของ linux แต่สามารถใช้งานได้ดีและใช้งานได้ เพิ่งจากความอยากรู้ฉันพบว่าคำสั่งใน supervisord ส่วนใหญ่ดูเหมือนจะเรียกว่า: [program:install] command=bash -c "/src/etc/install.sh" ฉันอ่านคนทุบตีและรู้ว่า-cควรใช้เพื่อแทรกตัวแปรที่ส่งผ่านหลังจากสตริง ดังนั้นอะไรคือจุดที่ใช้bash -cในหัวหน้างาน (หรือที่อื่น ๆ ) แทนที่จะเรียกสคริปต์โดยตรง (เช่นตัวอย่างด้านล่าง) โดยพิจารณาว่าไม่มีตัวแปรที่ผ่าน / ใช้งานหรือไม่ [program:install] command=/src/etc/install.sh ขอบคุณ!

3
ล้างไดเรกทอรีด้วยไฟล์ Salt State
ฉันจะล้างไดเร็กทอรีบน salt-minion โดยใช้ไฟล์สถานะได้อย่างไร? ฉันต้องการลบ*.confไฟล์ทั้งหมด/etc/supervisord/conf.d/ก่อนที่จะตั้งค่าบริการผู้ดูแลอื่น ๆ การtop.slsกำหนดค่าต่อไปนี้ไม่มีผลกระทบ: /etc/supervisor/conf.d/*: file.absent file.remove ล้มเหลวเนื่องจากไม่พร้อมใช้งาน

1
Supervisord และ stdout / stderr
สำหรับบล็อกการกำหนดค่าโปรแกรมใน Supervisord จำเป็นต้องตั้ง stderr_logfile หรือไม่ถ้า redirect_stderr เป็นจริง stderror_logfile=/path/to/logfile/stderr.log stdout_logfile=/path/to/logfile/stdout.log redirect_stderr=true เนื่องจาก redirect_stderr เป็นจริงสิ่งนี้ควรหมายความว่า stderr.log จะว่างเปล่าและการรวมกันของ stderr และ stdout stream จะแสดงใน sdtout.log ความเข้าใจของฉันถูกต้องหรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.