การติดตั้งและกำหนดค่าหัวหน้างานบน Ubuntu 16.04

Supervisor เป็นระบบไคลเอนต์ / เซิร์ฟเวอร์ที่ใช้ในการควบคุมกระบวนการ UNIX จำนวนกระบวนการที่เฉพาะเจาะจงมากขึ้นที่เกี่ยวข้องกับโครงการหรือลูกค้า ตัวอย่างเช่นคุณสามารถใช้หัวหน้างานเพื่อวางไข่และตรวจสอบจำนวนคิวงานของเว็บแอปพลิเคชันของคุณโดยพลการ

ส่วนประกอบของระบบนี้คือ:

  • supervisord:ส่วนเซิร์ฟเวอร์ของระบบ
  • supervisorctl:อินเตอร์เฟสบรรทัดคำสั่งที่ใช้เพื่อโต้ตอบกับเซิร์ฟเวอร์
  • เว็บเซิร์ฟเวอร์:เว็บเซิร์ฟเวอร์ที่เรียบง่ายและมีอินเตอร์เฟซผู้ใช้เว็บที่มีการทำงานขั้นพื้นฐานเมื่อเทียบกับsupervisorctl
  • อินเตอร์เฟส XML-RPC:เซิร์ฟเวอร์ HTTP เดียวกับที่ใช้โดยเว็บไคลเอ็นต์ทำหน้าที่อินเตอร์เฟส XML-RPC ที่สามารถใช้เพื่อควบคุมโปรแกรมผู้ดูแล

ในบทช่วยสอนนี้เราจะติดตั้งผู้ควบคุมเวอร์ชันที่ทันสมัยที่สุดสาธิตวิธีวางไข่และจัดการโปรแกรมผ่านsupervisorctlและกำหนดค่าเว็บอินเตอร์เฟสเพื่อจัดการโปรแกรมของเรา

การติดตั้งและการกำหนดค่าพื้นฐาน

เราจะติดตั้งผู้ควบคุมผ่านeasy_installซึ่งเป็นคุณสมบัติของ setuptools ของงูใหญ่

setuptoolsครั้งแรกที่ปรับปรุงรายการแพคเกจในท้องถิ่นของคุณและติดตั้งหลาม

sudo apt-get update && sudo apt-get install python-setuptools

ตอนนี้เราสามารถติดตั้งผู���ควบคุม

sudo easy_install supervisor

เมื่อการติดตั้งเสร็จสิ้นเราต้องสร้างไฟล์กำหนดค่าของเรา สร้างโฟลเดอร์ชื่อภายในsupervisor/etc

sudo mkdir /etc/supervisor

จากนั้นดำเนินการดังต่อไปนี้

echo_supervisord_conf >  /etc/supervisor/supervisord.conf

หากคุณไม่ได้ลงชื่อเข้าใช้ด้วยrootผู้ใช้คุณอาจได้รับPermission deniedข้อผิดพลาด (แม้จะเป็นsudo) นี่เป็นเพราะการเปลี่ยนเส้นทาง หากต้องการเอาชนะสิ่งนี้ให้ลงชื่อเข้าใช้ด้วยรูท

sudo su

จากนั้นคุณสามารถเรียกใช้คำสั่งอีกครั้ง

echo_supervisord_conf > /etc/supervisor/supervisord.conf

ตอนนี้คุณสามารถปล่อยให้rootผู้ใช้ด้วยexitคำสั่ง echo_supervisord_confคำสั่งถูกจัดให้โดยการติดตั้งผู้บังคับบัญชาของเรา

การกำหนดค่าพื้นฐาน

เปิด/etc/supervisor/supervisord.confไฟล์และตรวจสอบเนื้อหา คุณจะทราบว่าไฟล์การกำหนดค่านี้เป็นไปตามINIไวยากรณ์และจะถูกแบ่งออกเป็นส่วน ๆ (แสดงโดยวงเล็บเช่นเดียวกับใน[section-name])

ในการเพิ่มโปรแกรมที่จะจัดการโดยหัวหน้างานเราเพียงแค่ต้องสร้าง[program]ส่วนที่เหมาะสม อย่างไรก็ตามเพื่อหลีกเลี่ยงการสับสนกับไฟล์กำหนดค่าหลักทุกครั้งที่เราต้องการเพิ่ม (หรือเปลี่ยนแปลง) โปรแกรมเราจะใช้[include]ส่วนนี้ ค้นหาส่วนนี้ยกเลิกการใส่เครื่องหมายข้อคิดเห็นจากนั้นแก้ไขเพื่อให้มีลักษณะดังต่อไปนี้

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

ตอนนี้สำหรับแต่ละโปรแกรมที่เราต้องการเพิ่มเราจะสร้าง.iniไฟล์ใน/etc/supervisor/conf.d/ไดเรกทอรี ให้สร้างโฟลเดอร์นี้

sudo mkdir /etc/supervisor/conf.d

การสตาร์ทเซิร์ฟเวอร์ supervisor

ตามที่ระบุไว้ก่อนหน้านี้หัวหน้างานประกอบด้วยเซิร์ฟเวอร์และลูกค้าที่เชื่อมต่อกับมัน เพื่อให้สามารถจัดการและควบคุมโปรแกรมเราต้องเริ่มเซิร์ฟเวอร์ ในการดำเนินการดังกล่าวเราจะทำการลงทะเบียนเซิร์ฟเวอร์ supervisor ในsystemdเพื่อให้เซิร์ฟเวอร์อาจเริ่มทำงานเมื่อเริ่มต้นระบบ

ในการทำเช่นนั้นให้สร้างไฟล์ชื่อsupervisord.serviceใน/etc/systemd/systemไดเรกทอรี

sudo touch /etc/systemd/system/supervisord.service

เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์

[Unit]
Description=Supervisor daemon
Documentation=http://supervisord.org
After=network.target

[Service]
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/local/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
Alias=supervisord.service

เปิดใช้งานบริการ supervisord

sudo systemctl start supervisord.service

ตราบใดที่ไฟล์บริการอยู่ใน/etc/systemd/systemไดเรกทอรีมันจะเริ่มโดยอัตโนมัติเมื่อระบบเริ่มต้น

คุณสามารถตรวจสอบสถานะของบริการ

systemctl status supervisord.service

นอกจากนี้คุณสามารถตรวจสอบบันทึก

sudo journalctl -u supervisord.service

กำลังเพิ่มโปรแกรม

โปรแกรมที่ควบคุมโดยหัวหน้างานจะได้รับจาก[program]ส่วนต่างๆ ในการกำหนดค่า สำหรับแต่ละโปรแกรมที่เราต้องการจัดการเราจะสร้างไฟล์การตั้งค่าแบบสแตนด์อโลนแจ้งเส้นทางคำสั่งปฏิบัติการตัวแปรสภาพแวดล้อมใด ๆ วิธีดำเนินการในกรณีที่ปิดเครื่อง

ก่อนอื่นเรามาสร้างสคริปต์ง่ายๆที่บันทึกการประทับเวลา สร้างไฟล์ชื่อhello_supervisor.sh(ทุกที่ที่คุณต้องการเราจะอ้างอิงเส้นทางแบบเต็มของสคริปต์นี้)

touch hello_supervisor.sh

ตอนนี้ใส่เนื้อหาต่อไปนี้ลงไป

#!/bin/bash
while true
do 
    # Echo current timestamp to stdout
    echo Hello Supervisor: `date`
    # Echo 'error!' to stderr
    echo An error ocurred at `date`! >&2
    sleep 1
done

ตอนนี้ทำให้มันปฏิบัติการได้

chmod +x hello_supervisor.sh

ในทางปฏิบัติสคริปต์นี้ไม่มีประโยชน์อะไรมาก อย่างไรก็ตามเราสามารถใช้มันเพื่อแสดงพลังของหัวหน้างาน สร้างไฟล์คอนฟิกูเรชันที่สอดคล้องกันโดยรันต่อไปนี้

sudo touch /etc/supervisor/conf.d/hello_supervisor.conf

ตอนนี้ใส่เนื้อหาต่อไปนี้ลงในไฟล์นี้

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

หมายเหตุ: โปรดแทนที่USERด้วยชื่อผู้ใช้ของคุณ

เราจะตรวจสอบการกำหนดค่านี้ทีละขั้นตอน

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh

ประการแรกการกำหนดค่าเริ่มต้นด้วยการกำหนดโปรแกรมของชื่อhello_supervisor นอกจากนี้ยังแจ้งเส้นทางแบบเต็มของการปฏิบัติการที่จะเรียกใช้

autostart=true

บรรทัดนี้ระบุว่าโปรแกรมนี้ควรเริ่มโดยอัตโนมัติเมื่อผู้ดูแลเริ่มต้นขึ้น

autorestart=true

หากโปรแกรมหยุดทำงานด้วยเหตุผลใดก็ตามบรรทัดนี้จะแจ้งให้หัวหน้างานทราบเพื่อเริ่มกระบวนการใหม่โดยอัตโนมัติ

stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

บรรทัดเหล่านี้กำหนดตำแหน่งไฟล์บันทึกสำหรับstderrและstdoutตามลำดับ

การจัดการโปรแกรม

ตอนนี้เราได้ติดตั้งและกำหนดค่าหัวหน้างานแล้วเราสามารถจัดการกระบวนการของเราได้

หลังจากเพิ่มโปรแกรมใหม่เราควรรันคำสั่งสองคำสั่งต่อไปนี้เพื่อแจ้งให้เซิร์ฟเวอร์ทำการอ่านไฟล์การกำหนดค่าอีกครั้งและใช้การเปลี่ยนแปลงใด ๆ

sudo supervisorctl reread
sudo supervisorctl update

ตอนนี้รันsupervisorctlไคลเอนต์

sudo supervisorctl

คุณจะได้รับการต้อนรับด้วยรายการการลงทะเบียนที่สำเร็จ คุณจะเห็นการเข้าถึงที่เรียกhello_supervisorพร้อมกับRUNNINGสถานะ

hello_supervisor                 RUNNING   pid 6853, uptime 0:22:30
supervisor>

พิมพ์helpสำหรับรายการคำสั่ง avaialable

supervisor> help

default commands (type help <topic>):
=====================================
add    exit      open  reload  restart   start   tail   
avail  fg        pid   remove  shutdown  status  update 
clear  maintail  quit  reread  signal    stop    version

สรุปเราสามารถstart, stopและrestartโปรแกรมโดยผ่านชื่อโปรแกรมเป็นอาร์กิวเมนต์กับคำสั่งที่เกี่ยวข้อง

supervisor> stop hello_supervisor 
hello_supervisor: stopped
supervisor> start hello_supervisor 
hello_supervisor: started
supervisor> restart hello_supervisor 
hello_supervisor: stopped
hello_supervisor: started
supervisor> 

นอกจากนี้เรายังสามารถดูผลลัพธ์ของโปรแกรมด้วยtailคำสั่ง

supervisor> tail hello_supervisor 
Hello Supervisor: Mon Sep 25 19:27:29 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:30 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:31 UTC 2017

สำหรับstderrเอาต์พุตคุณสามารถใช้tailเช่นกัน

supervisor> tail hello_supervisor stderr
An error ocurred at Mon Sep 25 19:31:12 UTC 2017!
An error ocurred at Mon Sep 25 19:31:13 UTC 2017!
An error ocurred at Mon Sep 25 19:31:14 UTC 2017!

โดยเรียกใช้statusคำสั่งคุณสามารถดูสถานะของโปรแกรมที่ลงทะเบียนทั้งหมด

เมื่อเสร็จแล้วคุณสามารถออกจาก

supervisor> quit

ไคลเอนต์เว็บเซิร์ฟเวอร์

หากต้องการอนุญาตการเข้าถึงเว็บเซิร์ฟเวอร์ supervisord ให้เปิดไฟล์การกำหนดค่า supervisord และค้นหา[inet_http_server]ส่วน

nano /etc/supervisor/supervisord.conf

ตอนนี้อัปเดตการกำหนดค่าส่วนนี้ด้วยต่อไปนี้

[inet_http_server]
port=*:9001
username=your_username
password=your_password

แทนที่your_usernameและyour_passwordมีสิทธิที่คุณต้องการบันทึกการเปลี่ยนแปลงและการบริการเริ่มต้นใหม่ supervisord ของคุณ

sudo systemctl restart supervisord.service

อย่าลืมอนุญาตให้TCPเข้าถึงพอร์ต9001ในไฟร์วอลล์ของคุณจากนั้นเข้าถึงhttp://{server-ip}:9001จากเบราว์เซอร์ของคุณ เมื่อถามว่าให้ของคุณและusername passwordตอนนี้คุณสามารถควบคุมความสำเร็จของคุณจากเว็บ

ข้อสรุป

เราได้ติดตั้งรุ่นขึ้นไปวันที่มากที่สุดของ supervisord เรียนรู้วิธีการกำหนดค่าระบบอัตโนมัติเริ่มต้นด้วย systemd supervisorctlและทบทวนการใช้งานขั้นพื้นฐานของ สำหรับการตั้งค่าและการใช้งานที่สูงขึ้นกรณีที่คุณอาจจะหมายถึงเอกสาร supervisord อย่างเป็นทางการ



Leave a Comment

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true

ภาวะเอกฐานทางเทคโนโลยี: อนาคตอันห่างไกลของอารยธรรมมนุษย์?

ภาวะเอกฐานทางเทคโนโลยี: อนาคตอันห่างไกลของอารยธรรมมนุษย์?

ในขณะที่วิทยาศาสตร์มีวิวัฒนาการไปอย่างรวดเร็ว โดยรับช่วงต่อความพยายามของเราอย่างมาก ความเสี่ยงในการทำให้ตัวเองตกอยู่ในภาวะภาวะเอกฐานที่อธิบายไม่ได้ก็เพิ่มขึ้นเช่นกัน อ่านว่าภาวะเอกฐานอาจมีความหมายสำหรับเราอย่างไร

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ผลกระทบของปัญญาประดิษฐ์ในการดูแลสุขภาพ 2021

ผลกระทบของปัญญาประดิษฐ์ในการดูแลสุขภาพ 2021

AI ในการดูแลสุขภาพได้ก้าวกระโดดอย่างมากจากทศวรรษที่ผ่านมา ดังนั้นอนาคตของ AI ในการดูแลสุขภาพจึงยังคงเติบโตทุกวัน