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

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