> For the complete documentation index, see [llms.txt](https://docs.iexexchanger.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iexexchanger.com/guide/podgotovka-k-ustanovke/obnovleniya/perekhod-na-11.0.0-s-10.x.md).

# Переход на 11.0.0 с 10.x

{% hint style="danger" %}

### Важное обновление до версии iEXExchanger 11.0

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

Версия 11.0 работает исключительно на **PHP 8.4** и использует полностью новую систему мерчантов и новую систему настроек, которые не совместимы с предыдущей структурой **версии 10.x.**

Обратите внимание, что в версии 11.0 временно отсутствуют некоторые мерчанты, включая: WhiteBIT, PayScrow, SuperMoney и Merchant001. Если вы используете указанные мерчанты в рабочем проекте, обновление на данную версию не рекомендуется.

<mark style="color:red;">Перед обновлением настоятельно рекомендуется внимательно ознакомиться с изменениями, проверить совместимость серверного окружения и выполнить обновление сначала на тестовом сервере.</mark>
{% endhint %}

{% content-ref url="/spaces/AOF6pPvOr3VNgXQWBmy1/pages/B7SDHK8ZATHRNd8gAa1p" %}
[Изменения в 11.0](/releases/aktualnaya-versiya/izmeneniya-v-11.0.md)
{% endcontent-ref %}

{% hint style="danger" %}

#### Резервное копирование перед обновлением

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

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

#### Резервное копирование файлов сайта (FastPanel)

1. Войдите в панель управления FastPanel.
2. Перейдите в раздел «Файловый менеджер».
3. Выделите папку с файлами сайта и создайте архив (ZIP).
4. Скачайте созданный архив на свой компьютер и убедитесь, что файл корректно сохранён.

#### Резервное копирование базы данных (FastPanel)

1. В панели FastPanel откройте раздел «Базы данных».
2. Выберите используемую базу данных проекта.
3. Выполните экспорт (резервное копирование) базы данных.
4. Сохраните полученный файл SQL на локальном компьютере.

#### Если возникают сложности

Если вы не уверены в правильности выполнения резервного копирования или сталкиваетесь с трудностями при работе с FastPanel, рекомендуется обратиться в службу технической поддержки вашего хостинг-провайдера. Специалисты помогут корректно создать резервные копии с учётом особенностей вашего серверного окружения.
{% endhint %}

{% content-ref url="/spaces/BKBngbC2uqpFyMskVn39/pages/4P0gTZJnutJcTi7U9FdO" %}
[Как создать Backup?](/dev-help/faq/kak-sozdat-backup.md)
{% endcontent-ref %}

***

## Подготовка к обновлению

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

<figure><img src="/files/Mpcj0Z1N2TlGaDYP24xI" alt="" width="375"><figcaption></figcaption></figure>

Перед обновлением системы до версии **11.0** рекомендуется удалить стандартный набор папок из директории поддомена вашего приложения (например, **app.ваш\_домен**).

{% hint style="danger" %}

## Важно:&#x20;

На этом этапе необходимо подключиться к серверу через SSH под пользователем **root**, так как именно **root** имеет полный доступ к системе и может выполнять все необходимые команды. Это критично для корректной установки и настройки компонентов, обеспечивающих стабильную и быструю работу обменника.
{% endhint %}

{% stepper %}
{% step %}

### Проверьте, что FastPanel PHP 8.4 установлен

В FastPanel должен быть установлен PHP 8.4 и доступен путь: `/opt/php84/bin/php`&#x20;

Проверка: `/opt/php84/bin/php -v`&#x20;

*Если команда не найдена — сначала установите **PHP 8.4 в FastPanel.***
{% endstep %}

{% step %}

### Сделать PHP 8.4 (FastPanel) основным для CLI

В FastPanel PHP 8.4 находится по пути: `/opt/php84/bin/php`

Сделаем так, чтобы команда php в терминале использовала именно PHP 8.4.

**Команды**

```shellscript
if [ ! -x /opt/php84/bin/php ]; then
  echo "Ошибка: не найден /opt/php84/bin/php. Установите PHP 8.4 в FastPanel."
  exit 1
fi

sudo update-alternatives --install /usr/bin/php php /opt/php84/bin/php 84 >/dev/null 2>&1 || true
sudo update-alternatives --set php /opt/php84/bin/php >/dev/null 2>&1 || true

php -v | head -n 1
```

{% endstep %}

{% step %}

### Установка ionCube Loader 15

* Loader подключаем первым через файл: `/opt/php84/conf.d/00-ioncube.ini`
* Скачивание: **IPv4 + fallback ZIP**, если tar.gz не скачался.

**Команды**

```shellscript
sudo mkdir -p /usr/local/src
cd /usr/local/src
sudo rm -rf ioncube >/dev/null 2>&1 || true
sudo rm -f ioncube_loaders_lin_x86-64.tar.gz ioncube_loaders_lin_x86-64.zip >/dev/null 2>&1 || true

IONCUBE_TAR_URL="https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz"
IONCUBE_ZIP_URL="https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.zip"
IONCUBE_DST_DIR="/usr/local/ioncube"
IONCUBE_SO="$IONCUBE_DST_DIR/ioncube_loader_lin_8.4.so"
IONCUBE_INI="/opt/php84/conf.d/00-ioncube.ini"

download_ok=0
curl -4 -fSL "$IONCUBE_TAR_URL" --connect-timeout 10 --max-time 600 --retry 5 --retry-delay 2 \
  -o ioncube_loaders_lin_x86-64.tar.gz && download_ok=1 || download_ok=0

if [ "$download_ok" -eq 1 ] && [ -s ioncube_loaders_lin_x86-64.tar.gz ]; then
  sudo tar -xzf ioncube_loaders_lin_x86-64.tar.gz
else
  curl -4 -fSL "$IONCUBE_ZIP_URL" --connect-timeout 10 --max-time 600 --retry 5 --retry-delay 2 \
    -o ioncube_loaders_lin_x86-64.zip

  if [ ! -s ioncube_loaders_lin_x86-64.zip ]; then
    echo "Ошибка: ionCube zip не скачался или пустой."
    exit 1
  fi

  sudo unzip -o ioncube_loaders_lin_x86-64.zip -d /usr/local/src >/dev/null
fi

if [ ! -f "/usr/local/src/ioncube/ioncube_loader_lin_8.4.so" ]; then
  echo "Ошибка: не найден /usr/local/src/ioncube/ioncube_loader_lin_8.4.so"
  exit 1
fi

sudo mkdir -p "$IONCUBE_DST_DIR"
sudo cp -f "/usr/local/src/ioncube/ioncube_loader_lin_8.4.so" "$IONCUBE_SO"

echo "zend_extension=$IONCUBE_SO" | sudo tee "$IONCUBE_INI" >/dev/null

# Если в php-cli.ini было старое подключение — комментируем
if [ -f /opt/php84/etc/php-cli.ini ]; then
  sudo sed -i 's/^\s*zend_extension\s*=.*ioncube.*$/; &/i' /opt/php84/etc/php-cli.ini || true
  sudo sed -i 's/^\s*zend_extension_ts\s*=.*ioncube.*$/; &/i' /opt/php84/etc/php-cli.ini || true
fi

php -v | grep -i "ionCube" || true
```

{% endstep %}
{% endstepper %}

***

### Frontend (основной домен, например, ваш\_домен):

<mark style="color:red;">**Обязательно убедитесь, что вы находитесь в папке основного сайта**</mark>**,** чтобы случайно не удалить файлы поддомена.

Удалите следующие папки из директории основного домена:

* **dist**
* **logs**

<figure><img src="/files/PdteijinVPcGp99GU9mB" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="warning" %}

## Важно!

В панели управления FastPanel убедитесь, что вы находитесь именно в папке основного домена (test.ru), чтобы не затронуть другие сайты или поддомены.
{% endhint %}

### Backend (поддомен, например, app.ваш\_домен):

<mark style="color:red;">**Обязательно убедитесь, что вы находитесь в папке поддомена**</mark>**,** чтобы случайно не удалить файлы основной версии сайта.

Стандартный список папок, которые необходимо удалить:

* app
* bootstrap
* config
* database
* packages
* resources
* routes
* vendor

{% hint style="warning" %}

## Важно!

**Не удаляйте папки public и storage —** в них хранятся важные пользовательские данные, медиафайлы, логи и пользовательские загрузки. Удаление этих папок может привести к потере данных, необходимых для работы приложения.
{% endhint %}

{% content-ref url="/pages/Qs1hiwajeXhU7MQo0zB9" %}
[Где расположена корневая директория вашего сайта?](/guide/pomosh-i-spravka/infrastruktura/gde-raspolozhena-kornevaya-direktoriya-vashego-saita.md)
{% endcontent-ref %}

<figure><img src="/files/K3CF9mlFjVc5C9Ms6DNv" alt=""><figcaption></figcaption></figure>

Для регулярных обновлений используйте пакеты обновлений.

{% content-ref url="/pages/hRveboCMLdgEj5kJTNoq" %}
[Broken mention](broken://pages/hRveboCMLdgEj5kJTNoq)
{% endcontent-ref %}

***

## Загрузка и распаковка архивов обновления

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

{% stepper %}
{% step %}

### Авторизация на сервере

* Если вы используете FastPanel, выполните вход через панель управления.
* Загружайте файлы только от <mark style="color:green;">**имени пользователя**</mark>, созданного специально для вашего сайта.
* <mark style="color:red;">Не используйте пользователя</mark> <mark style="color:red;"></mark><mark style="color:red;">**root**</mark> — это важно для безопасности и сохранности данных.
  {% endstep %}

{% step %}

### Куда загружать архивы

Архивы обновления уже имеют понятные названия:

* iexexchanger\_<mark style="color:green;">**backend**</mark>\_update — для папки поддомена вашего сайта (например, app.ваш\_домен)
* iexexchanger\_<mark style="color:green;">**frontend**</mark>\_update — для корневой папки основного сайта (например, ваш\_домен)

| Архив обновления | Куда загружать?                | Пример пути        |
| ---------------- | ------------------------------ | ------------------ |
| **backend**      | Папка поддомена                | `www/app.test.com` |
| **frontend**     | Корневая папка основного сайта | `www/test.com`     |

**Внимание!** Проверьте, что находитесь именно в нужной папке, чтобы не затронуть лишние данные на сервере.
{% endstep %}

{% step %}

### Как загрузить архивы

Выберите удобный для вас способ:

* Файловый менеджер в панели управления хостингом (например, FastPanel)
* FTP-клиент (например, FileZilla)

Загрузите соответствующий архив в нужную папку — как указано выше.
{% endstep %}

{% step %}

### Распаковка архивов

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

<mark style="color:red;">**Это нормально:**</mark> обновление заменяет устаревшие файлы на новые.
{% endstep %}

{% step %}

### Проверка после обновления

* Проверьте, что новые файлы появились на сервере.
* Откройте сайт в браузере и убедитесь, что он работает корректно.
* При необходимости очистите кэш сайта и браузера.
  {% endstep %}
  {% endstepper %}

{% content-ref url="/pages/Qs1hiwajeXhU7MQo0zB9" %}
[Где расположена корневая директория вашего сайта?](/guide/pomosh-i-spravka/infrastruktura/gde-raspolozhena-kornevaya-direktoriya-vashego-saita.md)
{% endcontent-ref %}

{% hint style="info" %}

## Важные рекомендации

* Никогда не удаляйте папки **public** и **storage**!

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

  Удаление этих папок приведёт к потере важной информации!
* Работайте только в папке нужного домена или поддомена.

  Не перепутайте основной сайт и поддомен, чтобы не нарушить работу сайта.
  {% endhint %}

***

## Завершение обновления системы

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

#### Шаг 1. Подключитесь к серверу через терминал (SSH)

Если вы не знаете, как это сделать, воспользуйтесь подсказкой:

<mark style="color:red;">Важно: подключайтесь от</mark> <mark style="color:red;"></mark><mark style="color:red;">**имени обычного пользователя**</mark><mark style="color:red;">, а не</mark> <mark style="color:red;"></mark><mark style="color:red;">**root**</mark><mark style="color:red;">.</mark>

{% content-ref url="/pages/vnxh4CdTILQ5G7Sfyf0d" %}
[Как открыть терминал и подключиться к серверу по SSH?](/guide/pomosh-i-spravka/infrastruktura/kak-otkryt-terminal-i-podklyuchitsya-k-serveru-po-ssh.md)
{% endcontent-ref %}

#### Шаг 2. Перейдите в папку поддомена на сервере

Введите команду (замените путь на актуальный путь до вашего сайта и поддомена):

```bash
cd www/app.ваш_домен
```

#### Шаг 3. Выполните команду для применения обновления

Выполните следующую команду:

```
php artisan language:export
php artisan product:apply-update
php artisan dynamic-config:migrate-from-json
php artisan language:import
```

{% hint style="warning" %}
**Важно:** если при выполнении этой команды вы увидели любые предупреждения, ошибки или сообщения об отказе доступа (например, проблемы с правами на файлы или ошибки зависимостей), выполните команду повторно.\
\
Повторный запуск поможет устранить временные конфликты или неполные изменения, которые могли возникнуть при первом запуске. Если после повторного запуска ошибки сохраняются, обратитесь за технической поддержкой.
{% endhint %}

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

{% hint style="danger" %}

#### ВАЖНОЕ ДЕЙСТВИЕ ПОСЛЕ ОБНОВЛЕНИЯ

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

1. Удалите из корневой папки сайта все ранее загруженные ZIP-архивы обновлений.

   Это предотвратит случайное повторное применение устаревших файлов.
2. Перезагрузите сервер, чтобы изменения полностью вступили в силу
   {% endhint %}

<mark style="color:green;">**Обновление успешно завершено!**</mark>

{% hint style="warning" %}

## Что делать, если сайт не запускается после перезагрузки

Если после перезагрузки сервера сайт не открывается и страница полностью не загружается, это означает, что основной сервис сайта не был запущен. Чаще всего такая ситуация возникает из-за того, что после перезагрузки сервера автоматически не запустился PM2 — процесс-менеджер, отвечающий за работу сайта.

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

Ссылка: [Инструкция по переустановке PM2](/guide/podgotovka-k-ustanovke/nastroiki-servera/pereustanovka-pm2.md)
{% endhint %}

***

## Рекомендуемые ссылки

{% content-ref url="/pages/Qs1hiwajeXhU7MQo0zB9" %}
[Где расположена корневая директория вашего сайта?](/guide/pomosh-i-spravka/infrastruktura/gde-raspolozhena-kornevaya-direktoriya-vashego-saita.md)
{% endcontent-ref %}

{% content-ref url="/pages/vnxh4CdTILQ5G7Sfyf0d" %}
[Как открыть терминал и подключиться к серверу по SSH?](/guide/pomosh-i-spravka/infrastruktura/kak-otkryt-terminal-i-podklyuchitsya-k-serveru-po-ssh.md)
{% endcontent-ref %}

{% content-ref url="/pages/IaKPMZcX0KFQ4HshbuKr" %}
[Переустановка PM2](/guide/podgotovka-k-ustanovke/nastroiki-servera/pereustanovka-pm2.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.iexexchanger.com/guide/podgotovka-k-ustanovke/obnovleniya/perekhod-na-11.0.0-s-10.x.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
