> 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/learn/server-domeny-i-infrastruktura/overview/process-map/deployment.md).

# Развёртывание и перезапуск

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

## До начала

1. Назначьте окно и ответственного.
2. Проверьте состояние очередей, диска, базы и резервных заданий.
3. Создайте внешнюю копию PostgreSQL и пользовательских файлов.
4. Создайте снимок сервера или диска перед системным изменением.
5. Проверьте контрольную сумму и происхождение пакета.
6. Запишите текущий release, состояние процессов и способ возврата.
7. Остановите несвязанные изменения панели на время работ.

Не начинайте обновление при уже растущей очереди, повреждённой копии или неизвестной ошибке базы.

## Подготовка нового кода

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

Для серверной части используйте PHP CLI сайта:

```bash
cd <НОВЫЙ_ПУТЬ_BACKEND>
composer install --no-dev --prefer-dist --optimize-autoloader --no-interaction
/opt/php84/bin/php artisan about
```

Для клиентской части от её владельца установите зависимости способом, зафиксированным lock-файлом, и выполните production-сборку. Не запускайте Composer или npm от root.

## Миграции и переключение

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

```bash
cd <АКТИВНЫЙ_ПУТЬ_BACKEND>
/opt/php84/bin/php artisan migrate --force
/opt/php84/bin/php artisan optimize
```

Не выполняйте автоматический `migrate:rollback` при возврате кода: миграция могла преобразовать рабочие данные и быть необратимой. Способ возврата базы должен быть указан в поставке или использовать проверенное восстановление.

## Обновление долгоживущих процессов

После переключения кода:

```bash
cd <АКТИВНЫЙ_ПУТЬ_BACKEND>
/opt/php84/bin/php artisan horizon:terminate
/opt/php84/bin/php artisan pulse:restart
/opt/php84/bin/php artisan reverb:restart
```

Supervisor поднимает новые процессы. Для клиентского сайта выполните PM2 reload через текущий ecosystem-файл и сохраните список. Затем проверьте `supervisorctl status`, `pm2 list` и `horizon:status`.

## Приёмка

1. Проверьте HTTPS клиентского сайта и панели.
2. Войдите под тестовым администратором.
3. Выполните расчёт и создайте безопасную тестовую заявку.
4. Проверьте очередь, уведомление и чат без обновления.
5. Проверьте Pulse, Horizon и системную диагностику.
6. Проверьте cron через `schedule:list` и ожидаемый регулярный результат.
7. Проверьте журналы на новые повторяющиеся ошибки.
8. Отключите режим обслуживания только после успешных критичных проверок.

## Возврат

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


---

# 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, and the optional `goal` query parameter:

```
GET https://docs.iexexchanger.com/learn/server-domeny-i-infrastruktura/overview/process-map/deployment.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
