پر شدن صف ایمیل WHM با ایمیل‌های روت

گاها ممکنه روی سرور سی‌پنلی شما ارسال و دریافت ایمیل با تاخیر زیادی انجام بشه. یا حتی ممکنه بدون این که اکانت مشکل‌سازی روی سرور داشته باشید که ارسال ایمیل اسپم انجام بده IP سرورتون بلک لیست بشه، در چنین مواردی طبعا اولین کاری که می‌کنید باید به صف ایمیل (Mail Queue Manager) تو پنل WHM مراجعه کنید که ببینید چه خبره.

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

ادامه خواندن پر شدن صف ایمیل WHM با ایمیل‌های روت

خطای edquota: Quota write failed در سی‌پنل

به جرئت می‌شه گفت cPanel کاربرپسندترین و قدرتمندترین کنترل‌پنل میزبانی وب هست. اما گاها اشکالاتی به این کنترل‌پنل ارزنده وارد می‌شه، مثلا حجم دیسک مصرفی اکانت‌ها به درستی نمایش داده نمی‌شه. خب خود سی‌پنل برای رفع این اشکالات عموما اسکریپت‌هایی ارائه داده. اسکریپتی که برای رفع اشکالات مصرف دیسک اکانت‌ها توی سی‌پنل تعریف شده با دستور زیر اجرا می‌شه.

/scripts/fixquotas

امروز که قصد داشتم با اجرای این اسکریپت مشکلات حجم اکانت‌های یکی از سرورها رو حل کنم، مع‌الاسف در اقدامی غیرمنتظره با صحنه زیر مواجه شدم.

Installing Default Quota Databases......Done
journaled quota support: kernel supports, user space tools supports (available)
checking out /backup
checking out /backup
Quotas have been enabled and updated.
Reading package for 1G
Resetting quota for user1 to 1024 M
edquota: Quota write failed (id 511): Invalid argument
Reading package 2G
Resetting quota for user2 to 2048 M
edquota: Quota write failed (id 518): Invalid argument
Reading package 3G
Resetting quota for user3 to 3072 M
edquota: Quota write failed (id 521): Invalid argument
Resetting quota for user4 to 3072 M
edquota: Quota write failed (id 515): Invalid argument
Resetting quota for user5 to 1024 M
......
ادامه خواندن خطای edquota: Quota write failed در سی‌پنل

بش اسکریپت خواندن خط به خط محتویات یک فایل

بیاید اینطور در نظر بگیریم که من روی یک سرور وب سی‌پنلی یک فایل متنی دارم که تو هر خطش اسم یکی از یوزرای اون سرور درج شده، من می‌خوام از این اکانت‌ها بکاپ بگیرم. خب یه راهش اینه که بشینم برای تک تک یوزرها اسکریپت بکاپ سی‌پنل رو اجرا کنم. مثلا برای بکاپ گرفتن از یوزر admin دستور زیر رو اجرا کنم.

/scripts/pkgacct admin

انجام این کار شاید برای یک، دو، پنج یا ده تا یوزر زیاد سخت نباشه، اما اگر ۲۰۰ تا یوزر داشته باشیم چطور؟ آیا باید بشینیم از تک تک اکانت‌ها بکاپ بگیریم؟ طبعا نه! نه عمر ما انقدر طولانیه که برای این چیزهای پیش پا افتاده وقت این چنینی بذاریم و نه دنیای لینوکس اونقدر محدوده که نتونه راهی جلوی ما بذاره که این کار رو توسط اتوماسیون انجام بدیم.

ادامه خواندن بش اسکریپت خواندن خط به خط محتویات یک فایل

ایجاد کامند اختصاصی در لینوکس

گاها ممکنه به هر دلیلی بخواید روی سیستم عامل لینوکس‌تون کامندهای اختصاصی داشته باشید. خب ما می‌دونیم یک سری دستورات توی کرنل لینوکس هستند، مثل دستور ls که لیست فایل‌ها و دایرکتوری‌های موجود در یک دایرکتوری رو به شما نشون می‌ده. یا یک سری دستورات بعد از نصب یک سری از برنامه‌ها برای شما اضافه می‌شن، مثل دستور ls که بعد از نصب برنامه‌ای تحت همین عنوان (sudo apt install ls) به سیستم عامل شما اضافه می‌شه و در صورتی که اجرا بشه، قطار در حال حرکتی صفحه ترمینال شما رو مزین می‌کنه.

حالا من می‌خوام دستوراتی داشته باشم که کارهایی رو برای من انجام بدن. کارهایی رو که خودم مدنظر دارم، با دستوراتی که خودم تعیین کردم. هدف از انجام این کار طبیعتا صرفه‌جویی در زمان انجام کارها برای ما هست.

خب، چطور این کار رو انجام بدم؟

ادامه خواندن ایجاد کامند اختصاصی در لینوکس

شل اسکریپت بکاپ از دیتابیس‌های MySQL

لکن اگر نیاز به اسکریپتی دارید که بتواند از همه دیتابیس‌هاس MySQL یک سرور بکاپ بگیرد می‌توانید از اسکریپت زیر استفاده نُمایید.

 #! /bin/bash
 
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/backup/dbs"
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump

mkdir -p "$BACKUP_DIR/$TIMESTAMP"
 
databases=`$MYSQL -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
 
for db in $databases; do
  $MYSQLDUMP --force --opt -u root --databases $db | gzip > "$BACKUP_DIR/$TIMESTAMP/$db.gz"
done

find $BACKUP_DIR/* -type d -ctime +29 -exec rm -rf {} \;

echo Databases Backup Task Completed On $HOSTNAME

کار این اسکریپت این هست که از همه دیتابیس‌های MySQL بکاپ گرفته، با فرمت gz فشرده‌سازی کرده و در مسیر زیر نگهداری می‌کند.

/backup/dbs

هربار اسکریپت اجرا می‌شه دیتابیس‌های دامپ شده در یک دایرکتوری که نام اون تاریخ روز اجرای اسکریپت هست ذخیره می‌شن.

همچنین لاین زیر هم بدین منظور بکار رفته که بکاپ‌هایی که 30 روز یا بیشتر از زمان ایجادشون گذشته حذف بشن تا خدای‌ناکرده مشکل کمبود فضای دیسک هم ایجاد نشه.

find $BACKUP_DIR/* -type d -ctime +29 -exec rm -rf {} \;

مشکل لود نشدن کامل دکمه ذخیره در پرستاشاپ

به زعم بنده برای ملت شریف آریایی پرستاشاپ بهترین سیستم رایگان مدیریت محتوای سایت‌های فروشگاهیه. اما مشکلی که تو خیلی از سایت‌های پرستاشاپی روی نسخه 1.6 این سیستم دیدم در حالت لودینگ موندن دکمه ذخیره هنگام اضافه یا ویرایش محصول هست.

این که چرا این مشکل ایجاد می‌شه دلایل مختلفی داره که خب بماند برای وقتی که بررسی دقیق‌تری روی این موضوع کردم، لکن یک راه حل نه چندان منطقی اما کارآمد برای رفعش هست.

ادامه خواندن مشکل لود نشدن کامل دکمه ذخیره در پرستاشاپ

شناخته نشدن آدرس localhost برای اتصال به دیتابیس

در جمعه‌ای که گذشت با یک مشکل عجیب مواجه شدم! یهو مانیتورینگ اعلام کرد یکی از سرورها داون شده. از اونجایی که مانیتورینگ ما یک آدرس رو چک می‌کنه که توی اون یک کانکشن به دیتابیس زده می‌شه و در صورتی که ارتباط برقرار بشه، سرور رو آپ در نظر می‌گیره چون سرور در دسترس بود اولین احتمالی که دادم استاپ شدن سرویس دیتابیس mysql سرور بود. تعجبم وقتی بیشتر شد که به سرور متصل شدم و دیدم که mysql آپ هست و بدون مشکل داره کار می‌کنه.

خطای فایل php مانیتورینگ رو چک کردم بصورت زیر بود.

mysqli_connect(): (HY000/2002): No such file or directory i
n /home/...

همه سایت‌هایی که اتصال به دیتابیس داشتن هم خطای دیتابیس می‌دادن (ژانر وحشت). با سرچ خطا تو گوگل و خوندن یکی دو تا تجربه مشابه، متوجه شدم که علت بروز خطا این هست که عبارت localhost به عنوان سرور دیتابیس شناخته نمی‌شه و اگر به جای این عبارت آدرس لوکال یعنی 127.0.0.1 رو قرار بدم خطا رفع می‌شه (الله اکبر)

ادامه خواندن شناخته نشدن آدرس localhost برای اتصال به دیتابیس