Безпечне оновлення CMS і плагінів: протокол із бекапом і відкатом

Планова правка ядра або розширень часто ламає живий сайт у найневідповідніший момент. Ми налаштовуємо керований контур оновлення CMS: фіксуємо версії, знімаємо резервні копії та тримаємо готовий відкат. Простої під час планових робіт скорочуються в рази, а команда перестає боятися оновлюватися.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Безпечне оновлення CMS і плагінів: протокол із бекапом і відкатом
Простий
від 4 годин до 2 днів
Часті запитання

Чому оновлення CMS ламає робочий сайт

Оновлення CMS виглядає як одна кнопка, але ламає сайт не ядро, а зв'язка: ядро, розширення й тема залежать одне від одного. Розширення спирається на внутрішні виклики ядра й пише у власні таблиці, тема перевизначає шаблони виведення. Поки версії узгоджені, цього не видно — розходження проявляється саме в момент оновлення.

Найчастіший збій — конфлікт розширень після оновлення. Ядро змінює внутрішні інтерфейси, плагін продовжує викликати старий метод і віддає білу сторінку або серверну помилку там, де виводить свій блок: у формі, картці, стрічці. Решта сайту працює, тому поломку помічають не відразу.

Другий сценарій — злетіла верстка після правок. Зміни, внесені прямо у файли шаблону, оновлення перезаписує пакетом теми: залишається лише те, що винесено в дочірню тему. Користувацька розмітка, додані поля й доопрацювання в редакторі зникають разом із цими файлами.

Третій — осиротілі таблиці оновленого або видаленого розширення. Старі дані залишаються в базі, нова версія пише у свої структури, і на сторінках з'являються дублі, порожні блоки, втрачені зв'язки. Це і є помилка на сторінках після оновлення, яку шукають у верстці, хоча причина в даних.

Виявляється все це лише на живому сайті: копія рідко повторює повний набір розширень, кеш, обсяг бази й накопичену розмітку.

Тому оновлення CMS без простою будуємо не навколо «натиснути оновити», а навколо знімка бази й файлів, перевірки ключових сценаріїв на копії та готового відкату — розбираємо, як це закривається.

Що дає керований контур релізів на сайті

Керований контур змін — це один і той самий маршрут для кожної правки: окрема гілка в Git, автоматичне складання копії, перевірка на стенді, перенесення на бойовий сайт за розкладом. Що замовник отримує на виході — перелічуємо у вимірюваних величинах, а не в обіцянках.

Скорочуємо вікно планових робіт

  • Перенесення змін займає хвилини замість годин ручного викладення: артефакт збирається автоматично, людина в цьому кроці не бере участі.
  • Планові роботи ставляться у вікно низького трафіку й не розтягуються на весь вечір: не пройшла перевірка — повторне перенесення йде тим самим маршрутом.
  • Повернення на попередню збірку займає секунди, тому перемикання не перетворюється на окрему операцію з простоєм.

Прибираємо цілий клас відмов після правок

  • Правка окремого блоку, сторінки або шаблону не зачіпає решту сайту: межі змін видно до перенесення.
  • Клас відмов «після правки відвалився розділ» зникає — перевірки на стенді ловлять його до бойового перенесення.
  • Відновлення з копії займає лічені хвилини, а не години пошуку причини, тому повторних аварійних виїздів з того самого приводу не залишається.

Складаючись, ці ефекти дають передбачувані релізи сайту: частка змін, що дійшли до бойового контуру без правок заднім числом, зростає, а кількість аварійних відкатів падає.

Контур фіксується в документації й повторюється під час кожного оновлення CMS — новий інженер входить у той самий процес, а не винаходить свій.

Формати оновлення CMS: порівняння підходів

Оновлення CMS — це не одна кнопка, а вибір режиму, у якому сайт живе далі. Різниця в тому, хто переносить зміни на робочий контур: інженер за чек-лістом, напівавтоматичний контур із журналом або регламент, що не чіпає ядро.

Варіант Коли підходить Обмеження
Ручне оновлення за чек-лістом Правки в ядрі та шаблонах Потрібні копія й вікно простою
Напівавтоматичний контур із журналом Регулярні релізи, кілька середовищ Спірні плагіни йдуть на ручну перевірку
Повністю автоматичний режим Типові сайти без правок ядра Мажорні версії все одно з перевіркою
Заморозка версій компонентів Рідкісні зміни, зрілий проєкт Накопичуються уразливості, переїзд разом

Ручний режим із перевіркою на копії

Тестова копія сайту піднімається зі знімка бази й файлів — оновлення проганяється на ній, а не на робочому контурі. Інженер проходить сценарії, які найчастіше ламають оновлення CMS: форми, пошук, авторизацію, зв'язки із зовнішніми сервісами. Перед перенесенням знімається знімок для швидкого відкату.

Автоматичний режим і його межі

Автоматичний контур оновлень веде журнал версій і відкочується сам, якщо після оновлення падають ключові перевірки. Межі прості: патчі безпеки він закриває без інженера, а мажорні версії ядра й конфлікти плагінів виводяться на ручну перевірку.

Заморозка версій компонентів — окремий режим: вона корисна, поки список оновлень контролюється, і небезпечна, коли перетворюється на відмову від них.

Етапи робіт: від аудиту до передачі регламенту

Інженерна робота над оновленням рідко починається з самого оновлення — спочатку потрібно зрозуміти, що оновлюємо і чим ризикуємо. Аудит сайту перед роботами відповідає на три питання: які компоненти й версії встановлені, де лежать дані, що зав'язано на застарілі розширення. Без цього кроку прогін змін перетворюється на везіння.

Аудит та інвентаризація

  1. Інвентаризація: перелік ядра, розширень, тем і сторонніх бібліотек; відзначаємо, що не оновлювалося роками й де розходяться вимоги до версії ядра.
  2. Схема резервного копіювання: повний зліпок файлів і бази, окремо — конфігурація та правила маршрутизації. Для великих сховищ додаємо інкрементальний добір, щоб знімок займав хвилини. Копію перевіряємо розгортанням: неперевірений архів копією не вважається.

Перевірка на копії та умови відкату

  • Піднімаємо тестову копію на ізольованому середовищі — свої адреса, база й ключі доступу, щоб робоче середовище не зачіпалося.
  • Прогін змін на копії: оновлюємо ядро й розширення по одному, після кожного кроку читаємо логи помилок і перевіряємо сумісність.
  • Перевірка ключових сценаріїв: вхід і ролі, форми, оплата, пошук, видача каталогу, обмін із зовнішніми сервісами.
  • Умови відкату фіксуємо заздалегідь: точка повернення, час відновлення й ознаки провалу. Якщо сценарій не проходить — повертаємося на попередню версію, не розбираючись із наслідками на живих користувачах.
  • Передача регламенту: що і як часто копіюємо, у якому порядку оновлюємо, за якими ознаками запускаємо відкат.

Документація та артефакти, які залишаються у вас

Після кожного релізу у вас залишаються текстові артефакти, за якими оновлення CMS проводить ваш інженер без нас. Документи лежать у репозиторії поруч із кодом — не окремою папкою, яка застаріває через місяць.

Регламенти та інструкції

  • Документація із супроводу — які модулі оновлюємо планово, у якому порядку, що перевіряємо до і після.
  • Карта розширень сайту — перелік розширень і зв'язків між ними: видно, що потягне за собою оновлення одного вузла.
  • Схема резервного копіювання — що потрапляє в копію (файли, база, конфігурації), з якою частотою, де зберігається і як перевіряється відновлення.
  • Регламент планових робіт — вікно оновлення, прогін на копії, перенесення на робочий контур, точка неповернення.
  • Інструкція з відкату змін — за кроками: який артефакт повернути, якою командою, за якими ознаками переконатися, що сайт піднявся.
  • Чек-ліст приймання робіт — форми, вхід, оформлення замовлення, зовнішні інтеграції: шляхи, які проходять руками після кожного оновлення.

Доступи та розмежування прав

  • Політики доступу до панелі управління — ролі адміністратора, редактора й підрядника, мінімально необхідні права, окремі облікові записи замість спільної.
  • Порядок ротації доступів — що робити при звільненні співробітника або зміні команди: відкликання ключів, перевипуск, журнал входів.
  • Відновлення доступу — де зберігаються резервні коди й до кого йти, якщо панель недоступна.

Кейс: як скоротили простої під час планових робіт

Замовник передав нам супровід сайту — інтернет-магазину на 1С-Битрикс з каталогом на кілька тисяч позицій.

Оновлення модулів і ядра ставили «за фактом виходу», без фіксованого вікна: правки потрапляли на бойовий контур у робочий час, а якщо щось ламалося, причину шукали вже на живому сайті.

За квартал накопичилося п'ять повторних звернень з одних і тих самих поломок — правили симптом, а не причину.

Що було до

Частка правок, що йшли у відкат, трималася близько третини: оновлення ставили відразу на бойовий контур, і при конфлікті залежностей сайт повертали з останньої резервної копії. Копію знімали вручну й не завжди — якщо її не робили, відновлення розтягувалося на години.

Вікно планових робіт займало 4-6 годин, і весь цей час каталог і оформлення замовлень були недоступні.

Що змінилося після впровадження регламенту

Ввели обов'язкову послідовність: знімок бази й файлів, розгортання на копії бойового контуру, прогін сценаріїв замовлення й оплати, лише потім викладення. Відкат став операцією на кілька хвилин — повернення на попередній знімок без ручного складання.

Повторні звернення з однієї й тієї самої поломки припинилися: кожна закривалася з фіксацією причини.

Показник До Після
Простої у вікні планових робіт 4-6 годин 40-60 хвилин
Час відновлення після збою до 6 годин 20-30 хвилин
Частка відкатів при правках ~30% поодинокі випадки
Повторні звернення щодо однієї поломки 5 за квартал 0

Що робити, якщо сайт зламався після правки

Перша дія при поломці — зупинити правки, а не вносити нові. Поки сайт віддає помилку, кожен наступний патч поверх зламаного стану стирає докази: журнали перезаписуються, кеш прогревається, причина розмивається.

Фіксуємо стан: знімаємо копію бази й файлів, зберігаємо журнали сервера й застосунку за останню добу, записуємо список змінених файлів із часом правки. Якщо є режим обслуговування — вмикаємо його, щоб відвідувачі бачили акуратну заглушку замість помилок.

Далі шукаємо останній завідомо робочий стан. Зазвичай це точка відновлення з резервної копії перед правкою, рідше — попередній реліз у системі контролю версій.

Порівнюємо його з поточним: розходження в кількох файлах указує на пряму причину, розходження в схемі бази — на несумісну міграцію.

Відновлення з резервної копії робимо не на бойовому контурі, а на окремій копії: так видно, що поломка зникає, і залишається можливість дістати дані, які встигли записатися в зламану версію.

Причину ізолюємо поділом: повертаємо зміни навпіл і дивимося, на якій половині збій повертається. Заодно перевіряємо суміжні шари, які найчастіше винні в правках — кеш, правила перенаправлення, права на файли, розширення.

Пошук причини збою прискорює журнал помилок: рядок із фатальною помилкою й часом правки майже завжди вказує на конкретний файл.

Після відновлення розбираємо інцидент на сайті: чому проблема не проявилася на тестовому контурі, чому моніторинг подав сигнал не відразу, як правка потрапила на бойовий сайт в обхід регламенту.

За підсумками змінюємо порядок роботи — копія перед кожною правкою, перевірка відкату до публікації, тестовий контур із копією бази й заборона прямого редагування на бойовому сайті.

Часті технічні сумніви щодо регламенту робіт

Сумніви стосуються не самої процедури, а її меж: що саме зачіпається, що залишається недоторканим і як швидко повернути попередній стан. Нижче — питання, які найчастіше ставлять до старту робіт з оновлення CMS.

Чи потрібно зупиняти сайт на час робіт?

Ні, працюємо на копії: розгортаємо знімок, оновлюємо його, проганяємо перевірки й лише потім перемикаємо трафік. Недоступність виникає лише на момент перемикання — його ставимо у вікно мінімального навантаження.

Як перевіряється сумісність розширень сайту?

Збираємо перелік розширень і звіряємо з цільовою гілкою ядра, потім ставимо все на стенд і проходимо ключові сценарії. Несумісні замінюємо або залишаємо на попередній версії, поки не з'явиться робоча.

Які строки зберігання резервних копій?

Копія знімається перед кожним оновленням і живе до підтвердження стабільності наступного кроку: база, файли, конфігурація. Далі — за політикою зберігання: останні точки у швидкому доступі, щомісячні знімки тримаємо довше.

Чи можливе часткове оновлення компонентів?

Так, ядро, тема й розширення оновлюються окремо — це знижує ризик. Обмеження одне: частина розширень потребує мінімальної гілки ядра, тому порядок кроків визначаємо заздалегідь.

Які доступи й права потрібні?

Окремий технічний обліковий запис із правами лише на потрібні розділи, доступ захищеним каналом і журнал дій. Постійний адмінський доступ до робочої панелі не потрібен.

Обговоримо завдання і повернемося з планом робіт

Щоб оцінка спиралася на факти, а не на припущення, корисно надіслати вхідні дані по сайту — цього достатньо, щоб зрозуміти обсяг і ризики. Нижче перелік того, що знімає найбільше питань на старті.

  • Опис сайту й середовища: платформа та її актуальна гілка, веб-сервер, база даних, де розміщено проєкт — власний сервер чи хмара, як влаштовано резервне копіювання зараз.
  • Склад розширень і тем: які модулі сторонні, які давно не підтримуються, де вносилися ручні правки в ядро або шаблони.
  • Поточний порядок правок: хто і як вносить зміни, чи є проміжний контур, як перевіряється результат перед викладенням на робочий сайт.
  • Вимоги до доступності: чи допустиме коротке вікно обслуговування, у які години воно можливе, які сценарії на сайті не можна зупиняти зовсім.
  • Проблеми, які вже траплялися: що ламалося після минулих оновлень, чи залишилися незакриті помилки й нотатки про інциденти.
  • Доступи й бажане вікно робіт: репозиторій, панель хостингу, тестовий контур, а також строки, до яких оновлення CMS потрібно провести.

Надсилайте те, що є: частина даних зазвичай відновлюється по ходу розбору. Опишіть завдання супроводу — повернемося з оцінкою та планом робіт із супроводу сайту: етапи, порядок оновлення ядра й розширень, точки відкату, вікна викладення й відповідальні.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060