اموزش راه اندازی aapanel از ابتدا

ابتدا به سرور ssh زده این دستورات را وارد میکنیم

apt update

apt upgrade

وارد صفحه اینستالیشن aapanel میشیم: لینک

Copy script را زده و در سرور وارد میکنیم.

بعد از نصب با دستور bt میتونیم گزینه های تنظیمات aapanel رو ببینیم.

سپس با ادرس و یوزر پسوردی که در انتها بهمون داده وارد پنل میشیم

سپس با ایمیلمون مجید پلاس تو محیط پنل لاگین میکنیم

سپس وارد بخش settings شده و مقادیر

Panel user

Panel password

Panel port

Security Entrance

را مطابق انچه که میخواهیم تغییر میدیم

نکته مهم: مقدار پورت پنل را حتما باید توسط دستور bt در سرور لینوکس تغییر بدیم در غیراین صورت پورت پنل توسط فایروال باز نمیشود و امکان ورود نداریم.

وارد پنل میشیم و این پلاگین هارو با این ورژن ها نصب میکنیم:

Nginx 1.24.0

MySQL 5.7.43

PHP-8.2

Pure-Ftpd 1.0.49

phpMyAdmin 5.2

Google Drive 2.4

Mail Server 4.6

Dns Manager 3.6

Linux Tools 2.2

حالا وارد بخش Database شده و add database میزنیم(این مورد از بخش website و سپس add site هم قابل ساخته)

حالا وارد بخش website شده و add site میزنیم:

هر دوحالت دامنه سایت را به این حالت وارد میکنیم:

lib2023.site

www.lib2023.site

- حالا وارد بخش app store شده و وارد تنظیمات php شده و مقدار limit of timeout رو از 100 به هرچقدر که خواستیم مثلا 500 افزایش میدیم.

نکته اگر اینکار و کار زیرو نکنیم هنگام ایمپورت جداول سنگین در phpmyadmin به دیتابیس ارور تایموت و... دریافت میکنیم.

- وارد پوشه phpmyadmin\config.inc.php شده و این مقدار را به انتهای پوشه اضافه میکنیم: $cfg['ExecTimeLimit'] = 0; لینک

خطایی که هنگام اولین ورود به phpmyadmin پایین صفحه میدرو بنویسیم و...

آپدیت:

بعد از مدت ها با دیتابیس Redis آشنا شدیم و باعث شد بار روی سرور بسیار کمتر بشه.

برای استفاده از این دیتابیس پلاگین Redis رو از داخل پنل نصب میکنیم.

سپس وارد تنظیمات پلاگین php که در مرحله قبل نصب کردیم میشم و از بخش install extentions پلاگین redis رو انتخاب کرده و نصب میکنیم.

آپدیت - اموزش راه اندازی Mail server با PhpMailer در Aapanel

1404/02/26:

برای راه اندازی ایمیل باید مطابق این ویدیو (لینک) میل سرور روی سرور نصب بشه و موارد گفته شده در ویدیو به dns های کلادفلر اضافه بشه.

بعد از انجام کارهای گفته شده در لینک ویدیو اموزشی بالا همه موارد اوکی میشه ولی PTR میمونه.

برای اینکه PTR هم فعال بشه و بتونیم با کدهای php ایمیل ارسال کنیم باید وارد پنل سرورمون در پارس پک شده سپس وارد قسمت سرور ابری میشیم و تنظیمات شبکه رو انتخاب میکنیم. سپس از پایین صفحه rDNS رو انتخاب میکنیم و ادرسش رو mail.lib2023.site میزاریم.

rDNS مخفف PTR (Reverse DNS) هست.

بعد PTR هم از داخل aapanel فعال میشه.

برای دامنه mail.lib2023.site هم از داخل خود پنل ssl از نوع lets encrypt میگیریم. سپس وارد بخش Mail Server در پنل Aapanel میشیم و وارد تب Mail Domain شده و دامنه مون به اسم lib2023.site که در ویدیو اموزشی یوتیوب dns هاشو به کلادفلر اضافه کرده بودیم یک بخش جلوش نوشته SSL . روش کلیک میکنیم و مقدار Private key (KEY) و Certificate (CRT/PEM) دامنه mail.lib2023.site که گرفته بودیم رو اینجا وارد میکنیم. حالا ssl این دامنه هم درست میشه. ( توجه، این بخش جلوش نوشته lib2023.site اما باید مقدار ssl که برای دامنه mail.lib2023.site وارد کنیم.

همچنین در همین صفحه وارد تب Mailboxes شده و یک ایمیل مثلا admin@lib2023.site با رمز عبور میسازیم.

همچنین در Mail Server -> other settings باید برسی کنیم که همه سرویس ها یعنی Dovecot و Rspamd و Postfix در حال اجرا باشن و درصورتی که درحال اجرا نبود هر سرویس رو ریستارت کنیم خودش اجرا میشه.

نکته: اگر هنگام ارسال ایمیل از بخش لاگ های mail server خطاهایی داد احتمالا باید از همین قسمت other setting در تنظیمات post fix مقدار myhostname رو برابر ادرس سایت که در php mailer ثبت کردیم یعنی برابر lib2023.site قرار بدیم.

حالا به لینک گیتهاب کتابخانه php mailer یعنی این لینک میریم وآخرین نسخه رو کدهاشو دانلود میکنیم.

کدهاشو در پوشه کنار فایلهای load_data.php خودمون یا هرجا که دوست داشتیم میریزیم.

و مطابق زیر میتونیم ایمیل ارسال کنیم:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
function send_email($to, $subject, $message) {
    require 'phpmailer/src/Exception.php';
    require 'phpmailer/src/PHPMailer.php';
    require 'phpmailer/src/SMTP.php';
    $mail = new PHPMailer(true);
    try {
        $mail->isSMTP();
        $mail->Host       = 'mail.lib2023.site';
        $mail->SMTPAuth   = true;
        $mail->Username   = 'admin@lib2023.site';    // ایمیل خودت
        $mail->Password   = 'Privateclick(26)';
        $mail->SMTPSecure = 'tls';               // یا 'ssl'
        $mail->Port       = 587;                 // یا 465 برای SSL
        
        // اطلاعات فرستنده و گیرنده
        $mail->setFrom('admin@lib2023.site', 'VisaPing');
        $mail->addAddress('mahdi120012@gmail.com', 'Receiver Name');
        // محتویات ایمیل
        $mail->isHTML(true);
        $mail->Subject = 'Test Email From PHPMailer';
        $mail->Body    = 'This is a test email sent using PHPMailer';
        $mail->AltBody = 'This is a test email sent using PHPMailer';
        $mail->send();
        echo 'ایمیل با موفقیت ارسال شد!';
    } catch (Exception $e) {
        echo " ارسال ایمیل با خطا مواجه شد: {$mail->ErrorInfo}";
    }}

حالا ایمیل با موفقیت ارسال میشه. اگر خطا داد و یا ارسال نشد کافیه در aapanel بخش appstore باز کرده و افزونه mail server رو انتخاب کرده و به قسمت log بریم. اونجا کامل مینویسه خطا چی هست. در همین بخش یک گزینه هست به اسم send mail که در اونجا هم میشه ایمیل تستی فرستاد. البته بدون فعالسازی ptr هم میشه از این بخش ایمیل تستی فرستاد ولی وقتی با کد های php بخواییم ایمیل بفرستیم برای اینکه مخصوصا ایمیل بهتره حتما با کتابخانه phpmailer ارسال بشه تا به پوشه اسپم نره. در این شرایط حتما باید ptr از داخل پارس پک فعال بشه که بالاتر توضیح داده شد.

حالا برای اینکه بببینیم ایمیلمون در پوشه اسپم میره یانه وارد این لینک میشیم.

یک ایمیل بهمون میده. بهش ایمیل میفرستیم و صبرمیکنیم نتیجه رو بگه. اگه نتیجه 10/10 بود خیلی خوب هست.

نکته مهم اپدیت 1404/02:

بعد از یک مدت که کوئری ها زیادتر شد دیدیم هرچندوقت یکبار سرور قطع میشه و برسی میکردیم میدیمیم حافظه 25 گیگی سرور کاملا پر شده و سرور داون میشه. متوجه شدیم بخاطر زیادبودن کوئری ها این اتفاق زود به زود میوفته.

برای حل مشکل ذخیره لاگ های باینری mysql در مسیر /www/server/data که با اسم های mysql-bin.000131 و..... ساخته میشد کافیه از بخش پلاگین ها وارد تنظیمات mysql شده و در قسمت Binary Log این قسمتو خاموش کنیم. دیگه لاگ ذخیره نمیشه و حافظه سرور پر نمیشه.

آپدیت 1404.09.02: انتقال سرور به سرور دیگر.

تصمیم گرفتیم که سرور اصلی برنامرو از ایران به خارج منتقل کنیم. از طریق زیر به راحتی تونستیم اینکارو انجام بدیم:

از داخل aapanel به آدرس setting/migrate میریم.

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

بعد از حدود نیم ساعت بک اپ aapanel سرور فعلی به سرور جدید میره (این زمان بستگی به حجم اطلاعات داره)

بعد از اتمام مراحل یک یوزرنیم پسورد و ادرس ورود بهمون میده که توی مرورگر میزنیم و این ادرس سرور مقصد ماست.

بعد توی سرور مقصد به ادرس setting/backup میریم و مشاهده میکنیم که ریستور بک اپ درحال انجامه و باید صبرکنیم تا تموم بشه.

بعد از اتمام وارد قسمت app store سرور قبل میشیم و لیست اپ های نصب شده در سرور قبل و جدید رو مقایسه میکنیم و درصورتی که چیزی روی سرور جدید نصب نشده بود روی سرور جدید نصبش میکنیم.

بعد از قسمت تنظیمات پلاگین php وارد قسمت install extentions میشیم و پلاگین redis رو نصب میکنیم. (چون این پلاگین هم با این روش انتقال aapanel نصب نمیشه.)

آدرس ایپی های دامنه (dns) رو از کلادفلر یا هرجای دیگه به ادرس سرور جدید تغییر میدیم. و تنظیمات یوزر پسورد ورود به aapanel رو از قسمت settings مطابق چیزی که میخوایم میزاریم.

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

رفع مشکل ایمپورت (import) جدول حجیم در phpmyadmin

وقتی میخواییم جدول حجیم در php myadmin ایمپورت کنیم و ارور 504 gateway timeout رو میگیریم باید کار زیرو انجام بدیم:

برای رفع مشکل در تنظیمات php داخل aapanel کافیه مقدار limit of timeout را افزایش بدیم مثلا ان را از 100 روی 500 بزاریم.

بعد از آن بعد از اپلود فایل حجیم در phpmyadmin اروری توسط خود phpmyadmin دریافت میکنیم که برای رفع ان باید کار زیر را انجام دهیم:

وارد پوشه

\phpmyadmin\config.inc.php

ادرس کاملش: /www/server/phpmyadmin/

شده و این مقدار را به انتهای پوشه اضافه میکنیم: $cfg['ExecTimeLimit'] = 0;

لینک

اپدیت:

بعد از اینکه حجم جدول کاربران دیتابیس بزرگتر از 50 مگابایت شد دیگر روش بالا به تنهایی جواب نداد

لازمه کار زیرهم در تنظیمات php انجام بدیم تا بشه آپلود کرد:

  • post_max_size = 100M

  • upload_max_filesize = 100M

  • max_execution_time = 1000

لینک