# Использование стейджинга: отправка в продакшн и получение данных из продакшна

Source: https://support.kapsulehost.com/ru-ru/wordpress-staging-workflow

Staging предназначен для сайтов WordPress и WooCommerce. После создания копии staging важны две операции: отправка проверенных изменений на рабочий сайт и сброс staging до свежей копии production. В этом руководстве подробно рассматриваются оба направления, подтверждения, которые защищают ваш рабочий сайт, и случаи, когда отправка базы данных привела бы к потере данных.

Если вы ещё не создали среду staging, начните со статьи [Использование сред Staging](https://support.kapsulehost.com/ru-ru/staging-environments). Эта статья продолжает повествование с того момента, когда staging уже существует.

## Два направления

| Операция | Что перезаписывается | Когда использовать |
|---|---|---|
| **Развернуть в Production** | Ваш рабочий сайт | Изменения в staging проверены и готовы к публикации |
| **Восстановить из production** | Ваш сайт staging | Вы хотите получить чистую копию текущего рабочего сайта для работы |

Обе операции находятся на одном и том же экране: **Веб-сайты**, затем ваш сайт, затем **Environment**, затем **Промежуточная среда**.

![Страница Staging для сайта в KPanel, показывающая домен staging, его статус и время последней синхронизации](https://support.kapsulehost.com/help/screenshots/wordpress-staging-workflow.8f62c65f.webp)

Карточка в верхней части этого экрана показывает ваш домен staging, его статус, сколько времени прошло с последней синхронизации с production и когда была выполнена последняя отправка. **WP Admin** сразу входит в панель управления сайта staging, а **Перейти на сайт** открывает его публичную часть.

> **Tip:** Копия staging, не синхронизированная неделю и более, отмечается на этой карточке янтарным цветом. Устаревший staging хуже, чем его отсутствие: в итоге вы тестируете на сайте, который уже не соответствует рабочему. Выполняйте сброс перед началом новой работы, а не после неё.

## Отправка Staging в Production

Эта операция заменяет часть или весь ваш рабочий сайт содержимым из staging.

1. Откройте **Environment**, затем **Промежуточная среда**.
2. Прокрутите до **Развернуть Staging в Production**.
3. С помощью флажков выберите, что отправлять: **Файлы**, **База данных** или оба варианта.
4. Если вы отметили **База данных**, оставьте отмеченным **Переписать URL**. Эта функция выполняет поиск и замену во всех таблицах, чтобы имя хоста staging было заменено на ваш production-домен в рамках отправки.
5. Отметьте **Я понимаю, что это изменяет мой live production-сайт.**
6. Введите ваш production-домен в поле подтверждения точно так, как показано.
7. Нажмите **Развернуть в Production**.

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

> **Warning:** Отправка перезаписывает, а не объединяет данные. Всё, что изменилось на production с момента последнего сброса, будет заменено содержимым из staging. Это касается новых записей, новых учётных записей клиентов, новых отправленных форм и новых заказов.

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

### Выбор Files, Database или обоих вариантов

Это решение имеет наибольшее значение, и правильный ответ обычно не "оба варианта".

**Только Files.** Безопасный выбор по умолчанию для сайта, который собирает что-либо от посетителей. Изменения темы, обновления плагинов, изменения шаблонов и пользовательский код: всё это хранится в файлах. Отправка только файлов оставляет на production нетронутыми все записи, комментарии, заказы и учётные записи пользователей.

**Только Database.** Для изменений контента или настроек, сделанных в staging, на сайте, где никто не редактирует production напрямую. На практике встречается редко.

**Оба варианта.** Подходит для редизайна или полной переработки сайта, когда staging становится новым сайтом, а production полностью заменяется. Сообщите об этом заранее, выполняйте операцию в нерабочее время и сначала убедитесь, что у вас есть актуальная резервная копия.

> **Important:** Отправка базы данных в работающий интернет-магазин удаляет заказы. WooCommerce хранит заказы, клиентов, подписки, купоны и уровни запасов в базе данных, поэтому каждый заказ, оформленный с момента последнего сброса из production, исчезнет в момент завершения отправки. Частичное восстановление невозможно. На интернет-магазине отправляйте только файлы, а изменения на уровне базы данных вносите непосредственно на production. См. [Настройка WooCommerce](https://support.kapsulehost.com/ru-ru/wordpress-woocommerce).

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

## Сброс Staging из Production

Это безопасное направление: оно перезаписывает staging текущим рабочим сайтом и никогда не затрагивает production.

1. Откройте **Environment**, затем **Промежуточная среда**.
2. Найдите **Восстановить из production**.
3. Отметьте **Файлы**, **База данных** или оба варианта.
4. Нажмите **Восстановить из production**.

Выполняйте это в следующих случаях:

- Production обновился: появились новые записи, новые заказы или изменения контента.
- Вы начинаете новую работу и хотите иметь реалистичную базу для неё.
- Staging отклонился настолько далеко, что результаты тестирования на нём ничего не значат.

Всё, что находится в staging и ещё не было отправлено, будет потеряно. Если в staging есть работа, которую вы хотите сохранить, сначала отправьте её или скопируйте изменённые файлы через **Параметры**, затем **Менеджер файлов** перед сбросом.

## Как работает переписывание URL

WordPress хранит собственный адрес в базе данных, в строках `siteurl` и `home` таблицы параметров, а абсолютные URL также оказываются в содержимом записей, значениях метаданных, настройках виджетов и параметрах темы.

Ваш сайт staging работает по адресу `staging.` с добавлением вашего домена, поэтому каждое из этих значений указывает на имя хоста staging, пока вы работаете с ним. Функция **Переписать URL** при отправке выполняет полноценный поиск и замену по всем таблицам, корректно обрабатывая сериализованные настройки плагинов, и заменяет имя хоста staging на ваш production-домен.

Оставляйте этот флажок отмеченным, если нет особой причины поступить иначе. Если вы отправляете только файлы, или если случайный URL staging всё же остался, исправьте это с помощью статьи [Выполнение поиска и замены](https://support.kapsulehost.com/ru-ru/wordpress-search-replace).

## Рабочий процесс, который выдерживает проверку

1. **Сбросьте из production**, чтобы staging совпадал с рабочим сайтом.
2. **Сделайте резервную копию production** перед началом работы, чтобы иметь точку восстановления, независимую от отправки: [Создание резервной копии](https://support.kapsulehost.com/ru-ru/taking-a-backup).
3. **Выполните работу в staging.** Обновления плагинов и тем, новый код, изменения макета.
4. **Протестируйте на домене staging.** Загрузите изменённые страницы, а также те, что не менялись. На интернет-магазине выполните тестовый заказ от начала до конца.
5. **Отправьте только файлы**, если вы намеренно не решили, что база данных также должна быть отправлена.
6. **Сразу проверьте production.** Главную страницу, одну из внутренних страниц, оформление заказа и панель администратора.
7. **Снова сбросьте staging из production**, как только всё проверено и вас всё устраивает, чтобы следующий этап начинался с чистого состояния.

> **Note:** Staging полностью управляется из вашего рабочего сайта. Он не отображается как отдельная запись в списке **Веб-сайты**, поэтому все элементы управления им, включая удаление, находятся на этой одной вкладке.

## Удаление Staging

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

## Устранение неполадок

**Кнопка "Развернуть в Production" не активируется.** Должны быть выполнены оба условия: отмечен флажок подтверждения и точно введён production-домен, без `https://` и без завершающего слеша.

**Отправка завершена, но на сайте всё ещё отображается старое содержимое.** Это кэширование. Очистите кэш через **WordPress**, затем **Быстрые действия**, затем **Очистить кэш**, очистите CDN через **Производительность**, затем **Kapsule CDN**, и перезагрузите страницу в приватном окне.

**После отправки на рабочем сайте отображаются URL-адреса staging.** База данных была отправлена без отметки **Переписать URL**. Выполните поиск и замену имени хоста staging на ваш production-домен: [Выполнение поиска и замены](https://support.kapsulehost.com/ru-ru/wordpress-search-replace).

**Я отправил базу данных и потерял заказы.** Немедленно восстановите автоматическую резервную копию, созданную перед отправкой, прежде чем на перезаписанную базу данных поступят новые заказы: [Восстановление из резервной копии](https://support.kapsulehost.com/ru-ru/restoring-from-backup).

**После сброса в staging отображается ошибка.** Обычная причина: плагин, в котором жёстко задан production-домен. Войдите через **WP Admin** на карточке staging и отключайте плагины там, пока ошибка не исчезнет, затем исправьте или замените проблемный плагин на production.
