Лидеры года — новая категория на Workspace Digital Awards! Номинируйте вашу команду, продукты и проекты.
Дмитрий Гапонов
Обновление CMS живого сайта с версии 2017 года, с копией и постраничной сверкой
Дмитрий Гапонов
#Поддержка и развитие сайта

Обновление CMS живого сайта с версии 2017 года, с копией и постраничной сверкой

Дмитрий Гапонов Россия, Новосибирск
Поделиться: 0 0 0
Сфера

Промышленность и оборудование

Сдано

Сентябрь 2026

Задача

Сайт на MODX стоял на сборке 2017 года с открытыми дырами. Заказчица хотела переехать на актуальную версию, но сайт живой, с магазином, двадцатью пятью дополнениями и тремя гигабайтами файлов, и ронять его нельзя.

Хостинг добавил условий. Создавать вторую базу запрещено, системный интерпретатор новее того, на котором крутится сайт, и запускать обновление надо строго старым. Доступа по FTP не было, всё шло через свой канал в админке. Отдельно висел риск - на этом же сайте параллельно ставилась защита форм, и обновление могло унести её с собой. Срок двое суток, в цену входила починка дополнений, если после переезда что-то отвалится.

Решение

Начал с бэкапа и с проверки бэкапа, а не с веры в него. Дамп базы и два архива файлов легли за пределы публичной папки. Дамп проверил по числу таблиц и по строкам - семьдесят пять таблиц с данными, сто одиннадцать тысяч строк, вставок в дампе ровно столько же, расхождений ноль. Архивы прогнал на целостность и сверил число записей с живым деревом, разошлась одна строка и та объяснима. Отдельно убедился, что внутри лежат конфиги, точка входа, правила сервера и файлы админки.

Вторую базу завести нельзя, поэтому копия сайта пошла на том же сервере с другим префиксом таблиц. На копии прогнал обновление ядра, потом руками обошёл дополнения и магазин.

Откат расписал по шагам до команд - вернуть файлы, залить базу, очистить кеш и прогнать проверку. Ничего не удалял, только переименовывал.

После переключения прошёл все сто шестьдесят одну страницу двумя разными проверками. Первая искала следы ошибок интерпретатора и невыполненные теги шаблонизатора в теле страниц, вторая сверяла набор страниц со слепком, снятым до обновления. Заодно перепроверил, что защита форм пережила переезд - сниппеты, таблица токенов и правки в кусках разметки оказались на месте.

Результат

Сто шестьдесят одна страница из ста шестидесяти одной отдала код 200, ни одной ошибки и ни одного таймаута. Следов ошибок интерпретатора и невыполненных тегов ноль. Набор страниц совпал со слепком до обновления, ничего не пропало и не добавилось. Вход в админку проходит, версия в ней новая. Защита форм жива, живая проверка обеих форм прошла. Тестовые записи из базы убраны, число строк вернулось к исходному. Заказ принят.


Стек технологий

  • PHP PHP Язык программирования
  • MODX MODX CMS
  • MySql MySql База данных

Оцените кейс
Спасибо за оценку
Выскажите мнение
Авторизуйтесь, чтобы добавить свой комментарий.
оставить заявку

Хотите заказать похожий проект?

Оставить заявку