# ステージングの使い方：本番環境へのプッシュと本番環境からのプル

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

ステージングは WordPress と WooCommerce のサイト向けです。ステージングのコピーが存在すれば、それを活かすための操作は二つあります。テスト済みの変更を本番サイトに反映させることと、ステージングを本番環境の新しいコピーに戻すことです。本ガイドでは両方向の操作を詳しく説明し、ライブサイトを保護する確認手順と、データベースのプッシュがデータを破壊してしまうケースについても解説します。

まだステージング環境を作成していない場合は、まず[ステージング環境の使用](https://support.kapsulehost.com/ja-jp/staging-environments)をご覧ください。本記事はステージングが既に存在する前提で説明を進めます。

## 二つの方向性

| 操作 | 上書きされるもの | 使用するタイミング |
|---|---|---|
| **本番環境にプッシュ** | ライブサイト | ステージング上の変更がテスト済みで、ライブ公開の準備ができたとき |
| **本番環境からリセット** | ステージングサイト | 現在のライブサイトのクリーンなコピーを作業対象として用意したいとき |

どちらも同じ画面にあります。**ウェブサイト** から対象サイト、**Environment**、**ステージング** の順に進んでください。

![KPanel 内のサイトのステージングページ。ステージングドメイン、ステータス、最終同期日時が表示されている](https://support.kapsulehost.com/help/screenshots/wordpress-staging-workflow.8f62c65f.webp)

その画面上部のカードには、ステージングドメイン、ステータス、本番環境から最後に同期されてからの経過時間、最後にプッシュされた日時が表示されます。**WP 管理画面** をクリックするとステージングサイトのダッシュボードに直接サインインでき、**サイトを表示** でステージングのフロントエンドが開きます。

> **Tip:** 1週間以上同期されていないステージングのコピーは、このカード上でアンバー色の警告表示になります。古いステージングは、ステージングが無い状態よりも悪いものです。もはやライブサイトと似ても似つかないサイトに対してテストを行うことになってしまうからです。新しい作業を始める前にリセットしてください。作業後ではありません。

## ステージングを本番環境にプッシュする

この操作は、ライブサイトの一部または全部を、ステージング上の内容に置き換えます。

1. **Environment** を開き、**ステージング** を選択します。
2. **ステージング環境を本番環境にプッシュ** までスクロールします。
3. チェックボックスでプッシュする内容を選択します。**ファイル**、**データベース**、またはその両方です。
4. **データベース** にチェックを入れた場合は、**URL を書き直す** のチェックを外さずそのままにしてください。プッシュの一環として全テーブルに対する検索と置換を実行し、ステージングのホスト名を本番環境のものに置き換えます。
5. **ライブ本番サイトが変更されることを理解しています。** にチェックを入れます。
6. 確認ボックスに、表示されているとおり正確に本番環境のドメインを入力します。
7. **本番環境にプッシュ** をクリックします。

チェックボックスにチェックが入り、かつドメインが一致するまでボタンは無効のままです。そのため、タイミングを誤ったクリックでプッシュが開始されることはありません。

> **Warning:** プッシュは上書きであり、マージではありません。前回のリセット以降に本番環境で変更された内容は、ステージング上の内容によってすべて置き換えられます。これには新規投稿、新規顧客アカウント、新規フォーム送信、新規注文も含まれます。

何かが書き込まれる前に本番環境の完全バックアップが自動的に取得され、プッシュが途中で失敗した場合は、そのバックアップに本番環境がロールバックされます。小規模なサイトでは通常1分もかからずに完了しますが、データベースが大きい場合や数ギガバイトに及ぶメディアライブラリがある場合は時間がかかります。

### Files、Database、またはその両方を選ぶ

これは最も重要な判断であり、答えは大抵「両方」ではありません。

**Files のみ。** 訪問者から何らかの情報を収集するサイトにとって安全な既定の選択です。テーマの編集、プラグインの更新、テンプレートの変更、カスタムコードはすべてファイルに存在します。ファイルのみをプッシュすれば、本番環境上のすべての投稿、コメント、注文、ユーザーはそのまま手つかずで残ります。

**Database のみ。** 誰も本番環境を直接編集しないサイトで、ステージング上でコンテンツや設定の変更を行った場合に使用します。実際にはまれなケースです。

**両方。** ステージングが新しいサイトであり、本番環境を全面的に置き換えるリデザインやリビルドの場合に適しています。事前に周知し、業務時間外に実施し、まず最新のバックアップがあることを確認してください。

> **Important:** ライブストアにデータベースをプッシュすると注文が削除されます。WooCommerce は注文、顧客、サブスクリプション、クーポン、在庫レベルをデータベースに保持しているため、前回本番環境からリセットして以降に入った注文はすべて、プッシュが完了した瞬間に消えてしまいます。部分的な復旧はできません。ストアでは Files のみをプッシュし、データベースレベルの変更は本番環境で直接行ってください。[WooCommerce のセットアップ](https://support.kapsulehost.com/ja-jp/wordpress-woocommerce)を参照してください。

同じ落とし穴は、WordPress にコメント、フォーム送信、会員登録、メーリングリストを保存しているサイトであれば、程度は小さいものの同様に当てはまります。

## 本番環境からステージングをリセットする

こちらは安全な方向です。現在のライブサイトの内容でステージングを上書きするだけで、本番環境には一切触れません。

1. **Environment** を開き、**ステージング** を選択します。
2. **本番環境からリセット** を探します。
3. **ファイル**、**データベース**、またはその両方にチェックを入れます。
4. **本番環境からリセット** をクリックします。

以下のような場合に実施してください。

- 本番環境が進んでいて、新規投稿、新規注文、コンテンツの編集があった場合。
- 新しい作業を始めるにあたり、現実的な土台が欲しい場合。
- ステージングが本番環境から乖離しすぎて、そこでのテスト結果に意味がなくなった場合。

ステージング上でプッシュされていない内容はすべて失われます。ステージング上にまだ残しておきたい作業がある場合は、先にプッシュするか、リセットする前に **設定** から **ファイルマネージャー** を通じて変更済みのファイルをコピーしてください。

## URL 書き換えの仕組み

WordPress はオプションテーブルの `siteurl` と `home` の各行に自身のアドレスを保存しており、絶対 URL は投稿コンテンツ、メタ値、ウィジェット設定、テーマオプションにも入り込みます。

ステージングサイトは `staging.` に続けてドメインを付けたアドレスで動作するため、作業中はこれらの値がすべてステージングのホスト名を指しています。プッシュ時の **URL を書き直す** は全テーブルに対して正しい検索と置換を実行し、シリアライズされたプラグイン設定も正しく処理したうえで、ステージングのホスト名を本番環境のものに置き換えます。

特別な理由がない限り、このチェックは入れたままにしておいてください。Files のみをプッシュした場合や、ステージングの URL が一部残ってしまった場合は、[検索と置換の実行](https://support.kapsulehost.com/ja-jp/wordpress-search-replace)で修正してください。

## 通用するワークフロー

1. **本番環境からリセットする** ことで、ステージングをライブサイトと一致させます。
2. **作業を始める前に本番環境のバックアップを取得する** ことで、プッシュとは独立した復元ポイントを確保します。[バックアップの取得](https://support.kapsulehost.com/ja-jp/taking-a-backup)を参照してください。
3. **ステージング上で作業を行う。** プラグインやテーマの更新、新規コード、レイアウト変更などです。
4. **ステージングドメインでテストする。** 変更したページだけでなく、変更していないページも読み込んでください。ストアの場合は、テスト注文を最初から最後まで実行してください。
5. **意図的にデータベースも必要だと判断した場合を除き、Files のみをプッシュする。**
6. **本番環境をすぐに確認する。** ホームページ、下層ページ、チェックアウト、管理ダッシュボードを確認してください。
7. **問題がなければ、ステージングを再度本番環境からリセットする** ことで、次のラウンドをクリーンな状態から始められます。

> **Note:** ステージングはすべて本番サイトから管理されます。**ウェブサイト** の一覧に個別の項目として表示されることはなく、削除を含むすべての操作がこの一つのタブに集約されています。

## ステージングの削除

同じ画面の下部にある **ステージングを削除** カードでステージングのコピーを削除できます。本番環境には影響しません。プロジェクトが終了したら削除してください。ステージングはプランのストレージ容量に算入されるため、古くなったコピーは資産ではなく負債になります。

## トラブルシューティング

**Push to Production ボタンが有効になりません。** 確認用チェックボックスにチェックが入っていることと、本番環境のドメインが `https://` や末尾のスラッシュなしで正確に入力されていることの両方の条件を満たす必要があります。

**プッシュは完了したのに、サイトには古いコンテンツが表示されます。** キャッシュが原因です。**WordPress** から **クイックアクション**、**キャッシュをフラッシュ** の順にフラッシュを行い、**パフォーマンス** から **Kapsule CDN** で CDN をパージし、プライベートウィンドウで再読み込みしてください。

**プッシュ後、ライブサイトにステージングの URL が表示されています。** **URL を書き直す** のチェックを入れずにデータベースが転送されたことが原因です。ステージングのホスト名から本番環境のドメインへの検索と置換を実行してください。[検索と置換の実行](https://support.kapsulehost.com/ja-jp/wordpress-search-replace)を参照してください。

**データベースをプッシュしたら注文が消えてしまいました。** 上書きされたデータベースにさらに注文が入ってくる前に、すぐに自動取得されたプッシュ前バックアップを復元してください。[バックアップからの復元](https://support.kapsulehost.com/ja-jp/restoring-from-backup)を参照してください。

**リセット後、ステージングにエラーが表示されます。** 本番環境のドメインをハードコードしているプラグインが原因であることがほとんどです。ステージングカードの **WP 管理画面** からサインインし、エラーが消えるまでそこでプラグインを無効化していき、問題のあったプラグインを本番環境で修正または交換してください。
