وردپرس و ووکامرس

انتخاب هاست وردپرس: چک لیست خرید قبل از پرداخت

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

نوشته تیم فنی پیکوهاستبه روزرسانی: ۲۳ شهریور ۱۴۰۵۱۷ دقیقه مطالعه

صفحه فروش بیشتر هاست ها جدولی دارد با فضای دیسک، تعداد هسته CPU، مقدار رم و چند ردیف «نامحدود». چیزهایی که سایت وردپرسی را کند می کنند یا از دسترس خارج می کنند معمولاً در این جدول نیستند: نسخه PHP، سقف درخواست های هم زمان، جای نگهداری بکاپ، یا اینکه درگاه بانکی درخواست سرور شما را می پذیرد یا نه. جدول آخر همین صفحه را می توانید برای هر هاستی که بررسی می کنید پر کنید.

وردپرس ۷.۱ چه نسخه ای از PHP و MySQL می خواهد

صفحه نیازمندی های وردپرس برای میزبانی PHP 8.3 یا جدیدتر، MySQL 8.0 یا MariaDB 10.11 به بالا و HTTPS را توصیه می کند. وردپرس ۷.۱، آخرین نسخه تا شهریور ۱۴۰۵، هنوز روی PHP 7.4 اجرا می شود و در جدول سازگاری PHP و نسخه های وردپرس با PHP 7.4 تا 8.5 سازگار علامت خورده است. همان صفحه نیازمندی ها یادآوری می کند که PHP 7.4 و MySQL 5.5.5 به پایان عمر رسمی رسیده اند و ممکن است سایت را در معرض آسیب پذیری های امنیتی قرار دهند.

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

شاخه PHPپشتیبانی کامل تاوصله امنیتی تاوضعیت در شهریور ۱۴۰۵
8.2تمام شده۳۱ دسامبر ۲۰۲۶فقط امنیتی، چند ماه دیگر تمام می شود
8.3۳۱ دسامبر ۲۰۲۵۳۱ دسامبر ۲۰۲۷فقط امنیتی
8.4۳۱ دسامبر ۲۰۲۶۳۱ دسامبر ۲۰۲۸پشتیبانی کامل
8.5۳۱ دسامبر ۲۰۲۷۳۱ دسامبر ۲۰۲۹پشتیبانی کامل

PHP 8.1 و نسخه های قدیمی تر در این جدول نیستند و دیگر هیچ وصله ای نمی گیرند. هاستی که امروز بالاترین نسخه اش PHP 8.2 است، از ۱۱ دی ۱۴۰۵ نسخه ای بدون وصله امنیتی اجرا می کند.

از فروشنده بخواهید PHP 8.3 یا جدیدتر در دسترس باشد و بتوانید نسخه را خودتان در سی پنل عوض کنید. این کار در MultiPHP Manager انجام می شود، یا روی سرورهای CloudLinux در Select PHP Version که افزونه های PHP مثل imagick را هم همان جا روشن و خاموش می کنید. بعد از خرید، در پیشخوان وردپرس به «ابزارها > سلامت سایت» و تب «اطلاعات» بروید؛ بخش «سرور» نسخه PHP را نشان می دهد و بخش «پایگاه داده» نسخه MySQL یا MariaDB را. قبل از عوض کردن نسخه PHP روی سایت اصلی، تغییر را روی نسخه تست امتحان کنید و فایل error_log را ببینید.

عددهای جدول پلن هاست وردپرس یعنی چه

روی بسیاری از هاست های اشتراکی سی پنل، عددهای CPU، RAM و I/O در جدول پلن سقف هایی است که CloudLinux برای هر اکانت می گذارد. CloudLinux هر اکانت را در محیطی جدا به نام LVE اجرا می کند و پر شدن هر سقف نتیجه متفاوتی دارد. خلاصه مستندات CloudLinux درباره محدودیت ها:

محدودیتیعنی چهوقتی پر شود
CPU (SPEED)سهم پردازنده اکانتسایت کند می شود ولی خطا نمی دهد
RAM (PMEM)حافظه فیزیکی پروسس های اکانتاول کش دیسک آزاد می شود و اگر کافی نبود بعضی پروسس ها بسته می شوند؛ معمولاً خطای 500 یا 503 می بینید
I/O و IOPSسرعت خواندن و نوشتن دیسک و تعداد عملیات در ثانیهپروسس ها کندتر کار می کنند
EP (Entry Processes)تعداد درخواست هایی که هم زمان وارد اکانت می شوندخطای 508
NPROCکل پروسس ها و تردهای اکانتپروسس جدید ساخته نمی شود و ممکن است 500 یا 503 ببینید

فضای دیسک و تعداد inode

هر فایل و هر پوشه یک inode حساب می شود. نصب تازه وردپرس خودش چند هزار فایل دارد و این عدد با گذشت زمان بالا می رود: وردپرس برای هر تصویر آپلودشده چند اندازه دیگر می سازد، بعضی افزونه های کش برای هر صفحه فایل جدا می نویسند، افزونه های بکاپ نسخه ها را داخل wp-content نگه می دارند و ایمیل های اکانت هم فایل حساب می شوند. فروشگاهی با چند هزار محصول ممکن است زودتر از پر شدن دیسک به سقف inode برسد.

روی پلنی که فضای «نامحدود» دارد، سقف inode را حتماً بپرسید. عدد فعلی اکانت را هم بعد از خرید در ستون آمار سی پنل، ردیف File Usage، می بینید.

CPU، RAM و درخواست های هم زمان

عبارت «۲ گیگ رم» در صفحه دو هاست ممکن است دو معنی داشته باشد: سقف LVE اکانت شما یا رم کل سرور. از فروشنده بپرسید منظورش کدام است.

EP تعداد درخواست هایی است که در یک لحظه داخل اکانت پردازش می شوند. صد بازدیدکننده آنلاین لزوماً صد EP مصرف نمی کنند، چون بیشتر درخواست های PHP در کسری از ثانیه تمام می شوند. دردسر را درخواست های کند درست می کنند، مثل جستجوی محصول در ووکامرس، فراخوانی های پشت سرهم admin-ajax.php یا رباتی که صفحه ها را یکی پس از دیگری باز می کند. این درخواست ها EP را مدت بیشتری اشغال می کنند و وقتی سقف پر شود، بازدیدکننده بعدی خطای 508 می گیرد. درخواستی که وب سرور از کش صفحه جواب بدهد PHP اجرا نمی کند و سهم کمتری از رم و پروسس های اکانت برمی دارد.

سرعت دیسک (I/O)

سقف I/O در بازدیدهای معمولی کمتر به چشم می آید. اثرش موقع ساختن بکاپ، ایمپورت دیتابیس بزرگ، آپدیت چند افزونه با هم یا بازسازی اندازه های تصویر معلوم می شود و همین کارها کندتر پیش می روند.

صفحه هاست وردپرس اروپا برای هر پلن فضا، CPU، RAM و I/O را جدا نوشته است. اگر عدد EP یا inode در صفحه پلنی نبود، قبل از خرید بپرسید. اگر بعد از خرید خطای 508 یا 503 دیدید، صفحه Resource Usage در سی پنل سرورهای CloudLinux نشان می دهد اکانت به کدام سقف خورده است.

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

وب سرور و کش صفحه در هاست وردپرس

وردپرس هر صفحه را با PHP و چند کوئری دیتابیس می سازد و کش صفحه خروجی HTML را نگه می دارد تا بازدید بعدی لازم نباشد همه این کار تکرار شود. روی وب سرور LiteSpeed این کش (LSCache) بخشی از خود وب سرور است و افزونه LiteSpeed Cache قاعده هایش را تعیین می کند. روی آپاچی کش صفحه را افزونه هایی مثل WP Super Cache یا W3 Total Cache می سازند. افزونه LiteSpeed Cache روی آپاچی هم نصب می شود، ولی طبق مستندات LiteSpeed بدون وب سرور LiteSpeed فقط قابلیت های بهینه سازی اش کار می کند. فرق LiteSpeed Enterprise با OpenLiteSpeed و تنظیم و تست LSCache را در مقایسه لایت اسپید و آپاچی برای وردپرس نوشته ایم.

از فروشنده بپرسید وب سرور LiteSpeed Enterprise است، OpenLiteSpeed یا آپاچی، و ماژول کش برای اکانت شما فعال است یا نه. بعد از خرید خروجی curl -sI https://example.com/ را ببینید. خط server معمولاً نام وب سرور را نشان می دهد و اگر LSCache کار کند، هدر x-litespeed-cache هم در پاسخ هست.

پلن های وردپرس پیکوهاست در ایران، آلمان و هلند روی وب سرور LiteSpeed هستند. صفحه هاست ووکامرس از LSCache و کش اشیای Redis هم نام برده است. اینکه کش اشیا در فروشگاه چه کاری می کند و چه تنظیمی لازم دارد، در راهنمای افزایش سرعت ووکامرس آمده است.

انتخاب هاست وردپرس ایران یا خارج

اگر بیشتر بازدیدکننده های سایت داخل ایران هستند یا با درگاه بانکی ایرانی می فروشید، سرور ایران معمولاً کم دردسرتر است. سرور خارج برای مخاطب فارسی زبان بیرون از ایران و سایتی که به لایسنس یا API سرویس های خارجی وابسته است مناسب تر است.

سرور ایران تا کاربر داخل ایران مسیر شبکه کوتاه تری دارد. در قطعی اینترنت بین الملل آبان ۹۸ هم بسیاری از سایت هایی که روی سرور داخلی بودند برای کاربران داخل ایران باز می شدند، در حالی که سایت های روی سرور خارج برای همان کاربران در دسترس نبودند.

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

اگر فروشگاه دارید و سرور خارج را در نظر گرفته اید، قبل از خرید از پشتیبانی درگاه یا شرکت پرداخت یار خودتان بپرسید اتصال از IP سرور خارج را می پذیرد یا نه.

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

وضعیت سایت شمالوکیشن مناسب تر
بیشتر بازدیدکننده ها داخل ایران هستندایران
فروشگاه با درگاه بانکی ایرانیایران، یا خارج بعد از تأیید درگاه
وابسته به لایسنس یا API سرویس های خارجیخارج، یا ایران بعد از تست اتصال
مخاطب فارسی زبان خارج از ایرانخارج

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

بکاپ هاست وردپرس را با چهار سوال بسنجید

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

  1. بکاپ هر چند وقت گرفته می شود و چند روز عقب نگهداری می شود؟
  2. کجا نگهداری می شود؟ بکاپی که روی همان سرور سایت است، با خرابی دیسک یا هک شدن سرور همراه خود سایت از دست می رود.
  3. بازگردانی را خودتان از سی پنل انجام می دهید یا باید تیکت بدهید؟
  4. بازگردانی هزینه جدا دارد؟

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

بکاپ هاست را تنها نسخه سایتتان ندانید. ماهی یک بار از بخش Backup در سی پنل بکاپ کامل اکانت را دانلود کنید، یا دست کم پوشه wp-content و خروجی دیتابیس را جایی بیرون از همان سرور نگه دارید.

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

گواهی SSL و نسخه تست سایت

گواهی SSL

وردپرس HTTPS را برای همه نصب ها لازم می داند. روی هاست سی پنل گواهی رایگان معمولاً با AutoSSL صادر و خودکار تمدید می شود و در مشخصات همه پلن های وردپرس پیکوهاست هم SSL رایگان آمده است. بعد از خرید، تاریخ انقضای گواهی دامنه اصلی و نسخه www را ببینید:

curl -vI https://example.com 2>&1 | grep -i "expire date"
curl -vI https://www.example.com 2>&1 | grep -i "expire date"

اگر بعد از رفتن به HTTPS قفل مرورگر کامل نیست، کنسول مرورگر (F12) آدرس فایل هایی را که هنوز با http بارگذاری می شوند نشان می دهد.

محیط تست (staging)

روی بعضی هاست ها WP Toolkit یا Softaculous گزینه ساخت نسخه staging دارد. اگر هاست شما نداشت، کپی سایت را روی ساب دامینی مثل staging.example.com بسازید؛ مراحلش همان مراحل انتقال سایت وردپرس به هاست جدید است. روی نسخه تست در «تنظیمات > خواندن» جلوی ایندکس شدن در موتورهای جستجو را بگیرید و با Directory Privacy در سی پنل برایش رمز بگذارید. آپدیت های بزرگ وردپرس، ووکامرس و قالب را اول آنجا اجرا کنید.

چرا ایمیل های وردپرس به اسپم می روند

وردپرس به طور پیش فرض ایمیل را با تابع mail در PHP و از خود سرور می فرستد. روی هاست اشتراکی چند سایت از یک IP ایمیل می فرستند و اگر رکوردهای SPF و DKIM دامنه درست نباشد، ایمیل بازیابی رمز و ایمیل سفارش ووکامرس به پوشه اسپم می رود یا اصلاً نمی رسد.

قبل از خرید بپرسید سقف ارسال ایمیل در ساعت برای هر دامنه چند است و ارسال از طریق SMTP به سرویس ایمیل بیرونی باز است یا نه. بعد از خرید:

  1. بخش Email Deliverability سی پنل را باز کنید. وضعیت SPF و DKIM دامنه آنجاست و اگر ایرادی باشد، رکورد پیشنهادی را هم نشان می دهد.
  2. از فرم «رمز عبورتان را گم کرده اید؟» برای یک آدرس Gmail ایمیل بفرستید.
  3. در Gmail گزینه Show original را بزنید؛ جلوی SPF و DKIM باید PASS نوشته شده باشد.
  4. در فروشگاه یک سفارش آزمایشی ثبت کنید تا معلوم شود ایمیل مشتری و ایمیل مدیر هر دو می رسند.

برای فروشگاهی که به ایمیل سفارش وابسته است، افزونه ای مثل WP Mail SMTP همراه با یک سرویس ارسال ایمیل جدا مطمئن تر از ارسال مستقیم از هاست است.

پشتیبانی هاست را قبل از پرداخت امتحان کنید

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

  • سقف EP، RAM و inode پلن مورد نظر چند است؟
  • بکاپ ها چند روز نگهداری می شوند و بازگردانی را خودم انجام می دهم؟
  • وب سرور LiteSpeed است و ماژول کش فعال است؟ PHP 8.3 به بالا دارید؟

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

نشانه های هشدار

  • همه چیز «نامحدود» است و برای inode، EP یا RAM هیچ عددی اعلام نمی شود.
  • PHP 8.3 یا جدیدتر در فهرست نسخه ها نیست.
  • بکاپ فقط هفتگی است، روی همان سرور می ماند یا برای بازگردانی پول می خواهند.
  • گواهی SSL رایگان نیست یا باید دستی تمدیدش کنید.
  • در سی پنل به error_log یا صفحه مصرف منابع دسترسی ندارید.
  • جواب سوال فنی تان متنی آماده است که به خود سوال ربطی ندارد.
  • شرط لغو سرویس و برگشت وجه هیچ جا نوشته نشده است.

هاست جدید را قبل از عوض کردن DNS تست کنید

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

زمان رسیدن اولین بایت (TTFB) با curl

TTFB فاصله ارسال درخواست تا رسیدن اولین بایت پاسخ است. در صفحه های وردپرس بخش بزرگ این زمان معمولاً صرف ساختن صفحه در سرور می شود. این دستور زمان هر مرحله را جدا نشان می دهد:

curl -o /dev/null -s -w "dns: %{time_namelookup}\nconnect: %{time_connect}\ntls: %{time_appconnect}\nttfb: %{time_starttransfer}\ntotal: %{time_total}\n" https://example.com/

در PowerShell ویندوز به جای curl بنویسید curl.exe و به جای /dev/null بنویسید NUL. برای اینکه عددها قابل مقایسه باشند:

  • دستور را چند بار پشت سر هم اجرا کنید؛ درخواست اول ممکن است از کش نیاید و کندتر باشد.
  • یک بار آدرس را با پارامتر تصادفی بزنید، مثل https://example.com/?t=58213. کش صفحه برای این آدرس نسخه آماده ندارد و عددی که می بینید سرعت خود PHP و دیتابیس هاست است.
  • کنار صفحه اصلی، یک صفحه سنگین مثل دسته بندی محصولات را هم تست کنید.
  • روی هاست اشتراکی ساعت شلوغ سرور در عدد اثر دارد، پس تست را در چند ساعت مختلف روز تکرار کنید.
  • مخاطب داخل و خارج از ایران دارید؟ از هر دو جا تست بگیرید.

عدد هاست جدید را کنار عدد هاست فعلی بگذارید، برای همان صفحه، در همان ساعت و با همان اتصال اینترنت.

Query Monitor

افزونه Query Monitor را روی هاست جدید نصب کنید. خروجی اش به طور پیش فرض فقط برای مدیر سایت نمایش داده می شود و زمان ساخت صفحه، مصرف حافظه، تعداد کوئری ها و کوئری های کند یا تکراری را نشان می دهد. بخش Queries by Component معلوم می کند کدام افزونه بیشترین کوئری را می زند. یک صفحه را روی هاست قبلی و جدید با این افزونه مقایسه کنید. اگر تعداد کوئری ها یکی است ولی زمان ساخت صفحه روی هاست جدید خیلی بیشتر است، مشکل احتمالاً از سرور یا دیتابیس هاست است. بعد از تست افزونه را غیرفعال کنید.

مانیتور آپتایم و مصرف منابع

یک سرویس مانیتور آپتایم مثل UptimeRobot را روی صفحه اصلی تنظیم کنید. اگر نوع مانیتور «بررسی کلمه کلیدی» در دسترس است، همان را بگذارید تا اگر صفحه باز شد ولی محتوای اصلی را نداشت هم خبردار شوید. گزارش دو هفته اول را نگاه کنید.

بعد از انتقال DNS، هر چند روز یک بار صفحه Resource Usage سی پنل و فایل error_log را ببینید. خطای 508 یا کمبود حافظه در هفته اول نشانه این است که پلن برای ترافیک سایت کوچک است.

کرون وردپرس

WP-Cron با بازدیدها اجرا می شود، پس در سایت کم بازدید کارهای زمان بندی شده مثل انتشار نوشته یا ایمیل های ووکامرس ممکن است دیر انجام شوند. راه رایج این است که WP-Cron را در wp-config.php خاموش کنید:

define( 'DISABLE_WP_CRON', true );

و آن را از بخش Cron Jobs سی پنل، مثلاً هر ده دقیقه، اجرا کنید:

wget -q -O - "https://example.com/wp-cron.php?doing_wp_cron" >/dev/null 2>&1

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

چک لیست انتخاب هاست وردپرس برای چاپ

این جدول را برای هر هاستی که بررسی می کنید پر کنید. ستون آخر جای جواب فروشنده یا نتیجه تست خودتان است.

موردحداقل قابل قبولچطور چک کنیدجواب یا نتیجه
نسخه PHP8.3 یا جدیدتر، قابل تغییر در سی پنلسلامت سایت وردپرس، بخش سرور
دیتابیسMySQL 8.0 یا MariaDB 10.11 به بالاسلامت سایت، بخش پایگاه داده
HTTPSSSL رایگان با تمدید خودکار برای دامنه و wwwcurl -vI و تاریخ انقضا
CPU و RAMعدد مشخص برای هر اکانتتیکت پیش از فروش و Resource Usage
EP و NPROCعدد اعلام شدهتیکت پیش از فروش و خطای 508 در لاگ
inodeعدد اعلام شده، متناسب با تعداد فایل هاFile Usage در سی پنل
I/Oعدد اعلام شدهزمان ساخت بکاپ و ایمپورت دیتابیس
وب سرور و کشLiteSpeed با LSCache، یا افزونه کش روی آپاچیهدر server و x-litespeed-cache
لوکیشنمتناسب با مخاطب و درگاه پرداختتست اتصال درگاه و API افزونه ها
بکاپروزانه، چند روز نگهداری، بیرون از سرور سایتیک بازگردانی آزمایشی
stagingابزار آماده یا ساب دامینساخت یک کپی تست
ایمیلSPF و DKIM درست، سقف ارسال معلومEmail Deliverability و Show original در Gmail
پشتیبانیجواب مشخص به سوال فنیزمان و محتوای جواب تیکت پیش از فروش
سرعتTTFB برابر یا بهتر از هاست فعلیcurl و Query Monitor
پایداریبدون قطعی در دو هفته اولمانیتور آپتایم