For the complete documentation index, see llms.txt. This page is also available as Markdown.

Обновление продукта

Подробная инструкция по обновлению iEXExchanger

Эта инструкция описывает штатное обновление уже установленного iEXExchanger.

Обновление можно выполнить двумя способами:

  • через административную панель;

  • через терминал сервера.

Оба способа используют Updater — серверную программу, которая проверяет архивы, создаёт резервную копию, применяет изменения и проверяет результат. Административная панель передаёт задания через Update Agent — службу обновлений на сервере. В терминале технический специалист запускает Updater напрямую.

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

Если iEXExchanger установлен через FASTPANEL

docker

Если iEXExchanger установлен через Docker

Обозначения доменов

В инструкции используются два адреса:

https://ваш_домен — основной домен Frontend, на котором открывается клиентский сайт обменного пункта.

https://app.ваш_домен — технический поддомен Backend. На нём находятся административная панель, API и другие серверные функции iEXExchanger.

При проверке заменяйте эти обозначения фактическими адресами проекта.

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

Обновление сохраняет настроенные домены. Повторно настраивать DNS или менять адреса в конфигурации для обычного обновления не требуется.


Готовые промпты для ИИ-агента

Выберите промпт для нужного способа обновления. Передайте агенту адреса проекта и доступ через защищённое подключение или уже авторизованную сессию.

Не вставляйте в открытый чат пароли, приватные ключи, коды 2FA, содержимое .env или файлы лицензии.

Откат, восстановление баз и удаление точки возврата требуют отдельного решения, если вы ещё не согласовали эти действия.

Работа с AI
Обновление через административную панель
Обновление через терминал

Какой способ выбрать

Подходит владельцу проекта или ответственному администратору.

Потребуются:

  • доступ к административной панели;

  • разрешение на запуск обновлений;

  • архивы Backend и Frontend на компьютере;

  • подготовленная лицензия, если для обновления требуется её замена.

Файлы продукта загружаются через браузер. План, ход операции и результат отображаются в разделе «Обновления». Серверные команды при штатной работе панели выполняет агент.

Подходит техническому специалисту.

Потребуются:

  • SSH-доступ к серверу;

  • права пользователя root или sudo;

  • архивы Backend и Frontend на сервере, а при необходимости — ZIP лицензии;

  • установленный iex-updater;

  • действующая конфигурация Updater.

Команды выполняются непосредственно на сервере, а результат подтверждается серверным отчётом.

Этап 1. Подготовка к обновлению

Проверьте тип установки

Штатное обновление доступно, если продукт установлен через Installer и управляется системными компонентами iEXExchanger.

На сервере должны существовать:

В административной панели должен открываться раздел «Обновления», а блок «Состояние обновлений» должен показывать готовность сервера.

Если Updater отсутствует, Update Agent недоступен или текущий релиз не подтверждён системой, сначала устраните это состояние.

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

Выберите время и проверьте резервное копирование

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

Управляемое резервное копирование должно быть настроено, а хранилище — доступно. Наличие вчерашней копии не заменяет обязательную копию, которую Updater создаёт для текущего обновления.

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

Проверьте свободное место

Во время обновления одновременно могут храниться:

  • полный backup;

  • точка возврата основной базы и базы Pulse;

  • текущий релиз;

  • новый релиз;

  • предыдущий релиз;

  • загруженные ZIP-файлы;

  • временные файлы проверки и распаковки.

Перед резервным копированием и включением Maintenance система проверяет фактический запас диска и inode — доступных записей файловой системы для создания файлов и каталогов. При расчёте учитываются временные данные и дополнительный запас.

Через терминал эту проверку можно выполнить заранее командой apply --dry-run, описанной ниже. Само формирование плана ещё не подтверждает достаточность свободного места на момент запуска.

Если места недостаточно, проверка остановит обновление до резервного копирования и включения режима обслуживания. Устраните причину и повторите проверку; не отключайте защиту.

hard-drive

Этап 2. Получение файлов обновления

Скачивайте файлы только в персональном кабинете на официальном сайте iEXExchanger.

Файлы лицензии и релизы

Для обновления нужны два отдельных файла одной версии:

  1. ZIP обновления Backend.

  2. ZIP обновления Frontend.

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

Типовые имена файлов:

Официальные имена Backend и Frontend могут дополнительно содержать версию, дату или уникальный идентификатор. Например:

Не переименовывайте скачанные файлы. Система определяет назначение и версию не только по имени, но и по внутренним метаданным, структуре пары и контрольным суммам.

Требования к паре Backend и Frontend

Оба архива должны:

  • относиться к одному официальному релизу;

  • оставаться без изменений после скачивания;

  • использоваться в соответствующем поле Backend или Frontend;

  • быть обычными ZIP-файлами, а не ссылками или специальными файлами.

Ограничения сжатых архивов:

Файл
Максимальный размер

Backend

400 MiB

Frontend

100 MiB

Вся пара

500 MiB

Если интерфейс или сервер показывает меньший доступный лимит, используйте лимит конкретного сервера.

Архивы обновления не должны содержать .env. Действующие настройки и секреты берутся из установленной системы.

Если релиз требует изменения управляемого окружения, Updater выполняет предусмотренные изменения автоматически. Переносить настройки в ZIP вручную не нужно.

Как используется файл лицензии

При обычном обновлении Updater переносит действующие лицензионные файлы в новую версию. Отдельный ZIP нужен, когда требуется применить новую лицензию или система не может подтвердить состав уже установленной лицензии.

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

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

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

  • При обновлении через терминал укажите файл в spec.input.loose.license.source используемого update.yaml.

  • При обновлении через административную панель укажите лицензию в основной конфигурации /etc/iexexchanger/updater/update.yaml до загрузки Backend и Frontend.

Конфигурация и ZIP должны принадлежать root и быть закрыты от остальных пользователей. Пример раздела лицензии приведён в инструкции для терминала.

После принятия файлов агент сохраняет отдельную конфигурацию этой операции. Последующая правка основного update.yaml не меняет уже подготовленную загрузку.

Если обновление ещё не запускалось, после исправления лицензии подготовьте новую загрузку и новый план. Для начатой операции используйте порядок продолжения или восстановления.

Updater проверит лицензию и применит её вместе с релизом.

upload

Какие файлы нельзя использовать

Не используйте вместо обновления:

  • архивы полной установки;

  • архив Linux Installer;

  • ZIP лицензии в поле Backend или Frontend;

  • Backend и Frontend от разных релизов;

  • изменённые или повреждённые ZIP-файлы;

  • файлы из сторонних источников;

  • один общий ZIP с несколькими вложенными архивами;

  • файлы, вручную переименованные в backend.zip или frontend.zip.

file-zipper

Устанавливать zip или unzip для обновления не требуется. Не распаковывайте архивы вручную: Updater самостоятельно проверяет и обрабатывает их.

Этап 3. Что система сделает автоматически

Конкретный состав и количество этапов зависят от перехода между версиями. В обычном обновлении система выполняет следующие действия.

1

Проверит систему и файлы

Updater проверит текущую установленную версию, конфигурацию и совместимость перехода. Для архивов проверяются назначение, структура, размеры, контрольные суммы и принадлежность Backend и Frontend одному релизу.

Одновременно выполняться может только одна изменяющая операция.

2

Подготовит управляющие компоненты

Если проверенный Backend содержит необходимое обновление Updater, Update Agent или iexctl, система применит его штатно при запуске обновления, до резервного копирования и изменения приложения.

Формирование плана и предварительная проверка apply --dry-run эти программы не заменяют.

3

Проверит место и создаст резервную копию

До Maintenance система проверит запас диска и создаст полный управляемый backup: постоянные файлы, пользовательские данные, основную базу и базу Pulse.

Будут проверены результат копирования и расписание следующих копий.

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

4

Подготовит новую версию

Новый релиз будет подготовлен рядом с текущим. Действующая версия не перезаписывается распаковкой архива.

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

5

Включит режим обслуживания

Сайт перейдёт в Maintenance. Updater согласованно остановит очереди, планировщик фоновых задач и другие процессы, записывающие данные.

6

Создаст точку возврата баз данных

После остановки записи система сохранит согласованное состояние основной базы и базы Pulse.

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

7

Применит изменения и переключит версию

Updater выполнит предусмотренные изменения серверного окружения и Product Updates — штатную последовательность изменений приложения и его данных.

Затем система закрепит версию приложения и сделает новый релиз текущим. Прежняя версия сохранится для возможного отката.

8

Проверит результат

Система запустит службы и проверит необходимые компоненты: веб-сервер, Backend, Frontend, API, WebSocket, базы данных, Redis и фоновые задачи.

Maintenance будет снят после успешной проверки. Результаты этапов, сведения о резервной копии и точках возврата сохранятся в журнале и отчёте.

Способ 1. Обновление через административную панель

Необходимые разрешения

Разрешение «Просмотр обновлений системы» предназначено для просмотра состояния и истории.

Для запуска обновления или отката нужно разрешение «Запуск обновлений и откатов системы».

Право запуска даёт возможность изменять работающую систему. Выдавайте его только ответственным администраторам.

Выполните обновление

1

Откройте раздел «Обновления»

Проверьте:

  • текущую версию;

  • состояние «Готово»;

  • версию Update Agent;

  • отсутствие активной операции;

  • отсутствие Maintenance;

  • состояние официального каталога релизов.

Блок «Актуальная версия iEXExchanger» показывает сведения официального каталога. Сообщение «Доступно обновление» не запускает скачивание или установку: архивы загружаются отдельно.

Если показаны сохранённые данные или каталог временно недоступен, это относится к получению сведений о релизах. Фактическую установленную версию смотрите в блоке «Состояние обновлений».

2

Нажмите «Новое обновление»

Откроется форма с двумя отдельными полями:

  • Backend;

  • Frontend.

ZIP лицензии в эту форму не загружается.

3

Выберите файлы

В поле Backend выберите официальный архив обновления Backend, а в поле Frontend — архив обновления Frontend того же релиза.

Проверьте имена файлов до начала передачи.

4

Нажмите «Загрузить и проверить»

Дождитесь завершения передачи и серверной проверки. После принятия агент защищает файлы от дальнейшего изменения.

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

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

5

Нажмите «Сформировать план»

План не запускает обновление.

Он должен показать:

  • переход с текущей версии на целевую;

  • обязательную резервную копию;

  • обязательный Maintenance;

  • возможные изменения серверного окружения;

  • последовательность этапов;

  • предупреждения и срок действия плана.

Формирование плана ещё не создаёт резервную копию или новую точку возврата. Запас диска проверяется непосредственно перед резервным копированием при выполнении операции.

Если срок плана истёк, сформируйте новый. Не запускайте устаревший план.

6

Проверьте план

Не продолжайте, если:

  • исходная версия не совпадает с установленной;

  • целевая версия не та, которую вы скачали;

  • Backend и Frontend не совпали;

  • резервное копирование или Maintenance отключены;

  • сервер сообщает о нехватке места;

  • маршрут обновления не поддерживается;

  • требуется ручное действие.

7

Подтвердите запуск

Нажмите «Подтвердить обновление», затем «Запустить обновление».

Команда отправляется один раз. После подтверждения запуска появится идентификатор операции. Журнал будет пополняться по мере выполнения этапов.

8

Дождитесь завершения

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

Во время Maintenance административное API может временно отвечать 503. Это ожидаемо. Интерфейс читает состояние через монитор Update Agent, а при временной потере связи сохраняет подтверждённый прогресс и восстанавливает чтение журнала.

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

9

Подтвердите результат

Нормальный итоговый статус — «Успешно».

Затем проверьте вкладки:

  • «Установленные версии»;

  • «История операций»;

  • «Журнал действий».

Новая версия должна иметь состояние «Текущая». Возможность возврата к прежней версии показывается отдельно: для этого должны сохраниться её файлы и согласованные точки обеих баз.

Способ 2. Обновление через терминал

Этот способ предназначен для технического специалиста. Все команды этого раздела выполняются на сервере проекта, после подключения по SSH.

Примеры рассчитаны на пользователя с правами sudo. Если вы вошли как root, выполняйте те же команды без префикса sudo.

Проверьте управляющие компоненты

Подключение к серверу по SSH

Ожидаемый результат:

  • iex-updater запускается без ошибки;

  • текущая версия определена и подтверждена системой;

  • iex-update-agent.service имеет состояние active;

  • проверка управляемых служб завершена успешно;

  • управляемое резервное копирование настроено, а его состояние не сообщает о проблеме, препятствующей обновлению.

Если текущий релиз не подтверждён, Update Agent не работает или команда сообщает о незавершённой операции, сначала устраните это состояние.

Не начинайте новую операцию поверх существующей.

Найдите загруженные файлы

Скопируйте официальные ZIP на сервер через SFTP или используемый файловый менеджер.

Если вы подключаетесь не как root, сначала загрузите их в каталог, в который вашему SSH-пользователю разрешена запись. Дальнейшие команды выполняйте в SSH-сессии.

Если файлы были загружены в /home, выведите их список:

Определите точные абсолютные пути к Backend и Frontend. Если применяется новая лицензия, отдельно определите путь к её ZIP.

Рекомендуется хранить каждый релиз в отдельном закрытом каталоге:

Замените RELEASE на обозначение скачанного релиза. Это значение используется только как имя каталога и не задаёт версию для Updater.

Создать каталог можно командой:

Скопируйте архивы в подготовленный каталог с владельцем root и правами 0600.

В примере исходные файлы находятся непосредственно в /home; замените исходные пути, RELEASE и имена ZIP фактическими значениями:

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

Если применяется новый ZIP лицензии, скопируйте его аналогично: владелец root:root, права 0600, фактическое имя файла без переименования.

Не используйте символические и жёсткие ссылки. Не распаковывайте ZIP-файлы.

Подготовьте конфигурацию этой операции

Основная конфигурация установлена по адресу:

Сначала посмотрите нормализованные параметры:

Если значения spec.input.loose.backend.path и spec.input.loose.frontend.path уже указывают на фактически загруженные файлы, используйте эту конфигурацию без изменений.

Если пути отличаются, создайте конфигурацию новой операции на основе установленной. Не перезаписывайте конфигурацию уже начатого обновления:

Ниже показан фрагмент существующей конфигурации, а не полный update.yaml.

В скопированном полном файле найдите spec.input.loose и измените пути Backend и Frontend. Не создавайте второй раздел spec и не удаляйте остальные настройки.

Замените BACKEND_FILE.zip и FRONTEND_FILE.zip фактическими именами архивов. Отступы YAML сохраняйте пробелами:

Если для операции нужна новая лицензия, добавьте следующий фрагмент внутри spec.input.loose, на одном уровне с backend и frontend.

Вместо LICENSE_FILE.zip укажите фактическое имя ZIP:

Проверьте, не осталась ли в копии ссылка на лицензию от другой операции.

Если новая лицензия не применяется, не добавляйте этот раздел. Если источник уже настроен, проверьте его совместимость и доступность до запуска. Указанные в нём контрольная сумма и размер, если они заданы, должны соответствовать выбранному ZIP.

Сохраните остальные параметры полного файла: ограничения, политики безопасности и настройки входящих файлов.

Не меняйте:

После редактирования сохраните файл в nano сочетанием Ctrl + O, подтвердите имя клавишей Enter и выйдите через Ctrl + X.

Далее задайте переменную с абсолютным путём к выбранной конфигурации. Она используется только для сокращения команд в текущей SSH-сессии и не изменяет файл:

Если вы используете основную конфигурацию без копии, задайте:

Выберите один подходящий вариант. После повторного подключения по SSH задайте эту переменную заново с тем же путём.

Проверьте конфигурацию и сформируйте план

Выполните команды по порядку:

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

checklist перечисляет в том числе режимы, которые не используются в этом сценарии. Отметка [НЕТ] у input.bundle, input.remote-api или plan.bundle не мешает штатному обновлению парой ZIP с input.mode: loose и plan.mode: builtin.

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

В плане проверьте:

  • текущую и целевую версии;

  • совпадение Backend и Frontend;

  • поддерживаемый маршрут обновления;

  • обязательную резервную копию;

  • обязательный Maintenance;

  • изменения серверного окружения, если они нужны релизу;

  • итоговый список этапов.

gears

Команда plan не переключает приложение, не включает Maintenance и не изменяет базы данных.

Команды plan и apply --dry-run не заменяют установленные управляющие программы. Их необходимое обновление происходит при фактическом запуске apply.

Проверка ZIP может сохранять служебные файлы в закрытом кеше.

Проверьте условия выполнения

Выполните предварительную проверку без применения обновления:

Она проверяет доступные состояния этапов, включая фактический запас диска и inode. Команда не создаёт обязательную резервную копию и не заменяет приложение.

Отметка, что этап ещё не выполнен, сама по себе ожидаема: новый релиз и его backup пока не созданы. Ошибки проверки ресурсов или окружения нужно устранить до apply.

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

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

После успешных предварительных проверок выполните:

Запустите apply один раз и дождитесь итогового результата.

Не запускайте одновременно обновление из административной панели. Не перезагружайте сервер и не завершайте процесс без необходимости.

Посмотрите результат и отчёт

Сохраните:

  • идентификатор запуска;

  • исходную версию;

  • целевую версию;

  • итоговый статус;

  • путь к отчёту.

Операции, запущенные из терминала, сохраняются в серверных отчётах.

Основным подтверждением их результата является отчёт Updater. История административной панели в первую очередь показывает операции, созданные через её интерфейс и сверенные с Update Agent.

Статусы и ход операции

Общий статус относится ко всему обновлению, а отметка рядом с этапом — только к отдельной проверке или действию.

Статус
Что означает

«План готов»

План сформирован; обновление ещё не выполнено.

«В очереди»

Операция принята и ожидает выполнения.

«Выполняется»

Сервер выполняет этапы операции.

«Maintenance»

Приложение находится в режиме обслуживания.

«Успешно»

Операция завершена; переходите к проверке результата.

«Ошибка»

Операция остановилась; изучите неуспешный этап и рекомендацию.

«Нужно ручное действие»

Автоматическое продолжение невозможно без указанного вмешательства.

«Проверено — изменений не требуется» — успешный результат этапа.

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

В старом интерфейсе такой результат мог называться «Пропущено». Оценивайте описание этапа и общий итог операции; эта отметка не равна статусу «Ошибка».

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

Этап 4. Проверка после обновления

После статуса «Успешно» или успешного завершения apply проверьте сервер и работу продукта.

Если вы обновляли через панель и не имеете SSH-доступа, серверную часть проверки выполняет технический специалист.

Проверьте сервер

Выполните на сервере:

Убедитесь, что:

  • текущая версия соответствует выбранному релизу;

  • Maintenance выключен;

  • управляемые службы работают;

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

  • список systemctl --failed не содержит связанных с iEXExchanger ошибок.

Для Update Agent ожидаются enabled и active.

Временное переподключение во время обновления самой службы возможно, но повторяющиеся перезапуски, состояние «Нестабильно» или недоступность после завершения требуют диагностики.

Если сохранены Installer и конфигурация установки, выполните дополнительные проверки. Ниже приведены стандартные пути; при другом размещении используйте фактические:

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

Если Installer или его исходный install.yaml отсутствует, не создавайте новый конфиг наугад. Выполните остальные проверки и запросите способ восстановления проверочной конфигурации.

Проверьте продукт в браузере

Откройте основной сайт:

Затем перейдите по сохранённому адресу входа в административную панель на Backend:

Проверьте:

  • доступность обоих доменов по HTTPS;

  • загрузку клиентского сайта;

  • вход в административную панель;

  • переход между разделами панели;

  • отображение новой текущей версии;

  • отсутствие Maintenance;

  • работу функций, критичных для вашего проекта.

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

Страницы не должны возвращать ошибку 500 или оставаться в состоянии бесконечной загрузки. API, WebSocket и связанные с ними функции должны работать штатно.

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

Создайте резервную копию новой версии

Копия, созданная перед обновлением, относится к прежнему состоянию. После успешной проверки продукта сохраните отдельную копию новой версии:

Проверьте успешное завершение и время последней копии. Копию до обновления и точку возврата сохраняйте на период проверки новой версии.

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

Создание резервной копии

Если обновление было прервано

Через административную панель

Откройте существующую операцию в разделе «Обновления».

Если причина остановки устранена и интерфейс предлагает «Продолжить», используйте эту кнопку. Она продолжает ту же операцию по сохранённому плану.

Не создавайте новую загрузку, если сервер уже вошёл в Maintenance или начал применять изменения.

Не снимайте Maintenance вручную.

Через терминал

Потеря SSH-соединения не доказывает, что обновление остановилось. Сначала проверьте status и отчёт. Пока исходный процесс работает, не запускайте вторую команду.

Если операция, начатая через терминал, действительно прервана и её можно продолжить, устраните причину и используйте исходные ZIP и ту же конфигурацию:

Updater проверит сохранённые результаты и продолжит ту же операцию. При необходимости этап может быть выполнен повторно, если требуемое состояние больше не подтверждается.

fingerprint

Если обновление завершилось ошибкой

Сначала сохраните:

  • идентификатор операции;

  • итоговый статус;

  • название неуспешного этапа;

  • текст рекомендации Updater;

  • отчёт и относящиеся к операции события.

Не удаляйте новую и предыдущую версии, точки возврата, принятые агентом архивы, журналы и резервные копии вручную.

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

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

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

Если сервер вошёл в Maintenance или начал изменять приложение, используйте только действие, разрешённое состоянием существующей операции.

Обычные варианты:

  • продолжить ту же операцию кнопкой «Продолжить» в панели или через apply --resume, если она запускалась из терминала;

  • выполнить управляемое восстановление неуспешного обновления;

  • обратиться в техническую поддержку с идентификатором и отчётом.

Не создавайте новый план поверх такого состояния.

Управляемое восстановление после ошибки

recover-failed возвращает подтверждённый рабочий релиз после неуспешного обновления, если сохранены необходимые данные и точки обеих баз. Это не универсальная команда для любой ошибки.

Команды ниже относятся к обновлению, начатому через терминал с обычными каталогами Updater.

Для операции из панели технический специалист должен определить её собственную конфигурацию и журнал. Использовать основной update.yaml вместо них нельзя.

Сначала выполните предварительную проверку восстановления:

Запускайте восстановление только если проверка подтверждает нужное неуспешное обновление и возможность возврата:

После успешного восстановления повторите проверки сервера и продукта.

Старое обновление через apply --resume больше не продолжайте: для исправленных архивов нужна новая операция.

Если само восстановление было прервано:

recover-failed не используется для продолжения обычного отката. Для прерванного отката применяется rollback --resume.

Если новые обновления приостановлены

Сообщение «Новые обновления приостановлены» означает запрет на запуск новых обновлений. Приостановка может быть включена вручную или автоматически после ошибок.

Сначала изучите историю и устраните причину. После проверки ответственный администратор может нажать «Возобновить» в блоке состояния.

Не путайте действия:

  • «Повторить отправку» — повторяет неподтверждённый запрос запуска с тем же ключом операции.

  • «Продолжить» — продолжает существующую прерванную операцию.

  • «Возобновить» — снова разрешает запуск новых обновлений.

Разрешение новых обновлений не исправляет неуспешную операцию и не снимает Maintenance автоматически.

Откат после успешного обновления

Откат — отдельная операция, а не обязательный шаг каждого обновления.

Выполняйте его при подтверждённой проблеме новой версии и после решения ответственного лица.

Откат через административную панель

  1. Откройте раздел «Обновления» и вкладку «Установленные версии».

  2. Найдите версию со статусом «Доступна для отката».

  3. Нажмите «Откатиться до …».

  4. Нажмите «Проверить возможность отката».

  5. Проверьте исходную и целевую версии, точки возврата обеих баз и предупреждение о данных.

  6. Нажмите «Подтвердить откат», затем «Запустить откат».

  7. Дождитесь состояния «Откат выполнен».

  8. Повторите проверки сервера и продукта из раздела «Проверка после обновления».

После отката сохранённая новая версия может получить статус «Готова к возврату» и действие «Вернуться на …».

Для возврата сформируйте и проверьте новый план, затем используйте «Подтвердить возврат» и «Вернуться на актуальную версию».

Это отдельная операция с резервным копированием и восстановлением соответствующего состояния баз. Она не объединяет данные, накопившиеся при работе на разных версиях.

Откат через терминал

Команда rollback выбирает сохранённый предыдущий релиз. Нельзя указать произвольную старую версию только по её номеру.

Используйте действующую полную конфигурацию, путь к которой задан в IEX_UPDATE_CONFIG.

Сначала проверьте план:

Если план подтверждает правильную предыдущую версию и точки возврата обеих баз, выполните:

После завершения:

Затем повторите публичные проверки и проверку продукта в браузере.

Если откат был прерван:

Не переключайте ссылку current вручную и не восстанавливайте только одну базу данных. Код, основная база и база Pulse должны возвращаться согласованно.

После успешного отката ранее активная версия становится предыдущей.

Если она сохранена и система подтверждает возможность возврата, новая команда rollback --dry-run покажет переход к ней. Возврат выполняется новой операцией rollback, а rollback --resume предназначен только для продолжения уже прерванного отката.

Хранение файлов и удаление старых версий

После успешной проверки

Сохраните вне обновляемого сервера:

  • оригинальные Backend и Frontend текущего релиза;

  • ZIP лицензии, применяемой для этой версии;

  • контрольные суммы, если они опубликованы в кабинете;

  • идентификатор и отчёт операции;

  • дату обновления;

  • имя ответственного специалиста.

Загруженные копии ZIP можно удалить с сервера после успешной проверки продукта, подтверждения наличия внешней копии и завершения операций, которым эти файлы ещё нужны.

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

Удаление сохранённого релиза

Сохранённые версии удаляйте штатным действием в административной панели. Не удаляйте их каталоги вручную.

Откройте раздел «Обновления», перейдите во вкладку «Установленные версии» и выберите действие «Удалить» у нужной версии.

Перед подтверждением система покажет:

  • выбранную версию;

  • общий размер файлов и фактически занятое место на диске;

  • связь с текущим или предыдущим релизом;

  • доступность отката;

  • причины запрета удаления;

  • сведения о сохранении отдельной резервной копии.

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

Для обычного удаления используется кнопка «Удалить версию». Если предварительный расчёт устарел, нажмите «Пересчитать состав» и проверьте его заново.

Отдельная резервная копия не удаляется этой кнопкой и хранится по своей политике. Её сохранение не означает, что удалённый релиз останется доступен для быстрого отката.

Диагностика и обращение в поддержку

Для разбора проблемы подготовьте идентификатор операции, исходную и целевую версии, название неуспешного этапа, текст ошибки и рекомендацию системы.

Укажите, как запускалось обновление: через панель или терминал.

В панели откройте отчёт нужной операции в «Истории операций». Для запуска из терминала используйте серверные отчёты:

Сверьте время и идентификатор: последний отчёт должен относиться именно к рассматриваемой операции.

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

Команда покажет путь к результату.

Передавайте диагностические материалы через защищённый канал. Не прикладывайте отдельно пароли, приватные ключи, .env, коды лицензии, cookie или дампы баз данных.

Действия, которые нарушают штатное обновление

Во время обновления, продолжения, восстановления и отката не выполняйте самостоятельно:

  • распаковку ZIP поверх активного проекта;

  • замену файлов в текущем релизе;

  • php artisan migrate или ручной запуск Product Updates;

  • Composer или npm в активном релизе;

  • ручную замену Updater, Update Agent или iexctl;

  • изменение ссылок current и previous;

  • отключение Maintenance после ошибки;

  • перезапуск серверных служб без указания процедуры восстановления;

  • замену ZIP или конфигурации во время resume;

  • запуск второй операции из другого интерфейса;

  • удаление точек возврата, журналов, принятых архивов или резервных копий до завершения восстановления.

Необходимые изменения выполняет Updater. Если система требует ручного действия, выполняйте именно указанную процедуру для существующей операции.

Когда обновление завершено

Обновление считается полностью завершённым, когда одновременно выполнены все условия:

  • операция имеет подтверждённый статус «Успешно»;

  • новая версия отмечена как текущая;

  • Maintenance выключен;

  • управляемые серверные службы прошли проверку;

  • Update Agent доступен и работает штатно;

  • основной и административный домены доступны по HTTPS;

  • вход в административную панель работает;

  • API, WebSocket и основные функции продукта доступны;

  • резервная копия до обновления и точки обеих баз подтверждены в отчёте операции;

  • после проверки создана резервная копия новой версии;

  • отчёт операции сохранён;

  • прежний релиз и точки возврата сохранены на период проверки;

  • оригинальные архивы и используемая лицензия сохранены владельцем проекта вне обновляемого сервера.

Последнее обновление

Это было полезно?