Python is my life !!!

پایتون

Python is my life !!!

پایتون

Python is my life !!!

برنامه نویس و طراح اپلیکیشن های تحت وب و مسلط به پایتون، جاوا اسکریپت، html، css، Angularjs و فریمورک Flask هستم ...

طبقه بندی موضوعی
بایگانی

۱ مطلب با موضوع «Supervisor» ثبت شده است

در این آموزش یاد خواهیم گرفت که چطور پروسس ها را در اوبونتو کنترل و مدیریت کنیم اما اگر از سایر توزیع های لینوکس استفاده میکنید نگران نباشید چون تفاوت چندانی با سایر توزیع های لینوکس ندارد، برای انجام این کار از supervisor استفاده خواهیم کرد، در حقیقت نام supervisor بسیار با قابلیت های آن سازگار است، برای مثال اگر سرور شما به صورت ناگهانی ریستارت شود بعد از شروع مجدد سرور به کار، supervisor به سرعت پروسس مورد نظر شما را دوباره اجرا خواهد کرد یا شما میتوانید آن را به صورتی تنظیم نمایید که اگر پروسس شما به هر دلیلی متوقف شد بدون اینکه شما اینکار را انجام دهید supervisor مجددا برنامه ی شما را Run کند.

سراغ نصب و اجرای supervisor می رویم، برای استفاده از supervisor ابتدا باید آن را نصب نمایید.

sudo apt-get install supervisor

در مرحله ی بعد virtualenv را نصب می نماییم (اختیاری):

sudo apt-get install virtualenv

در این مرحله فایلی به نام start.sh ساخته و آن را در مسیر فرضی root/start.sh را ذخیره میکنیم و محتویاتی مشابه محتویات زیر در آن قرار خواهیم داد، شما میتوانید بر اساس موارد مورد نیاز خود اطلاعات این فایل را ویرایش نمایید.

#!/bin/bash
echo 'Activating virtual env...'
. /root/.venv/bin/activate
echo 'Staring project'
python3 /root/app.py
echo 'Project running'

در خط سوم ابتدا virtualenv فعال شده و در خط پنجم برنامه مورد نظر ما اجرا خواهد شد و بقیه خطوط که ابتدای آن ها echo قرار داده شده به معنای چاپ کردن خطوط مورد نظر است تا در خروجی نمایش داده شوند.

سپس یک کد پایتون با محتویات زیر به نام app.py در همان مسیر ایجاد می کنیم:

from time import sleep
print('Runing my app')
num = 0
while True:
    sleep(3)
    print('num:', i)
    num += 1

همانطور که می بینید کد مورد نظر از یک حلقه ی بی نهایت تشکیل شده است که هر سه ثانیه عددی را چاپ می کند.

سپس به مسیر زیر رفته و فایلی به نام myapp.conf (نام فایل اختیاری است) می سازیم:

cd /etc/supervisor/conf.d/
sudo nano myapp.conf

و محتویات زیر را در آن قرار می دهیم:

[program:myapp]
command=/bin/bash /root/start.sh
autostart=true
autorestart=true
startretries=3
stderr_logfile=/root/myapp.err.log
stdout_logfile=/root/myapp.out.log

 

  1. نام برنامه می باشد که ما از myapp استفاده کرده ایم و کاملا اختیاری است.
  2. دستوری که برنامه ی مورد نظر ما را اجرا می کند.
  3. دو حالت true و false دارد و اگر true باشد با بوت شدن سیستم عامل پروسس مورد نظر به صورت اتوماتیک اجرا می شود.
  4. دو حالت true و false دارد و اگر true باشد در صورت وجود مشکل پروسس مورد نظر به صورت اتوماتیک دوباره اجرا می شود.
  5. تعداد تلاش هایی که درصورت ناموفق بودن اجرای برنامه انجام می شود.
  6. مسیر فایلی که error های برنامه در آن نوشته میشود.
  7. مسیر فایلی که خروجی برنامه در آن نوشته میشود.

سپس دستورات زیر را وارد نمایید:

sudo supervisorctl reread
sudo supervisorctl update

در آخر برای چک کردن خروجی برنامه میتوانید از دستور زیر:

sudo supervisorctl tail -f myapp stdout

و برای مشاهده error های برنامه از این دستور استفاده نمایید:

sudo supervisorctl tail -f myapp stderr

در صورت مشکل و نمایش داده نشدن خروجی برنامه (قسمت های print شده) در stdout میتوانید مطلب زیر را مطالعه نمایید:
حل مشکل print خروجی برنامه های پایتون در stdout

 

  • Saeid