Оценка обновления Magento - это процесс сбора информации об изменениях, примененных к установке, которую вы собираетесь обновлять, проверка того, могут ли эти изменения вызвать проблемы, и затем оценка того, сколько времени требуется для их обхода.
Все модификации можно в буквальном смысле разделить на неосновную и встроенную .
Неосновные модификации - это те, которые не будут перезаписаны при обновлении. Это сторонние расширения , основные файлы, помещенные в локальную область (app / code / local / Mage) и пользовательская тема .
Изменения в ядре применяются непосредственно к файлам ядра Magento (app / code / core), файлам локализации (app / locale / en_US), шаблонам ядра и некоторым вещам, таким как javascripts , внешним библиотекам, которые редко настраиваются, тем не менее, необходимо принимать во внимание ,
Неосновные модификации
Сторонние расширения
Во время обновлений сторонние расширения являются основным источником проблем. Это означает, что чем больше расширений, тем больше времени вам потребуется для их анализа.
Первое, что нужно проверить, это то, что функциональность, предоставляемая расширением, еще не реализована в той версии Magento, которую вы обновляете. Например , некоторые расширения , например Yoast_CanonicalUrl
, Mxperts_CustomerAddress
или Fontis_Wysiwyg
были широко использованы в Magento 1.3.xx и старше , но в настоящее время являются частью основной функциональности Magento и больше не требуется.
Тогда хорошей идеей будет проверить (спросить своего клиента), действительно ли вам нужны все те расширения, которые у вас есть. Там могут быть некоторые расширения, которые вы установили, но никогда не использовали. Так что на этом этапе хорошо бы провести уборку.
Затем важно проверить совместимость каждого из оставшихся расширений с версией Magento, до которой вы обновляетесь. В случае, если некоторые расширения не совместимы, и нет аналогичных расширений, вам будет сложно выбрать, потерять ли некоторые функции или изменить существующие расширения, чтобы сделать их совместимыми.
Примечание. Не изменяйте стороннее расширение напрямую, а создайте новое расширение, которое расширит устаревшее расширение, а затем установите зависимость в загрузочном XML нового расширения.
После того, как все сделано, фактический анализ каждого из остальных расширений может быть предоставлен Он всегда должен начинаться с проверки etc/config.xml
файла. Есть 3 вещи для поиска:
- Переписывание классов само по себе не является чистой техникой, но в некоторых случаях другого пути нет. Так что, если переписанный класс был изменен в новой версии Magento, это может стать потенциальной проблемой.
- Обновления макета с меньшей вероятностью вызовут проблемы с вашим обновлением, но, тем не менее, если расширение ссылается на блок, который устарел в более новой версии Magento, вам придется обойти это.
- Обновления SQL являются крайне недооцененным источником проблем во время обновлений. Эта проблема возникает, когда стороннее расширение создает внешний ключ, ссылающийся на какое-то поле в таблице Magento по умолчанию. В результате это поле заблокировано от изменений. И тогда, если собственный скрипт установки попытается обновить это поле, он молча завершится неудачей. После этого каждый следующий скрипт установки, ссылающийся на это поле, приведет к сбою вашего обновления.
Приложение / код / местные / Mage
После того, как вы закончили со своими расширениями, пришло время взглянуть на ваш app/code/local/Mage
каталог. Здесь вы найдете измененные файлы ядра, перемещенные в local
область видимости. Каждый из них, безусловно, будет стоить вам седых волос, потому что вы никогда не знаете (если не вы их туда положили), что там было изменено и по какой причине. Таким образом, вы должны сравнить каждый из них с источником и перенести добавленную функциональность в соответствующий файл новой версии.
Пользовательская тема
Последняя модификация - это пользовательская тема. Может показаться, что это не имеет большого значения, но на самом деле это серая зона. Базовая тема Magento изменяется от версии к версии, и каждая пользовательская тема должна имитировать некоторые из этих модификаций. К сожалению, нет серебряной пули, чтобы определить, что искать и что нужно перенести. Так что будьте готовы к некоторым серьезным сюрпризам и незначительным придиркам после обновления.
Модификации In-Core
В идеальном мире их нет. Но когда вы получили установку Magento после того, как она была нарушена сторонними разработчиками, которые предлагают много по дешевке, вы можете ожидать чего угодно. Таким образом, изменения в ядре - это те, которые будут перезаписаны в процессе обновления. В большинстве случаев это не приведет к ошибкам, но в результате вы потеряете функциональность, которая была добавлена таким жестоким способом.
Единственный способ обнаружить изменения в ядре - сравнить все файлы вашей установки Magento с чистыми файлами той же версии. Я рекомендую делать это с помощью git. Почему? Просто потому, что он будет хорошо обрабатывать все новые строки и пробелы.
Даже если ваша установка Magento не входит в git, вы все равно можете скопировать свои файлы в отдельный каталог и затем запустить git init. Затем сделайте начальный коммит, скопируйте «чистые» файлы Magento и запустите git status
. Вы получите что-то вроде этого:
Теперь в зависимости от количества измененных файлов вы можете запускать как git diff
для каждого файла, так и для всего пакета сразу. Это даст вам исчерпывающую информацию обо всех сделанных модификациях ядра. Если у вас есть какая-то git-визуализация, такая как phpStorm, вам намного проще:
Я предлагаю сделать git diff > changes.txt
так, чтобы у вас всегда был список изменений вручную.
Имея список основных модификаций, вы можете оценить, что нужно перенести в новую версию и сколько времени потребуется для этого.
Теперь я хотел бы дать несколько советов для реального обновления. Этот процесс хорошо документирован, поэтому я не буду писать, какие команды запускать и где нажимать. Однако я хочу сделать акцент на нескольких важных вещах:
- Мы предполагаем, что вы выполняете обновление в своей среде разработки. Запуск обновления на вашем производственном сервере - самоубийство.
- Не позволяйте им что-либо менять в процессе производства. Поставьте свой Magento под контроль версий или даже временно заблокируйте файлы от записи.
- Отключите все сторонние расширения, но обратите внимание, какие из них были изначально отключены, чтобы впоследствии их не включить.
- Проверьте, есть ли на сервере запущенный скрипт очистки Magento. В противном случае усечение всех таблиц , начиная с
dataflow_*
, log_*
, report_*
.
- Вернитесь к теме по умолчанию во время обновления.
После завершения обновления скрипт:
- Ссылка на
changes.txt
сделанные вами до миграции все внутренние модификации, которые действительно заслуживают миграции.
- Перенос
app/code/local/Mage
изменений, найденных до обновления.
- Один за другим включить сторонние расширения.
- Верните свою тему и всесторонне сравните результат с рабочим сервером.
- Развертывание на производстве, когда вы довольны результатом.
Заключение
Я знаю, что все это звучит страшно, но если вы регулярно обновляетесь, сохраняете свое ядро чистым и устанавливаете расширения только от поставщиков, которым вы действительно доверяете, и только если они вам действительно нужны, вы не столкнетесь с большинством трудностей, описанных в этой статье. Держите вашу Magento EcoSystem здоровой, и вы будете вознаграждены.
Пост скриптум
В очень сложных случаях имеет смысл начать все заново с новой установки последней версии Magento и выполнить постепенную миграцию темы и функциональности вашего магазина. Это определенно займет время, но в итоге у вас будет здоровая система Magento с полным осознанием того, что происходит.