پرش به محتوا
امنیت و پشتیبانی

به روزرسانی امن وردپرس؛ مراحل پیش از زدن دکمه Update

۱۵ دقیقه مطالعه

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

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

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

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

اول بفهم سایتت از چه چیزهایی ساخته شده

فرض کن یه فروشگاه آنلاین لوازم خونه داری. دوازده تا افزونه نصب کردی، یه قالب هم که چند سال پیش خریدی و یه درگاه پرداخت که با شاپرک وصله. یه روز صبح وارد پیشخوان می شی و می بینی نوشته «۹ به روزرسانی در دسترس است». دکمه «همه رو به روز کن» وسوسه کننده ست. ولی اگه یکی از اون نُه تا با بقیه جور نباشه، هزینه اش رو با سفارش های از دست رفته می دی، نه با یه خطای فنی ساده.

برای همین قبل از هر کاری، سایتت رو بشناس:

  • فهرست سایت: نسخه وردپرس، نسخه PHP، افزونه ها و قالب فعال رو یادداشت کن. بدون این فهرست نمی فهمی بعد از به روزرسانی دقیقاً چی عوض شده.
  • افزونه های حیاتی رو از فرعی ها جدا کن: درگاه پرداخت، فرم سفارش، افزونه فروشگاهی، سئو و کش رو علامت بزن. اگه اینا خراب بشن، سایت عملاً کار نمی کنه. خراب شدن افزونه اسلایدر خیلی کم هزینه تره.
  • توضیح تغییرات (Changelog) رو بخون: تو صفحه افزونه یا قالب ببین نسخه جدید امنیتیه، رفع باگه یا تغییر بزرگ. به روزرسانی امنیتی رو نباید عقب بندازی. تغییر بزرگ رو هم نباید ظرف پنج دقیقه و وسط روز کاری انجام بدی.
  • سازگاری با PHP هاست: اگه نسخه جدید یه افزونه PHP بالاتری می خواد، تغییر PHP رو یه مرحله جدا بذار و بعد از بقیه به روزرسانی ها انجام بده. اگه دو تغییر بزرگ رو همزمان بزنی و چیزی خراب بشه، نمی دونی مقصر کدومه.

اطلاعات پایه رو با WP-CLI هم می تونی بگیری، اگه روی هاستت در دسترسه:

wp core version
wp plugin list
wp theme list

یه جدول ساده برای یادداشت

لازم نیست پیچیده باشه. یه فایل متنی یا صفحه گسترده کافیه. ستون هاش اینا باشن:

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

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

بکاپ واقعی یعنی چی؟

خیلی ها فکر می کنن بکاپ داشتن یعنی یه فایل zip تو پوشه هاست. ولی بکاپ وقتی بکاپه که بتونی با اون سایت رو برگردونی. فرق این دو تا رو معمولاً همون روزی می فهمی که سایت خراب شده و دیگه دیره.

چی باید توش باشه

  • پوشه wp-content: شامل uploads، افزونه ها و قالب ها.
  • فایل wp-config.php و فایل .htaccess: تنظیمات اتصال و قوانین سرور.
  • دیتابیس کامل: محتوا، سفارش ها، کاربرها و تنظیمات افزونه ها همه تو دیتابیسن. خیلی از به روزرسانی ها ساختار جدول ها رو عوض می کنن. برای همین بکاپ فقط فایل ها کافی نیست، چون با برگردوندن فایل ها ساختار دیتابیس برنمی گرده.

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

یه روش سریع برای بکاپ دیتابیس، اگه WP-CLI داری:

wp db export backup-before-update.sql

بکاپ رو کجا نگه داری

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

بکاپ تست نشده فقط یه امیده

سه تا چیز رو همیشه چک کن:

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

زمان بندی بکاپ تو فروشگاه

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

محیط آزمایشی؛ جایی که اشتباه کردن ارزونه

نسخه آزمایشی (staging) یه کپی از سایتته که مشتری ها نمی بیننش. می تونی روش آپدیت کنی، چیزی رو خراب کنی و هیچ اتفاقی برای فروش نیفته. ساختنش هم خیلی پیچیده نیست.

  1. یه زیردامنه بساز، مثلاً staging.example.ir. اگه با رکوردهای DNS راحت نیستی، مقاله رکورد DNS چیست؟ تفاوت A، CNAME، MX و TXT با مثال کمکت می کنه. برای زیردامنه روی دامنه .ir معمولاً لازم نیست چیزی از ایرنیک بگیری، فقط رکورد درست تو DNS لازمه.
  2. فایل ها و دیتابیس رو کپی کن تو یه پوشه و دیتابیس جدا. نباید به دیتابیس سایت اصلی وصل باشه، وگرنه تست روی داده واقعی انجام می شه.
  3. آدرس ها رو داخل دیتابیس عوض کن. اینجا یه اشتباه رایج هست. وردپرس خیلی از داده ها رو به شکل serialized ذخیره می کنه. اگه آدرس رو با یه «جستجو و جایگزینی» ساده عوض کنی، ممکنه تنظیمات خراب بشن. از ابزاری استفاده کن که serialized رو درست هندل می کنه، مثل wp search-replace.
  4. دسترسی رو ببند. رمز با HTTP Auth بذار و گزینه جلوگیری از ایندکس موتورهای جستجو رو فعال کن. نسخه آزمایشی ای که گوگل ببینه، محتوای تکراری درست می کنه و ممکنه به سئوی سایت اصلی ضربه بزنه.
  5. ایمیل و پرداخت واقعی رو خاموش کن. درگاه پرداخت رو روی حالت تست بذار یا غیرفعالش کن. یادآوری سفارش یا ایمیل خبرنامه نباید از نسخه آزمایشی برای مشتری واقعی بره.

محدودیت های staging رو جدی بگیر

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

یه مورد دیگه هم هست. اگه staging رو روی همون حساب هاستی می سازی که سایت اصلی روشه، منابع و فضا مشترک می شه و بعضی مشکل ها هر دو سایت رو درگیر می کنه. میزبانی چند سایت؛ حساب مشترک چه خطرهایی دارد؟ رو بخون و ببین برای وضعیتت چی بهتره.

اگه بودجه یا امکان staging نداری

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

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

ترتیب درست به روزرسانی امن وردپرس، قدم به قدم

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

  1. بکاپ تازه. حتی اگه یه ساعت پیش گرفتی، درست قبل از شروع یه بار دیگه بگیر.
  2. هسته وردپرس. نسخه های جزئی و امنیتی رو معمولاً بدون معطلی بزن. اگه نسخه اصلی جدیده، اول روی staging تست کن و ببین سازنده های افزونه های حیاتی سازگاری رو اعلام کرده ان یا نه. چند روز صبر کردن برای نسخه اصلی معمولاً اشکالی نداره.
  3. افزونه ها، یکی یکی. افزونه اصلی رو قبل از افزونه های جانبی اش به روز کن. مثلاً افزونه فروشگاهی قبل از افزونه هایی که بهش وصلن. بین هر دو آپدیت، چند ثانیه صفحه اصلی و یه صفحه مهم رو باز کن.
  4. قالب. اگه قالب رو مستقیم ویرایش کردی و قالب فرزند (Child theme) نداری، آپدیت تغییرهات رو پاک می کنه. این اشتباه خیلی رایجه. اول از پوشه قالب بکاپ بگیر و تغییرها رو به یه قالب فرزند منتقل کن.
  5. ترجمه ها. آخر از همه، چون ریسکشون کمتره.
  6. PHP. اگه لازمه عوضش کنی، بعد از همه و جدا انجامش بده.

قبل از هر آپدیت، تو صفحه افزونه به فیلد «Tested up to» نگاه کن. اگه سازنده هنوز با نسخه جدید وردپرس تستش نکرده، ریسک بیشتره.

دکمه «Update all» کِی خطرناکه؟

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

آپدیت خودکار؛ کجا بله، کجا نه

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

غلط های رایج

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

بعد از هر آپدیت چی رو چک کنی

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

  • صفحه اول و چند صفحه داخلی: ظاهر، فونت فارسی و راست به چپ بودن متن. بعضی آپدیت های قالب ممکنه فونت یا راست به چپ بودن رو به هم بریزن.
  • ورود به پیشخوان: هم با کاربر مدیر، هم با کاربر عادی اگه سایت عضویت داره.
  • فرم های تماس و ثبت سفارش: یه پیام تستی بفرست.
  • سبد خرید تا آخرین مرحله: اگه فروشگاه داری، تا صفحه پرداخت برو. اگه درگاه اجازه می ده، یه پرداخت با مبلغ کم بزن و برگشت به سایت رو ببین.
  • ایمیل های سیستمی: ایمیل ثبت سفارش یا بازیابی رمز رو بفرست. اگه پیام «موفق» می ده ولی نمی رسه، ارسال ایمیل وردپرس؛ چرا پیام موفق است ولی نمی رسد؟ به دردت می خوره.
  • قفل SSL و محتوای ترکیبی: اگه بعد از آپدیت آیکون قفل ناقص شد، یه فایل یا تصویر با آدرس http مونده. خطای SSL؛ چرا با وجود گواهی سایت اخطار می دهد؟ رو ببین.
  • کش: کش افزونه و کش مرورگر رو پاک کن و دوباره نگاه کن.
  • سرعت: اگه صفحه کندتر از قبل شد، احتمالاً افزونه یا قالب جدید اسکریپت یا تصویر سنگین تری اضافه کرده. بهبود LCP سایت؛ چرا بزرگ ترین عنصر صفحه دیر نمایش داده می شود؟ برای پیدا کردن علتش مفیده.

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

اگه خراب شد، آروم باش و ترتیب داشته باش

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

صفحه سفید یا خطای بحرانی

اول ببین خطا دقیقاً چیه. تو wp-config.php می تونی لاگ رو موقتاً فعال کنی:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

بعد فایل wp-content/debug.log رو بخون. معمولاً اسم افزونه یا قالب مشکل دار توشه. بعد از رفع مشکل، این تنظیمات رو برگردون تا لاگ بی خودی حجیم نشه و اطلاعات نشت نکنه.

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

از طریق مدیریت فایل هاست یا FTP، اسم پوشه افزونه مشکوک رو تو wp-content/plugins عوض کن، مثلاً یه پسوند -off بهش اضافه کن. وردپرس اون افزونه رو غیرفعال می کنه و معمولاً سایت بالا میاد. اگه مشکل از قالب بود، همین کار رو با پوشه قالب بکن تا وردپرس به قالب پیش فرض برگرده.

کی بکاپ رو برگردونی؟

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

وقتی مشکل از آپدیت نیست

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

چه موقع و هر چند وقت؟

یه ریتم ثابت از آپدیت های ناگهانی بهتره. پیشنهاد ما اینه:

  • امنیتی: هر وقت اعلام شد، در اولین فرصت (بعد از بکاپ و یه تست سریع).
  • عادی: یه پنجره ثابت هفتگی یا دو هفته ای، مثلاً یه صبح آروم وسط هفته.
  • تغییر بزرگ: تو یه روز مشخص، با staging و وقت کافی برای عقب گرد.

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

افزونه و قالب کرک شده

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

فایروال جای آپدیت رو نمی گیره

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

سوالات متداول

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

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

آیا آپدیت خودکار وردپرس امنه؟

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

اگه نسخه آزمایشی ندارم، حداقل چی کار کنم؟

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

بعد از آپدیت سایت کند شد، علتش چیه؟

معمولاً کش پاک نشده، افزونه یا قالب جدید اسکریپت و تصویر بیشتری لود می کنه، یا نسخه PHP عوض شده. اول کش رو پاک کن و افزونه ها رو موقتاً یکی یکی غیرفعال کن تا مقصر پیدا بشه. اگه نمایش عنصر اصلی صفحه کند شده، مقاله بهبود LCP که بالاتر لینکش رو دادیم می تونه راهنما باشه.

جمع بندی: یه برنامه کوچک که جلوی یه روز بد رو می گیره

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

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

  • وردپرس
  • به روزرسانی
  • بکاپ گیری
  • امنیت سایت
  • افزونه ها

مقاله‌های مرتبط

ادامه همین موضوع در وبلاگ.

همه مقاله‌ها
کمک فنی

برای اجرای این کار کمک می‌خواهید؟

تیم فنی Wbweb از طراحی سایت تا هاست و سرور کنار شماست؛ درخواستتان را ثبت کنید یا تیکت بزنید.