вторник, 25 августа 2015 г.

Обновление PrestaShop с 1.4.4.0 до 1.6.1.1

Обновление PrestaShop довольно болезненная тема. Достаточно долгое время разработчики не уделяли особого внимания улучшению системы обновлений с версии на версию. Так, например, больше года (с 2012 до 2013) обновление с версии 1.4 было практически не возможно без правок базы данных. В данной статье разберем кратко, но по сути все об обновлении с версии stable 1.4.4.0 до версии stable 1.6.1.1 (от 20 августа 2015 года), без лишних слов. Обновление будет проходить в несколько этапов.
Будьте предельно внимательны в каждом вашем действии!
К сожалению, для обладателей версии 1.4.9 данная инструкция по обновлению не поможет, так как эта версия – “кривая” (попробуйте промежуточно обновиться до 1.4.10, этот вариант не пробовал). У этой версии на столько кривая БД, что если вы обновитесь, например, с 1.4.4 до 1.4.9, а потом до 1.4.11, то вы скорее всего не сможете обновиться до 1.5, потому что БД будет “испорчена”.
Так же для обновления по данной инструкции вам необходим хороший хостинг, в моем случае это hostland, самый гибкий из всех известных мне, функционал которого не нарушит ход обновления.
Размещение на локальных машинах я не рассматривал, все происходит online, на рабочих субдоменах.
В первой стабильной версии PrestaShop 1.5, а именно 1.5.0.17, у вас возможно еще будет поддерживаться шаблон с 1.4, но далее вам придется перетягивать его самостоятельно или нанимать верстальщика (это не дорого). Кроме того, для версии 1.6, стиль и позиционирование вашего прежнего шаблона скорее всего “древнее” и он (дизайн) вообще не актуален по современным меркам веб-дизайна. Рекомендую оставить от прежнего дизайна только цветовую гамму, если она у вас вообще правильно подобрана под тематику.
Еще один момент, существует мнение, что количество товаров влияет на ход обновления. Это миф, точнее почти миф. Особой разницы 10 товаров у вас в магазине или 100 тысяч – нет. Единственное влияние обновления оказывается в виде обузы (веса создаваемых файлов и время на их передачу). То есть тут играет роль время выполнения скрипта (нужно 60 сек) и максимально допустимое значение кэша (судя по графикам хватает и 50мб оперативки для скриптов). Добросовестные хостеры не ставят блокираторы, то есть даже если вы выйдете за порог максимального объема и времени, скрипт продолжит работать, но они накажут если у вас высокая нагрузка систематична. По этой причине я опять же рекомендую вам перейти на hostland, где на “просторах” лимит 256мб памяти, чего хватит с головой. Даже если вам потом будет чего-либо не хватать, вы сможете увеличить квоту на каждую отдельную услугу (будь то память (CPU), место на диске, время выполнения скриптов, количество единовременных соединений и прочее) не переходя на другой тариф. В общем этот хостинг очень гибкий и в то же время бюджетный, а главная их фишка во встроенном антивирусе для сайтов AI-Bolit.
Перед началом обновления переведите ваш основной сайт магазина в режим обслуживания. В админ панели пункт “настройки”, далее включить магазин – нет, сохранить.

Инструкция по обновлению PrestaShop с 1.4.4.0 до 1.6.1.1

  1. Скачиваем архивы нужных релизов:
  2. Обновление проходит с помощью последней версии модуля 1-click Upgrade. Если у вас уже был установлен этот модуль, то убедитесь, что он обновленный (а лучше удалите и установите новый).
  3. На хостинге создаем 3 субдомена: upgrade, upgrade2, upgrade3 (названия любые, удобные вам). Первый субдомен отвечает за минорное обновление с версии 1.4.4.0 до 1.4.11.1 stable и далее архивное обновление до 1.5.0.17 stable. Второй субдомен отвечает за минорное обновление с версии 1.5.0.17 stable до версии 1.5.6.3 stable. Третий субдомен отвечает за архивное обновление 1.5.6.3 stable до 1.6.1.1 stable. В итоге мы получаем три субдомена: на первом начальная версия 1.5, где возможно работает шаблон 1.4; на втором последняя версия 1.5; на третьем последняя на данный момент версия 1.6. Вы потом уже лично можете выбирать, какая для вас лучше (хотя, по-хорошему, документацию по движку и его версиях нужно читать заранее: тут по 1.5, тут по 1.6).
  4. Заходим в админку вашего, пока не обновленного сайта, в раздел бэкап. Создаем бэкап базы данных и скачиваем его себе. Именно так, а не через mysql экспорт!
  5. Переносим все файлы сайта в папку первого субдомена (upgrade), создаем и подключаем новую БД, меняем настройки (на хостинге в папке config файл sittings) под новую БД. Заливаем ранее скаченный бэкап БД в базу данных первого субдомена (через phpmyadmin, естественно, или аналог на вашем хостинге).
  6. Обновление до 1.4.11 stable. Заходим в админку субдомена upgrade.вашсайт.ру. Переходим в "Настройки", далее вкладка "SEO и URL". Изменяем адрес сайта с вашсайт.ру на upgrade.вашсайт.ру. Отключаем ЧПУ. Заходим в модуль 1-click Upgrade, в расширенные настройки обновления (Comenzar actualización) и выбираем минорное обновление (Menor Actualizacion) должна быть версия 1.4.11, жмем кнопку “сохранить”. Страница автоматически обновится. Запускаем обновление. Если выдает ошибку/ошибки во время обновления, значит вы сделали что-то не так и нажимайте “Rollback” (откат). Попробуйте обновить снова, возможно ошибка возникла лишь во время апдейта, то есть сервер немного “залип” во время обновления, hostland не залипает.
  7. Обновление до 1.5.0.17 stable. Заливаем скаченный архив релиза 1.5.0.17 в папку admin/autoupgrade/download (папка может называться и не admin, если вы меняли ее называние). Заходим в админку первого субдомена, нажимаем ctrl+F5, чтобы почистить кэш браузера. Опять заходим в модуль 1-click Upgrade, но теперь выбираем архивную версию 1.5.0.17 (archivo local), “сохранить”, начинаем обновление. Если выдает ошибку/ошибки во время обновления, значит вы сделали что-то не так и нажимайте “Rollback” (откат) и повторите заново этот шаг обновления (придется еще раз залить архив релиза в папку). Далее двигайте в порядке обратного исключения возможных ошибок в верх по списку инструкции. Проверьте, точно ли вы скачали релиз 1.5.0.17? А до этого точно минорное обновление было до 1.4.11? И так далее. В этом деле, как говорится, шаг влево – расстрел.
  8. Обновление до 1.5.6.3 stable. Заходим в админку, чистим кэш браузера и создаем бэкап базы данных. Кстати, чтобы включить сайт версии 1.5 нужно перейти в “Настройки” > “Maintance” и вы скорее всего увидите, насколько масштабно у вас “поехал” дизайн сайта. Когда просмотр закончили, двигаемся дальше, предварительно отключив сайт там же в “Maintance”. Файлы первого субдомена переносим в папку второго субдомена. Подключаем новую БД (в файле sittings на хостинге) и заливаем бэкап в новую БД (phpmyadmin). Заходим в админку и меняем адрес сайта с upgrade.вашсайт.ру на upgrade2.вашсайт.ру. Проверяем отключен ли ЧПУ. Меняем шаблон сайта на default! Заходим в модуль 1-click Upgrade и выполняем минорное обновление до 1.5.6.3. Если ошибки, повторяем все заново, но более внимательно. Если все ок, идем дальше.
  9. Обновление до 1.6.1.1 stable. Да в этом этапе, мы сразу прыгаем через несколько версий 1.6, так как первые вообще не адаптированы к переходу с 1.5. Приступаем. Заходим в админку, чистим кэш браузера и создаем бэкап базы данных. Файлы второго субдомена переносим в папку третьего субдомена (upgrade3). Заливаем ранее скаченный архив 1.6.1.1 Stable в папку admin/autoupgrade/download. Подключаем новую БД и заливаем бэкап в новую БД. Заходим в админку upgrade3.вашсайт.ру, изменяем адрес сайта (на upgrade3), проверяем выключен ли ЧПУ. Запускаем архивное обновление до 1.6. Если все ок, поздравляю вас! Теперь осталось лишь поменять шаблон на новый базовый и перетянуть на него ваш старый дизайн, хотя может пора сделать что-то новое? Если ошибки, то начинаем все заново.

Подводные камни.

  1. Ошибка 500 после обновления на 1.6. У вас не активирован ни один шаблон, подходящий для версии 1.6. В админке заходим в “Preferences” > “Настройки” > “Шаблоны”, пункт “Выбор шаблона для магазина” и выбираем default-bootstrap, сохранить.
  2. Изображения не работают. Для вызова изображений в версиях 1.5 и старше используется новая файловая система и именно по этому изображения будут выводиться с ошибкой. Чтобы исправить, заходим в админку, в “Preferences” > “Изображения” и пересоздаем изображения и да, это “не стыдно”)). Спасибо lugobor студии за разбор этой проблемы.
  3. Генерация графиков не работает. В версии 1.4 графики создаются модулем, который не поддерживаемым в версии старше 1.5. Его нужно просто удалить (если вы остались на 1.5), а в 1.6 будет уже совершенно другая система.
  4. Не работает импорт в 1.6. Белый экран (если у вас отключен дебаг) или Fatal error: Class ‘CacheFS’ not found in …/classes/cache/Cache.php on line 132 или 131. Заходим в папку config, в файл sittings, изменяем CacheFS на CacheFs. Импорт работает.
  5. Выгрузка (экспорт) товаров без короткого и полного описания. Выгрузка товаров начиная с версии 1.5 происходит с помощью SQL manager или как и в 1.4 напрямую из БД. Пример запроса для полного экспорта товаров описан тут. Дублирую код, вместо ps_ ваш префикс в БД.
  6. Таблицы в описании товара “слетели”. Да, это факт, обновиться с сохранением таблиц в описании простым способом не получится. Табличная разметка удаляется при минорном обновлении с 1.5.0.17 на 1.5.6.3. Можно полностью выгрузить товары из 1.5.0.17, но тогда вообще теряется смысл обновления. Обновление это ускоренный переход на другую версию – “в 1 клик” (на практике далеко он не один). Если у вас проблема с таблицами и вы не видите смысла магазина без них, то приступайте к выгрузке из 1.5.0.17. Пример выгрузки по ссылке в предыдущей проблеме.

Зачем обновляться?

  1. Начиная с версии 1.5 появляется встроенный SEO модуль для товаров, а не только для категорий. Теперь для каждого отдельного товара можно прописать meta теги, без дополнительных модулей!
  2. Генерация страниц работает быстрее, если в 1.4 в среднем около 1-2 секунд, то в 1.5 в среднем 0.3 секунды!
  3. Официальная интеграция с 1С доступна только обладателям интернет-магазинов на ядре PrestaShop 1.5 или 1.6.
  4. Вообще весь, хотя бы базовый, модульный функционал и соответственно возможности просто умопомрачительны. В 1.4 это в целом просто ничто, по сравнению с 1.5 и тем более 1.6.

9 комментариев:

  1. про изображения в 1.5 у вас написано пересоздать а по ссылке что вы написали переместить, вы как то определитесь...и да "нестыдно" - определенное действие, а не выражение эмоций

    ОтветитьУдалить
  2. возникли сложности с пунктом 5 меняем настройки (на хостинге в папке config файл sittings) под новую БД. все действия на домене в админке отражаются на субдоменной копии сайта. адрес субдомена меняется на домен.

    ОтветитьУдалить
    Ответы
    1. Для каждого субдомена нужно использовать отдельную базу данных. Возможно вы перенесли файлы сайта, но они используют бд для основного домена.

      Удалить
    2. В админ панель сайта на поддомене я попал. А вот сам поддоменый сайт постоянно перенаправляется на оснойной домен. т.е. изменения происходят в админ панеле, а на сайт зайти не выходит что бы их увидеть(редирект). С чем это может быть связано? какие файлы смотреть подскажите?

      Удалить
    3. Если вы уверены, что для субдомена подключена отдельная БД. Переходите к пункту 6, а именно:

      "Заходим в админку субдомена upgrade.вашсайт.ру. Переходим в Настройки, далее вкладка SEO и URL. Изменяем адрес сайта с вашсайт.ру на upgrade.вашсайт.ру. Отключаем ЧПУ."

      Удалить
    4. Спасибо за ответы. При обновлении на 1.5.0.17 постоянно вылазит ошибка. От инструкции не отклонялся. Несколько раз все удалял и пробовал сначала. Как обойти эту ошибку? Обновление завершается, но части товаров в админке не видно. Категории все на месте.
      [ERROR] PHP 1.5.0.13 -- Step 3: Fill in id_order_reference and merge duplicate lines /* PHP:add_order_reference_in_order_payment(); */
      Alerta detectada durante la actualización.

      Удалить
    5. Главная проблема обновления в 1-клик в том, что он создан для обновления престы в базовой комплектации. Судя по ошибке были правки id заказов и обновлялка сочла их за дубли. Товары не видно по причине какой-то другой ошибки.

      Есть альтернативный вариант обновления - экспортировать товары и категории из вашего 1.4 и импортировать их через стандартный импорт в 1.5 или 1.6.

      Удалить
    6. А как при этом сохранить url страниц? Знаю, что если на сайте был включен ЧПУ, то url можно перенести. Но как? Ручная правка потребуется? какие таблицы в БД нужно будет проверить на целостность и вручную добавить недостающие строки, таблицы?

      Удалить
  3. Основа урлов престы это ID.

    Сначала категории. Выгружая категории, нужно выгрузить их айди. Потом загрузить категории с теми же айди.

    Второй этап, выгрузить товары с сохранением айди товара и основной категории, к которой они привязаны. Ну и импортируем все товары.

    Потом, после импорта и включения чпу, все старые ссылки будут работать.

    ОтветитьУдалить

Популярное