Как сделать откат в битриксе

Обновлено: 07.07.2024

После обновления Битрикса до версии 18.0.8 в решениях Аспро сейчас пропадают картинки анонса в каталоге, новостях и на других страницах со списком элементов. Предлагаю экстренное решение до выхода обновления с исправлением ошибки.

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

Находим в файле функцию getFieldImageData и в ней строку:
$arItem[$fieldName] = $imageData;

Заменяем эту строку на:
$arItem['FIELDS'][$fieldName] = $imageData;

Готово, теперь большинство компонентов будет отлично работать.

Если в каком-то разделе, например в каталоге, все еще нет картинок, то откройте шаблон списка элементов и найдите строки:

if($bShowImage) <
$bImage = strlen($arItem['FIELDS']['PREVIEW_PICTURE']['SRC']);
$arImage = ($bImage ? CFile::ResizeImageGet($arItem['FIELDS']['PREVIEW_PICTURE']['ID'], array('width' => 400, 'height' => 200), BX_RESIZE_IMAGE_PROPORTIONAL_ALT, true) : array());
$imageSrc = ($bImage ? $arImage['src'] : SITE_TEMPLATE_PATH.'/images/noimage_product.jpg');
$imageDetailSrc = ($bImage ? $arItem['FIELDS']['DETAIL_PICTURE']['SRC'] : false);
>

И удалите в них ['FIELDS'].
После этого в шаблоне тоже будут показываться изображения.

UPD 21.09.2018: Битрикс выпустил обновление модуля "Информационные блоки" (обновление 18.0.4), которое решает эту проблему. Но если у вас лицензия Битрикса не активна и вы не можете поставить обновления, вы можете воспользоваться инструкцией выше. Или заказать у нас продление Битрикса, обращайтесь!

Разберемся, как откатить изменения базы данных сделанных с помощью Liquibase.

В первой статье мы рассматривали что такое Liquibase, и его интеграцию со Spring Boot. Spring Boot позволяет накатывать изменения схемы БД при старте приложения, но откатить схему БД нельзя. Поэтому прежде чем говорить про откат, нам нужно научиться запускать Liquibase отдельно.

Чаще всего данные приложения хранятся в SQL базе данных. Если у вас корпоративное приложение, то скорее всего имеется несколько стендов: стенд разработки, пре-прод и прод. Каким образом синхронизировать схему базы данных между ними? А между различными разработчиками?

struchkov.dev Struchkov Mark


Мы расмотрим два варианта запуска Liquibase:

  • С помощью исполняемого файла
  • С помощью docker

Запускаем Liquibase


Распаковав архив получаем папку liquibase-4.6.2 . В ней много всего лишнего. Можете оставить только следующие файлы/папки

  • lib – папка с необходимыми для работы jar: драйверы БД.
  • liquibase – бинарный файл для запуска в среде Linux/MacOS
  • liquibase.bat – bat файл для запуска в среде Windows;
  • liquibase.jar – исполняемый .jar тут содержится вся логика

Файл liquibase.properties

Этот файл отвечает за конфигурацию запуска. Вместо того, чтобы запускать команды с кучей флагов, лучше создать один файл со всеми параметрами.

Создание changeLog

Чтобы что-то откатывать, нужно сначала что-то накатить. В скаченной папке liquibase-4.6.2 создадим папку changelog. В ней мы и будем создавать наши changeLogFiles.


Так будет выглядить структура

Содержимое файлов changelog-v.1.0.0.xml и changelog-v.2.0.0.xml :

Обратите внимание на changeSet в начале каждого файла. О них мы еще поговорим.

Содержимое файла create-tables.xml

Содержимое файла create-table-hero.xml

В итоге получается несложная схема БД:


Запуск исполняемого файла

Перед запуском скриптов, не забудьте создать базу данных. После этого переходим в папку liquibase-4.6.2 и запускаем исполняемый файл:

Видим, что все прошло успешно. Проверям нашу базу данных.


Все таблицы на месте

Запуск с помощь докера

Можно выполнить скрипты используя докер образ. Для этого создадим небольшой Shell Script. Он будет запускать контейнер, который будет выполнять скрипты Liquibase, а потом удалять этот контейнер.

Не забудьте заменить YOUR_PATH_TO_CHANGELOG на путь до своей папки. Там должны лежать ваши changeLogFiles и liquibase.properties , который мы создавали выше. То есть нужно перенести liquibase.properties в папку changelog.

Откат изменений

Теперь, когда мы разобрались с запуском Liquibase, можем переходить к откату изменений.

Многие операции Liquibase может откатить самостоятельно: создание таблицы, доавление колонки. Для некоторых changeSet необходимо написать скрипты отката. Мы начнем с примеров, где Liquibase может сам сделать откат, и постепенно дойдем до ручных откатов.

Важно понимать, что откат изменений приводит к потере данных. Например если вы откатите создание таблицы, а в ней были данные, то вы их потеряйтее.

Посмотрим содержимое таблицы databasechangelog , которая сохраняет историю выполнений changeLog.


Откат rollbackCount

Если мы вызовем Liquibase с аргументом rollbackCount 1 вместо update , произойдет откат последнего changeSet: связь таблицы hero и book будет удалена.

В databasechangelog запись также пропадет, как-будто и не было этого changeSet. Поэтому можно снова запустить Liquibase update и связь между таблицами будет восстановлена.


Откат rollback tag

Откатывать по счетчику не удобно. Допустим вы хотите откатить все ваше приложение до предыдущей версии. С этой предыдущей версии у вас уже было выполнено множество changeSet, и считать сколько их было дело не благодарное.

Поэтому в каждом changelog-file-version файле я добавил tagDatabase. Это позволит откатить все изменения, которые были сделаны после этого тега, включая запись о создании этого тега. Таким образом можно откатить и ваше приложение, и схему до необходимого состояния.

Выполнив команду rollback v.2.0.0 мы откатим следующие изменения:

Ручные roolBack

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

Добавим в наш changeLogFile changeSet со вставкой данных в нашу таблицу:

Попытаемся откатить этот changeSet:


И видим, что ничего не получилось. Автоматически вставку данных не отменить. Для отмены, необходимо в changeSet добавить раздел rollback.

Из первой статьи вы знаете, что нельзя изменять уже выполненные changeSet. Но это правило не относится к разделу rollback. Его вы можете добавлять и изменять в changeSet даже после выполнения оного.

Поэтому просто добавляем в последний changeSet наш rollback:

Снова запускаем откат последнего изменения, и видим что все прошло успешно.


Мы указали все в одном теге rollback , но можно было сделать и так:

Преимущество такого подхода в том, что если один из rollback был неправильно написан, то все остальные rollback до него выполнятся.

Также вы можете использовать чистый SQL:

Проверка отката

Можно использовать команду updateTestingRollback , чтобы протестировать откат и накатить новые изменения.

Но работает эта команда довольно странно. Сначала накатывает новые изменения, а потом последовательно выполняет откат, а затем снова запускает накат. Важно то, что эта команда не следит за сохранностью консистентности.

Запрет на откат changeSet

Возможно вы захотите, чтобы какой-либо changeSet остался после отката. То есть вы хотите откатить все изменения, кроме некоторых. Для этого добавьте пустой тег rollback .

В таком случае откатятся все изменения, кроме содержащих пустой тег rollback . Будьте аккуратны с этой функцией.

Заключение

Возможность откатить свою базу является не обязательной, но иногда полезной опцией. Тщательно проверяйте, откатываются ли ваши изменения. Даже если вы ошибетесь в разделе rollback , вы всегда сможете его изменить.

Используйте версии БД, которые могут совпадать с версиями вашего приложения, для еще более удобного управления отката схемы. И помните, что необдуманные откаты могут привести к потере данных.

Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS

Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS


Всем привет, снова изучаем CMS Bitrix, на повестке дня как восстановить сайт битрикс из резервной копии.Как создать резервную Битрикс корпоративный портал описано тут, как установить описано тут. Вам нужно единственное на первом окне мастера выбрать не новая установка а восстановить из резервной копии (Восстановить проект), процедура эта не частая, но все равно оставляет у ряда веб-мастеров некоторые вопросы.

Как восстановить сайт битрикс

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


Существует 4 вида восстановления сайта на Bitrix.


1 Способ

1. Развернуть резервную копию из облака 1с Битрикс. Компания Битрикс предоставляет такую услуга, удобно, и вроде говорят что безопасно, но не верится. Для запуска вставляете ваш ключик и все. Начнется его подтягивание через интернет, далее следуете инструкциям мастера.


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-03

2 Способ


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-04

3 Способ

3. Загрузить локально. Выбираете файл с компа и поехали. Желательно, чтобы вы находились в одной локальной сети.


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-05

Первое во что упретесь это в ограничение размера загрузки в nginx. Можете получить типа



Меняем размер в конфиге


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-11

Параметр client_max_body_size, как раз и отвечает за максимальный размер. Правим его и сохраняем файл.


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-12

4 Способ

4. Способ это через ssh залить бэкап в корень / home/bitrix/www/ можно сделать с помощью winSCP (можно посмотреть в конце этой статьи как это сделать)


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-06


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-07


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-08


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-09

Как видим появился еще один пункт Архив загружен в корневую папку сервера, выбираем архив и жмем далее


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-10

Данный метод, чем быстрее, а тем, что все резервные копии лежат локально и восстановить сайт битрикс, будет большая вероятность без проблем.


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-11

Жмем восстановить. Указываем данные для доступа к базе данных:

  • Сервер базы данных > у меня localhost
  • Имя пользователя
  • Пароль
  • Имя базы данных


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-12

Все пошло восстановление базы данных и сайта битрикс.


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-13

Удаляем скрипты и резервные копии


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-14

Перейти на сайт. Все успешно восстановилось


Как восстановить битрикс (Корпоративный портал) из резервной копии на примере CentOS-15


Восстановление сайта на 1С Битрикс из резервной копии

Предлагаем пошаговую инструкцию в картинках по восстановлению сайта на 1С Битрикс из резервной копии. На Web сервере должно быть установлено 1С Битрикс Веб окружение.

Далее предлагаем просмотреть в screenshots последовательность действий, необходимых для восстановления сайта.


Вновь установленное 1С Битрикс Веб окружение позволяет произвести новую установку 1С Битрикс или восстановить сайт из резервной копии. Мы выбираем Восстановить проект .


На шаге 1 восстановления сайта на 1С Битрикс из резервной копии нам предлагают инструкцию по подготовке архива сайта. Мы уже подготовили архив и можем нажать Далее .


На шаге 2 Восстановление сайта на 1С Битрикс из резервной копии мы выбираем загрузить файл с резервной копией с локального диска.


Конфигурация нашего Web-сервера: Виртуальная машина на CentOS с установленным 1С Битрикс Веб-окружением. Поэтому на шаге 3 мы выбираем "Восстановление в Битрикс Веб-окружение" и нажимаем кнопку Восстановить .


Шаг 3 "Восстановление базы данных 1С Битрикс" самый продолжительный этап.

Восстанавливая сайт на 1С Битрикс из резервной копии, на шаге 3 "Восстановление базы данных" Вы можете столкнуться с предупреждением об ошибке:

Внимание! Сайт работал в одно байтовой кодировке, а конфигурация сервера рассчитана на кодировку UTF-8. Установите php_value mbstring.func_overload=0 или php_value mbstring.internal_encoding=ISO-8859-1.

Причина проблемы: Современное 1С Битрикс Веб окружение работает с сайтами в кодировке UTF-8. Если Ваш сайт старый, и Вы не устанавливали обновления ядра 1С Битрикс, скорее всего Ваш сайт работает в одно байтовой кодировке символов.


Решение проблемы:

Прежде чем нажать кнопку Восстановить , отредактируйте на Web сервере в корне своего сайта файл .htaccess:

Закомментируйте в файле .htaccess 2 строки и добавьте две другие строки с правильными значениями переменных окружения mbstring.internal_encoding и mbstring.func_overload:

Обратите внимание! Bitrix рекомендует кодировку ISO-8859-1, а мы ставим cp1251, так уж у нас в России повелось.

Не правильно установленное значение переменной окружения mbstring.func_overload может приводить к различным ошибкам в работе Bitrix. Это – ошибки кодировки символов, ошибку авторизации на сайте и другие.

Некоторые переменные окружения можно объявлять в корневом для сайта файле .htaccess. В том числе, и для mbstring.func_overload в файле .htaccess можно добавить строчку:

Где 0 значение параметра mbstring.func_overload. Обратите внимание, в файле .htaccess значение параметра указывается через пробел.

Однако, PHP версии старше 5.2 не читают mbstring.func_overload из файла .htaccess. В этой ситуации мы рекомендуем установить глобальную переменную mbstring.func_overload, например, вы можете добавить строчку в файл /etc/php.d/mbstring.ini:

  • Предыдущий пример из Centos 6.3 с установленным Bitrix Веб-окружением – Linux 4.2.
  • Если вы используете на сайте кодировку UTF-8, то значение mbstring.func_overload должно быть 2.

Проверить результаты изменений в веб окружении можно через Панель управления Bitrix в разделе Настройки > Инструменты > Настройки PHP :

Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.

1. Совместимость формата *.tar.gz

Формат архива резервной копии *.tar.gz предназначен для распаковки файлом restore.php и корректно распаковывается только с его помощью. Распаковывать другими архиваторами целесообразно только для познавательных нужд или получения отдельных файлов скриптов и изображений, по какой-то причине утерянных. Делать собственные сборки и модификации резервной копии при помощи архиваторов rar, zip, 7z нецелесообразно, такой архив не будет распакован файлом restore.php.

2. Пошаговое восстановление резервной копии

А) Подготовьте окружение и архив

Б) Запустите восстановление

В) Действия на Первом шаге

Choose the language: [RU] – выберите язык

Archive name: [200906031441_b2c12992.tar.gz] – выберите имя архива

Step (sec.): [30] – укажите длительность шага распаковки

Restore – перейдите ко Второму шагу

Г) Действия на Втором шаге

Database dump file: [200906031441_b2c12992.sql] – выберите имя архива базы данных

User Name: [‘’] – не заполняйте

Password: [‘’] – не заполняйте

Database Name: [ ] – не заполняйте

Database Host: [localhost:31006] – допустимы только имена localhost:31006 или localhost:3 6448 . Таковы настройки базы данных по умолчанию.

Если во время установки решения возникла какая-то ошибка. Попробуйте переустановить его. Для этого сначала нужно удалить текущее (недоустановленное или установленное некорректно) решение:

1. Зайдите в "Список мастеров"



В списке справа выберите данное решение и удалите.

2. Зайдите в раздел "Market Place"


Выберите решение и удалите, а затем нажмите "Стереть".

После окончательного удаления заново установить решение. Если ошибка повторится, рекомендуется обратиться в техподдержку.

Если Вас не устроило качество обслуживания технической поддержки, просим Вас обратиться в службу Контроля качества

Читайте также: