راهنمای خرید سرور

میزبانی وب آموزشگاه وردپرس: منابع، لوکیشن و پیکربندی درست

سایت آموزشی وردپرسی با LMS به‌خاطر کاربران لاگین‌شده، آزمون‌ها و ویدیو بسیار سنگین‌تر از یک وبلاگ است. این راهنما می‌گوید چه منابعی، کدام لوکیشن و چه پیکربندی‌ای برای میزبانی آن لازم است.

پاسارگاد میزبان(مهندسی زیرساخت) 7 دقیقه مطالعه
نمودار میزبانی وب آموزشگاه وردپرس با سرور nginx، PHP-FPM، Redis و MariaDB برای دانشجویان آنلاین
نمودار میزبانی وب آموزشگاه وردپرس با سرور nginx، PHP-FPM، Redis و MariaDB برای دانشجویان آنلاین

میزبانی وب آموزشگاه وردپرس با میزبانی یک وبلاگ وردپرسی فرق اساسی دارد. دانشجوها لاگین می‌کنند، کش صفحه برایشان عملاً کار نمی‌کند و هر کلیک یعنی اجرای PHP و چند کوئری دیتابیس. به همین دلیل هاست اشتراکی معمولاً همان روزهای اول فروش دوره کم می‌آورد و یک سرور مجازی یا ابری با منابع اختصاصی، کش Redis و PHP-FPM تنظیم‌شده انتخاب مطمئن‌تری است.

چرا سایت آموزشی وردپرس از وبلاگ سنگین‌تر است

در یک وبلاگ، ۹۰ درصد بازدیدکننده‌ها ناشناس‌اند و افزونه کش صفحه یک نسخه HTML آماده را تحویلشان می‌دهد؛ PHP اصلاً بیدار نمی‌شود. در آموزشگاه آنلاین ماجرا برعکس است. افزونه‌های LMS مثل Tutor LMS، LearnDash یا LearnPress برای هر دانشجو صفحه‌ای شخصی می‌سازند: پیشرفت دوره، درس‌های تکمیل‌شده، نتیجه آزمون. این صفحه‌ها را نمی‌شود کش کرد.

چند چیز دیگر هم بار را بیشتر می‌کند:

  • ثبت پیشرفت: هر بار که دانشجو دکمه «تکمیل درس» را می‌زند، یک نوشتن در دیتابیس اتفاق می‌افتد.
  • آزمون‌ها: آزمون زمان‌دار یعنی ده‌ها نفر در یک بازه چندثانیه‌ای پاسخ ارسال می‌کنند.
  • فروشگاه: معمولاً ووکامرس کنار LMS نصب است و سبد خرید و پرداخت هم بدون کش اجرا می‌شود.
  • admin-ajax و Heartbeat: صفحه‌های باز در مرورگر هر چند ثانیه درخواست پس‌زمینه می‌فرستند.

نکته مهم این است که ملاک انتخاب سرور، تعداد کاربر همزمان است، نه تعداد کل دانشجوهای ثبت‌نامی. آموزشگاهی با ۵ هزار دانشجو که پخش در طول روز وارد می‌شوند، ممکن است از آموزشگاهی با ۵۰۰ دانشجو که همه ساعت ۸ شب سر کلاس آنلاین می‌آیند سبک‌تر باشد.

چه منابعی لازم داری: نقطه شروع رم، CPU و دیسک

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

وضعیت آموزشگاهپردازندهرمدیسکتوضیح
تازه‌کار، چند ده کاربر همزمان۲ هسته۴ گیگSSD/NVMe ۴۰ گیگهمه‌چیز روی یک سرور
متوسط، آزمون‌های منظم۴ هسته۸ گیگNVMe ۸۰ گیگRedis ضروری است
بزرگ، امتحان همزمان صدها نفر۸ هسته به بالا۱۶ گیگ به بالاNVMe جدا برای دیتابیسجدا کردن دیتابیس را جدی بگیر

دیسک NVMe را دست‌کم نگیر. وقتی ده‌ها نفر همزمان پاسخ آزمون ثبت می‌کنند، گلوگاه معمولاً سرعت نوشتن دیسک و قفل‌های جدول‌هاست، نه CPU. برای مقایسه پلن‌ها با این مشخصات، صفحه قیمت سرورهای ساعتی را ببین. اگر هنوز بین سرور مجازی و ابری مردد هستی، مطلب سرور ابری چیست و چه تفاوتی با سرور مجازی دارد؟ کمکت می‌کند.

ویدیو را روی همان سرور وردپرس نگذار

رایج‌ترین اشتباه در آموزشگاه‌های تازه این است که فایل‌های MP4 را در کتابخانه رسانه وردپرس آپلود می‌کنند. چند مشکل پیش می‌آید: دیسک سریع پر می‌شود، پهنای باند پورت صرف ویدیو می‌شود و صفحه‌های PHP کند می‌شوند، و نسخه پشتیبان روزانه از چند گیگ به چند ده یا صد گیگ می‌رسد.

راه‌های بهتر:

  • یک سرور جدا فقط برای فایل‌های ویدیویی که nginx مستقیم آن‌ها را سرو می‌کند. اگر ویدیو را به قالب HLS (تکه‌های کوچک ‎.ts با فایل ‎.m3u8) تبدیل کنی، پخش روی اینترنت ضعیف هم روان‌تر است.
  • یک سرویس پخش ویدیو با قابلیت محدود کردن دامنه نمایش، تا لینک فایل به‌راحتی دست‌به‌دست نشود.

با این کار سرور وردپرس فقط کار خودش را می‌کند: اجرای PHP و جواب دادن به دیتابیس.

لوکیشن ایران یا خارج برای میزبانی وب آموزشگاه وردپرس

اگر دانشجوهایت داخل ایران‌اند، لوکیشن سرور مستقیم روی تجربه کلاس اثر می‌گذارد. خلاصه مقایسه:

معیارسرور ایرانسرور خارج
تأخیر برای دانشجوی داخل ایرانکمبیشتر و وابسته به مسیر بین‌الملل
اختلال اینترنت بین‌المللسایت در دسترس می‌ماندممکن است سایت کند یا قطع شود
آپدیت وردپرس و افزونه‌هاگاهی نیاز به راه‌حل جایگزینمستقیم و بی‌دردسر
دانشجوی خارج از کشورکندترسریع‌تر

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

روی سرور خارج یک خطر جدی دیگر هم هست: اگر آی‌پی از داخل ایران باز نشود، کلاس عملاً تعطیل است. در چرا آی‌پی سرور از ایران باز نمی‌شود و چطور عوضش کنیم؟ این وضعیت را دقیق توضیح داده‌ایم. در پاسارگاد میزبان آی‌پی‌ها پیش از تحویل از داخل ایران تست می‌شوند و در صورت مشکل، تعویض آی‌پی از خود پنل انجام می‌شود.

پیکربندی پیشنهادی: nginx، PHP-FPM، MariaDB و Redis

برای یک آموزشگاه وردپرسی، این پشته روی اوبونتو ۲۴.۰۴ هم سبک است و هم قابل تنظیم. اوبونتو ۲۴.۰۴ به‌صورت پیش‌فرض PHP 8.3 و MariaDB 10.11 را می‌آورد. حداقل نسخه‌های مورد نیاز را همیشه از صفحه رسمی نیازمندی‌های وردپرس چک کن.

جریان: مسیر درخواست یک دانشجوی لاگین‌شده

بعد از اتصال به سرور با SSH، بسته‌ها را نصب کن:

sudo apt update
sudo apt install nginx mariadb-server redis-server \
  php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-intl \
  php8.3-mbstring php8.3-xml php8.3-zip php-imagick php-redis
sudo mysql_secure_installation

جزئیات راه‌اندازی nginx و بلاک سرور را در نصب وب سرور nginx روی اوبونتو نوشته‌ایم. چند تنظیم مخصوص سایت آموزشی:

۱. حجم آپلود. در ‎/etc/php/8.3/fpm/php.ini مقدار upload_max_filesize و post_max_size را به اندازه بزرگ‌ترین فایل تمرینی که دانشجو آپلود می‌کند ببر، و در nginx هم client_max_body_size را هم‌اندازه بگذار. اگر بعد از آپلود خطای 413 دیدی، تقریباً همیشه همین مقدار nginx جا مانده است.

۲. تعداد پروسس‌های PHP. در ‎/etc/php/8.3/fpm/pool.d/www.conf مقدار pm.max_children تعیین می‌کند چند درخواست همزمان پردازش شود. فرمولش ساده است: رمی که برای PHP کنار گذاشته‌ای تقسیم بر میانگین مصرف هر پروسس. مصرف واقعی را این‌طور ببین:

ps -C php-fpm8.3 -o rss= | awk '{s+=$1; n++} END {print s/n/1024 " MB"}'

اگر میانگین ۸۰ مگ بود و ۴ گیگ برای PHP داری، حدود ۵۰ پروسس منطقی است. عدد را بیش از این نبر؛ سرور به swap می‌افتد و همه‌چیز کند می‌شود.

۳. کش آبجکت با Redis. افزونه Redis Object Cache را نصب و فعال کن. نتیجه کوئری‌های تکراری در حافظه می‌ماند و برای کاربران لاگین‌شده که کش صفحه ندارند، بیشترین اثر را همین دارد.

۴. کرون واقعی به جای WP-Cron. WP-Cron با هر بازدید اجرا می‌شود و در ترافیک بالا سربار اضافه می‌سازد. در wp-config.php این خط را اضافه کن:

define('DISABLE_WP_CRON', true);

و با sudo crontab -u www-data -e این خط را بگذار:

*/5 * * * * php /var/www/academy/wp-cron.php >/dev/null 2>&1

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

سایت آموزشی هم اطلاعات شخصی دانشجو دارد و هم محتوای پولی؛ هر دو هدف جذابی برای نفوذند. ترتیب درست امن‌سازی سرور را در امن‌سازی سرور اوبونتو در ۱۰ قدم ببین. در سطح وردپرس هم ورود ادمین را با احراز هویت دومرحله‌ای ببند و xmlrpc.php را اگر استفاده نمی‌کنی در nginx مسدود کن.

برای نسخه پشتیبان، دیتابیس و پوشه wp-content/uploads را جدا نگه دار و یک نسخه را روی سرور دیگری منتقل کن:

mysqldump --single-transaction -u root -p academy_db | gzip > /root/backup/academy-$(date +%F).sql.gz
فهرست بررسی: چک‌لیست پیش از انتشار دوره جدید

پرداخت ساعتی برای تست بار و روزهای امتحان

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

  • محیط تست: قبل از آپدیت افزونه LMS، یک کپی از سایت را روی سرور موقت بالا بیاور، آپدیت را امتحان کن و بعد سرور را حذف کن.
  • تست بار: یک سرور جدا بساز و با ابزاری مثل k6 یا JMeter سناریوی ورود و شرکت در آزمون را با کاربرهای تستی اجرا کن. چند ساعت هزینه، جلوی خرابی روز امتحان را می‌گیرد.
  • ارتقای موقت: پیش از امتحان بزرگ منابع را بالا ببر و بعد از آن برگردان.

در پاسارگاد میزبان کیف پول به تومان شارژ می‌شود و هزینه سرور ساعتی کم می‌شود؛ یعنی سرور تست چندساعته فقط به اندازه همان چند ساعت هزینه دارد.

جمع‌بندی

برای میزبانی وب آموزشگاه وردپرس، ملاک را کاربر همزمان بگذار، ویدیو را از سرور اصلی جدا کن، Redis و PHP-FPM را بر اساس رم واقعی تنظیم کن و لوکیشن را با توجه به محل دانشجوهایت انتخاب کن؛ بعد پیش از هر امتحان بزرگ، یک تست بار با کاربر لاگین‌شده بگیر. اگر آماده‌ای این پیکربندی را امتحان کنی، از ساخت سرور ساعتی ایران و خارج یک سرور بساز و همین امروز محیط تستت را بالا بیاور.

پرسش‌های پرتکرار

آیا هاست اشتراکی برای سایت آموزشی وردپرسی کافی است؟

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

برای شروع آموزشگاه وردپرسی چه مشخصاتی لازم است؟

برای چند ده کاربر همزمان، ۲ هسته پردازنده، ۴ گیگ رم و دیسک NVMe نقطه شروع مناسبی است؛ عدد نهایی را با تست بار روی سایت خودت مشخص کن.

سرور سایت آموزشی را ایران بگیرم یا خارج؟

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

ویدیوهای دوره را کجا نگه دارم؟

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

اشتراک‌گذاری: تلگرام واتساپ ایکس

پاسارگاد میزبان

مهندسی زیرساخت

شرکت میزبان داده پردازی پاسارگاد ارائه دهنده خدمات ابری و زیرساخت

سرور ساعتی ایران و خارج، در کمتر از یک دقیقه

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

ساخت سرور ابری
راهنمای خرید سرور

قیمت سرور اختصاصی: چه چیزی آن را تعیین می‌کند و کی ارزشش را دارد؟

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

6 دقیقه مطالعه ۳

آخرین بازبینی این مقاله: