سه شنبه, 02 خرداد 1396 12:08

ایجاد سرویس در سرور لینوکس (اوبونتو)

نوشته شده توسط
این مورد را ارزیابی کنید
(0 رای‌ها)

در صورتی که بخواهید عملیات یا قسمتی از نرم افزار خود را به صورت مداوم یا در بازه های زمانی مختلف بر روی سرور لینوکس خود اجرا کنید، کافیست یک سرویس (daemon) در لینوکس خود تعریف و تنظیم کنید. دستورات سرویس می تواند دستورات شل یا پایتون یا هر زیان دیگری باشد. در این مطلب یک سرویس برای ایجاد بک آپ از دیتابیس با استفاده از کدهای پایتون، ایجاد می کنیم.

در ادامه پیاده سازی یکی از پروژه های تیمی، نیاز به اجرای خودکار و مداوم یک سری فرایندها مانند ایجاد بک آپ از دیتابیس یا ارسال و دریافت اطلاعات به/از سرور خارجی داشتیم. همانند سرورهای ویندوز، برای سرور لینوکس (نسخه و توزیع لینوکس استفاده شده، توزیع اوبونتو سرور نسخه 16.4 است) امکان ایجاد سرویس که daemon نامیده می شوند وجود دارد و تقریبا کار ساده ای است. برای قسمت یک آپ گیری از دیتابیس به دو قسمت یا دو فایل نیاز خواهیم داشت:

۱- فایل حاوی دستورات اجرایی

۲- فایل تعریف سرویس

برای ایجاد فایل یک، از زبان پایتون برای ایجاد بک آپ از دیتابیس و ذخیره آنها استفاده می کنیم. می توانید این فایل را در هر دایرکتوری دلخواهی قرار بدهید. دستورات زیر، عملیات ایجاد و ذخیره بک آپ را انجام می دهند:

 

#!/usr/bin/python3
import os
import time
import datetime

def create_backup():
	DB_HOST = 'localhost'
	DB_USER = 'نام کاربر دیتابیس'
	DB_USER_PASSWORD = 'کلمه عبور دیتابیس'
	DB_NAME = 'نام دیتابیس'
	target_dir = "ادرس دایرکتوری برای ذخیره فایل های بک آپ"
	DATETIME = time.strftime('%m%d%Y-%H%M%S')
	if not os.path.exists(target_dir):
		os.makedirs(target_dir)

	db = DB_NAME
	dumpcmd = "mysqldump -u " + DB_USER + " -p" + DB_USER_PASSWORD + " " + db + " > " + target_dir + "/" + db + "-" + DATETIME + ".sql"
	os.system(dumpcmd)


while 1:
	create_backup()
	time.sleep(12*60*60)
	pass

 

کدهای بالا را در یک مسیر دلخواه مثلا دایرکتوری home ذخیره می کنیم. قبل از ادامه باید امکان اجرای این فایل را ست کنیم به عبارت دیگر دسترسی اجرای این فایل را تنظیم کنیم:

sudo chmod +x auto_backup.py

در مرحله بعدی باید سرویس جدید را برای اجرای خودکار (یا سایر تنظیمات) برای سیستم عامل تعریف کنیم. برای این کار یک فایل با نام auto_backup.service یا هر نام دیگری (البته با پسوند service) در مسیر زیر ایجاد کنید:

/lib/systemd/system/auto_backup.service

و کدهای زیر را در آن بنویسید:

[Unit]
Description=My Auto Backup

[Service]
Type=simple
ExecStart=/home/.../auto_backup.py

[Install]
WantedBy=multi-user.target

فراموش نکنید که نام و ادرس دقیق فایل اجرایی (در این مورد فایل حاوی دستورات پایتون ما) را در مقابل فیلد ExecStart وارد کنید. و در نهایت دستور زیر را برای اعمال حق دسترسی مناسب به فایل سرویس، اجرا کنید:

sudo chmod 664 /lib/systemd/system/auto_backup.service

سرویس جدید تعریف شد. دستورات زیر را در ترمینال اجرا کنید:

sudo systemctl daemon-reload
sudo systemctl enable auto_backup.service
sudo systemctl start auto_backup

در هر زمان می توانید از دستورات زیر برای توقف سرویس یا اگاهی از وضعیت سرویس، استفاده کنید:

sudo systemctl start auto_backup
sudo systemctl stop auto_backup
sudo systemctl status auto_backup

 

خواندن 250 دفعه آخرین ویرایش در سه شنبه, 02 خرداد 1396 12:40
محتوای بیشتر در این بخش: « اپن سورس فروشی نیست!

نظر دادن

Make sure you enter all the required information, indicated by an asterisk (*). HTML code is not allowed.