การติดตั้งและกำหนดค่าหัวหน้างานบน 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 อย่างเป็นทางการ

ฝากความเห็น

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

เรียนรู้วิธีการตั้งค่า Nginx บน Ubuntu สำหรับการสตรีมวิดีโอสด HLS ด้วยคำแนะนำที่ชัดเจนและเป็นประโยชน์

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

เรียนรู้การใช้ Percona XtraBackup สำหรับการสำรองข้อมูลด้วยวิธีที่เป็นระบบและง่ายดายบน WordPress ออนไลน์ของคุณ

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