نصب و پیکربندی سرپرست در اوبونتو 16.04

Supervisor یک سیستم مشتری / سرور است که برای کنترل تعدادی از فرآیندهای UNIX ، به طور خاص فرآیندهای مربوط به یک پروژه یا مشتری استفاده می شود. به عنوان مثال ، می توانید از سرپرست برای تخم ریزی و نظارت بر تعداد دلخواه صف های کارگر برنامه وب خود استفاده کنید.

اجزای این سیستم عبارتند از:

  • ناظر: قطعه سرور سیستم.
  • supervisorctl: رابط خط فرمان که برای تعامل با سرور استفاده می شود.
  • وب سرور: یک وب سرور ساده و یک رابط کاربری وب با قابلیت های اساسی در مقایسه با سرپرست .
  • رابط XML-RPC: همان سرور HTTP که توسط کلاینت وب استفاده می شود ، رابط XML-RPC را ارائه می دهد که می تواند برای کنترل برنامه های ناظر مورد استفاده قرار گیرد.

در این آموزش به روزترین نسخه سرپرست را نصب خواهیم کرد ، چگونگی تخم ریزی و مدیریت برنامه ها را از طریق آن ، نشان می دهیم و برای مدیریت برنامه های خود supervisorctlیک رابط وب پیکربندی می کنیم.

نصب و تنظیمات اولیه

ما easy_installیک ویژگی سرپوشیده Python را از طریق سرپرست نصب خواهیم کرد .

ابتدا لیست بسته های محلی خود را به روز کنید و سپس Python را نصب کنید 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) وارد کنید. این به دلیل تغییر مسیر است. برای غلبه بر این ، به عنوان root وارد شوید.

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

راه اندازی سرور ناظر

همانطور که قبلاً اشاره شد ، سرپرست از یک سرور و مشتریانی تشکیل شده است که به آن متصل می شوند. برای اینکه بتوانیم برنامه ها را مدیریت و کنترل کنیم ، باید سرور را شروع کنیم. برای این کار ، سرور ناظر را در 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

سرویس ناظر را فعال کنید.

sudo systemctl start supervisord.service

تا زمانی که پرونده خدمات در /etc/systemd/systemدایرکتوری قرار داشته باشد ، در هنگام راه اندازی سیستم به طور خودکار شروع می شود.

می توانید وضعیت سرویس را بررسی کنید.

systemctl status supervisord.service

همچنین می توانید گزارش ها را بررسی کنید.

sudo journalctl -u supervisord.service

افزودن برنامه ها

برنامه هایی که توسط سرپرست کنترل می شوند توسط [program]بخش های مختلفی در پیکربندی ارائه می شوند. برای هر برنامه ای که می خواهیم مدیریت کنیم ، یک پرونده پیکربندی مستقل ایجاد می کنیم که مسیر اجرای دستور را ، هر متغیرهای محیطی ، نحوه انجام در صورت خاموش کردن را اطلاع می دهد.

ابتدا ، اجازه دهید یک اسکریپت ساده ایجاد کنیم که یک timestamp را ثبت کند. فایلی بنام ایجاد کنید 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

مشتری وب سرور

برای دسترسی به وب سرور ناظر ، پرونده پیکربندی ناظر را باز کنید و [inet_http_server]بخش را پیدا کنید.

nano /etc/supervisor/supervisord.conf

اکنون پیکربندی این بخش را با موارد زیر به روز کنید.

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

جایگزین کنید your_usernameو your_passwordبا اعتبار مورد نظر خود ، تغییرات خود و سرویس نظارت مجدد را دوباره ذخیره کنید.

sudo systemctl restart supervisord.service

به یاد داشته باشید که اجازه TCPدسترسی به پورت را 9001در دیوار آتش خود داده و سپس http://{server-ip}:9001از مرورگر خود دسترسی پیدا کنید. هنگامی که از شما سؤال شد ، خود usernameو password. اکنون می توانید پروسس های خود را از طریق وب کنترل کنید.

نتیجه

ما به روزترین نسخه سرور را نصب کرده ایم ، یاد گرفته ایم که چگونه آن را برای شروع خودکار سیستم با systemd پیکربندی کنید و همچنین یک استفاده اولیه از آن را مرور کردیم supervisorctl. برای پیکربندی پیشرفته تر و موارد استفاده از آن ، می توانید به اسناد رسمی سرپرست مراجعه کنید .



نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

LiteCart یک بستر سبد خرید آزاد و منبع باز است که به زبان های PHP ، jQuery و HTML 5 نوشته شده است. این نرم افزار ساده ، سبک و با کاربرد آسان است.

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.

اشتراک NFS را در Debian تنظیم کنید

اشتراک NFS را در Debian تنظیم کنید

NFS یک سیستم فایل مبتنی بر شبکه است که به رایانه ها اجازه می دهد تا از طریق شبکه رایانه ای به فایلها دسترسی پیدا کنند. این راهنما توضیح می دهد که چگونه می توانید پوشه ها را روی NF قرار دهید

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

هنگام راه اندازی سرور جدید لینوکس ، به روزرسانی سیستم های هسته و سایر بسته ها تا آخرین نسخه پایدار یک روش توصیه شده است. در این مقاله

نحوه نصب Matomo Analytics در Fedora 28

نحوه نصب Matomo Analytics در Fedora 28

با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o

یک سرور TeamTalk را در لینوکس تنظیم کنید

یک سرور TeamTalk را در لینوکس تنظیم کنید

TeamTalk یک سیستم کنفرانس است که به کاربران امکان می دهد مکالمات صوتی / تصویری با کیفیت بالا ، چت متنی ، انتقال فایل ها و صفحه های به اشتراک بگذارند. من

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

Vultr یک ویژگی را فراهم می کند که به شما امکان می دهد با ایجاد یک نمونه جدید ، کلیدهای SSH را از قبل نصب کنید. این اجازه می دهد تا به کاربر root دسترسی داشته باشید ، با این حال ، th

نحوه نصب انجمن NodeBB در FreeBSD 12

نحوه نصب انجمن NodeBB در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB

نصب و راه اندازی ZNC در اوبونتو

نصب و راه اندازی ZNC در اوبونتو

ZNC یک پیشرانه پیشرفته شبکه IRC است که تمام وقت بهم متصل می شود تا مشتری IRC بتواند بدون از دست دادن جلسه گپ قطع یا وصل شود.

نحوه نصب Ranger Terminal File Manager در لینوکس

نحوه نصب Ranger Terminal File Manager در لینوکس

رنجر یک مدیر فایل مبتنی بر خط فرمان است که دارای کلیدهای اتصال VI است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد