ステージングおよび実稼動へのデプロイ

デプロイと本番稼動のプロセスは、開発から始まり、ステージングに続き、本番稼動に移行して終了します。 Adobeは、構成の一貫性を確保するためのエンドツーエンドの環境ソリューションを提供します。 あらゆる環境で、ストアフロントへの直接URL アクセスと、CLI コマンドの管理者およびSSH アクセスがサポートされています。

ストアをデプロイする準備ができたら、実稼動にデプロイする前に、ステージング環境でのデプロイメントとテストを完了する必要があります。 この節では、ビルドとデプロイのプロセス、データとコンテンツの移行、テストについて詳しい手順と情報を提供します。

TIP
Adobeでは、デプロイメントの前に環境の​ バックアップ ​を作成することをお勧めします。

また、New Relicでデプロイメントを追跡を有効にして、デプロイメントイベントを監視し、デプロイメント間のパフォーマンスを分析できます。

スターターのデプロイメントフロー

Adobeでは、スタータープランの開発と展開を最大限にサポートするために、master ブランチからstaging ブランチを作成することをお勧めします。 次に、4つのアクティブな環境のうち2つを準備します。実稼動用にはmaster、ステージング用にはstaging

プロセスの詳細については、​ スターターワークフローの開発とデプロイ ​を参照してください。

プロのデプロイメントフロー

Proには、アクティブな2つのブランチ、グローバル master ブランチ、ステージング、実稼動ブランチを備えた大規模な統合環境が付属しています。 プロジェクトを作成すると、サイトの構築とデプロイのためにコードをブランチ、開発、プッシュする準備が整います。 統合環境には多数のブランチを含めることができますが、ステージング環境と実稼動環境には、各環境に対して1つのブランチしか含まれていません。

プロセスの詳細については、Pro ワークフローの開発とデプロイ ​を参照してください。

ステージングへのコードのデプロイ

ステージング環境では、データベース、web サーバー、およびFastlyやNew Relicを含むすべてのサービスを含む、ほぼ実稼動環境を提供します。 ターミナルアプリケーションを使用して、Cloud ConsoleまたはCloud CLI コマンド ​を通じて、完全にプッシュ、結合、デプロイできます。

Cloud Consoleを使用したコードのデプロイ

Cloud Consoleには、スタータープランとPro プランの統合、ステージング、実稼動環境でコードを作成、管理、デプロイする機能が用意されています。

Pro プロジェクトの場合、統合ブランチをステージング​にデプロイします。

  1. ​ プロジェクトに ログインします。

  2. integration ブランチを選択します。

  3. 結合」オプションを選択して、ステージングにデプロイします。

    結合 {width="150"}

  4. ステージング環境のすべての​ テスト ​を完了します。

  5. ステージングの準備ができたら、結合 オプションを選択して実稼動環境にデプロイします。

Starterの場合、開発ブランチをステージング​にデプロイします。

  1. ​ プロジェクトに ログインします。

  2. 準備されたコードブランチを選択します。

  3. 結合」オプションを選択して、ステージングにデプロイします。

    結合 {width="150"}

  4. ステージング環境のすべての​ テスト ​を完了します。

  5. ステージングの準備ができたら、結合 オプションを選択して、実稼動環境(master)にデプロイします。

コマンドラインを使用したコードのデプロイ

Cloud CLIには、コードをデプロイするコマンドが用意されています。 プロジェクトにはSSHとGitのアクセス権が必要です。

手順1:統合環境のデプロイとテスト

  1. プロジェクトにログインした後、統合環境を確認します。

    code language-bash
    magento-cloud environment:checkout <environment-ID>
    
  2. ローカル統合環境をリモート環境と同期します。

    code language-bash
    magento-cloud environment:synchronize <environment-ID>
    
  3. 環境のスナップショットをバックアップとして作成します。

    code language-bash
    magento-cloud snapshot: create -e <environment-ID>
    
  4. 必要に応じて、ローカルブランチのコードを更新します。

  5. 環境に変更を追加、コミット、およびプッシュします。

    code language-bash
    git add -A && git commit -m "Commit message" && git push origin <environment-ID>
    
  6. 包括的なサイトテスト:

手順2:変更をステージングに統合してデプロイする

  1. ステージング環境を確認します。

    code language-bash
    magento-cloud environment:checkout <environment-ID>
    
  2. ローカルのステージング環境をリモート環境と同期します。

    code language-bash
    magento-cloud environment:synchronize <environment-ID>
    
  3. 環境のスナップショットをバックアップとして作成します。

    code language-bash
    magento-cloud snapshot: create -e <environment-ID>
    
  4. 統合環境をステージングに統合してデプロイします。

    code language-bash
    magento-cloud environment:merge <integration-ID>
    
  5. 包括的なサイトテスト:

手順3:実稼動環境へのデプロイ

  1. ローカルの実稼動環境のスナップショットをチェックアウト、同期、作成します。

  2. ステージング環境を実稼動環境にマージしてデプロイします。

    code language-bash
    magento-cloud environment:merge <staging-ID>
    
  3. 包括的なサイトテスト:

静的ファイルの移行

静的ファイル ​mountsに保存されています。 ローカル環境などのソースマウントの場所から目的のマウントの場所にファイルを移行する方法は2つあります。 どちらの方法もrsync ユーティリティを使用しますが、Adobeでは、magento-cloud CLIを使用してローカル環境とリモート環境の間でファイルを移動することをお勧めします。 また、Adobeでは、ファイルをリモート ソースから別のリモート場所に移動する場合は、rsync メソッドを使用することをお勧めします。

CLIを使用したファイルの移行

mount:uploadおよびmount:downloadのCLI コマンドを使用して、ローカル環境とリモート環境の間でファイルを移行できます。 どちらのコマンドもrsync ユーティリティを使用しますが、CLI コマンドは、Adobe Commerce on cloud infrastructure環境に合わせたオプションとプロンプトを提供します。 例えば、オプションなしでsimple コマンドを使用する場合、アップロードまたはダウンロードするマウントまたはマウントを選択するよう求めるプロンプトがCLIから表示されます。

magento-cloud mount:download

回答サンプル:

Enter a number to choose a mount to download from:
  [0] app/etc
  [1] pub/static
  [2] var
  [3] pub/media
  [4] All mounts
 > 3

Target directory: ~/pub/media/

Downloading files from the remote mount pub/media to pub/media

Are you sure you want to continue? [Y/n] Y

ローカル pub/media/ フォルダーから現在の環境​のリモート pub/media/ フォルダーにファイルをアップロードするには:

magento-cloud mount:upload --source /path/to/project/pub/media/ --mount pub/media/

回答サンプル:

Uploading files from pub/media to the remote mount pub/media

Are you sure you want to continue? [Y/n] Y

  building file list ...   done
  ./
  sample-file.jpeg

  sent 8.43K bytes  received 48 bytes  3.39K bytes/sec
  total size is 154.57K  speedup is 18.23

mount:uploadおよびmount:download コマンドの--help オプションを使用して、その他のオプションを表示します。 例えば、移行中に無関係なファイルを削除する--delete オプションがあります。

rsyncを使用したファイルの移行

または、rsync ユーティリティを使用してファイルを移行することもできます。

rsync -azvP <source> <destination>

このコマンドでは、次のオプションが使用されます。

  • a – アーカイブ
  • 移行中にz – ファイルを圧縮
  • v – 詳細
  • P部分の進捗

rsyncのヘルプを参照してください。

NOTE
リモートからリモート環境にメディアを直接転送するには、SSH エージェント転送を有効にする必要があります。GitHub ガイダンス ​を参照してください。

リモート環境からリモート環境に静的ファイルを直接移行するには(高速アプローチ):

  1. SSHを使用してソース環境にログインします。 magento-cloud CLIは使用しないでください。 認証エージェント接続の転送を有効にするため、-A オプションの使用は重要です。

    note tip
    TIP
    Cloud Consoleで​SSH アクセス リンクを見つけるには、環境を選択して「サイトにアクセス」をクリックします。
    code language-bash
    ssh -A <environment_ssh_link@ssh.region.magento.cloud>
    
  2. rsync コマンドを使用して、pub/media ディレクトリをソース環境から別のリモート環境にコピーします。

    code language-bash
    rsync -azvP pub/media/ <destination_environment_ssh_link@ssh.region.magento.cloud>:pub/media/
    
  3. 他のリモート環境にログインして、正常に移行されたファイルを確認します。

データベースの移行

WARNING
データベースの読み込みと書き出しの操作には時間がかかり、サイトのパフォーマンスと可用性に影響を与える可能性があります。 オフピーク時にインポートおよびエクスポート操作をスケジュールして、本番サイトのパフォーマンスの低下や停止を防ぎます。

前提条件: データベース ダンプ (手順3を参照)には、データベース トリガーを含める必要があります。 ダンプする場合は、トリガー権限があることを確認してください。

IMPORTANT
統合環境データベースは開発テスト用に厳密に作成されており、ステージングおよび実稼動に移行しないデータを含めることができます。

継続的インテグレーションのデプロイメントの場合、Adobe はインテグレーションからステージングおよび実稼動へのデータの移行を​お勧めしません。 テストデータを渡したり、重要なデータを上書きしたりできます。 重要な設定はすべて、ビルドおよびデプロイ時に設定ファイル ​およびsetup:upgrade コマンドを使用して渡されます。

Adobe では、すべてのサービスと設定を使用して、ほぼ実稼働環境でサイトとストアを完全にテストするために、実稼働環境からステージングにデータを移行することを​お勧めします。

NOTE
リモートからリモート環境にメディアを直接転送するには、ssh エージェント転送を有効にする必要があります。GitHub ガイダンス ​を参照してください。

データベースのバックアップ

データベースのバックアップを作成することをお勧めします。 次の手順では、​ データベースをバックアップ ​のガイダンスを使用します。

データベースをダンプするには:

  1. SSHを使用して、コピーするデータベースを含むリモート環境にログインします。

  2. 環境の関係を一覧表示し、データベースのログイン情報をメモします。

    code language-bash
    php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"]))->database);'
    

    Pro ステージングおよび実稼動の場合、データベースの名前はMAGENTO_CLOUD_RELATIONSHIPS変数に含まれます(通常は、アプリケーション名とユーザー名と同じです)。

  3. データベースのバックアップを作成します。 DB ダンプのターゲットディレクトリを選択するには、--dump-directory オプションを使用します。

    スターター環境とPro統合環境の場合は、データベースの名前としてmainを使用します。

    code language-bash
    php vendor/bin/ece-tools db-dump main
    

    ダンプオプション:

    • --dump-directory=<dir> - データベース ダンプのターゲット ディレクトリを選択します
    • --remove-definers - データベース ダンプからDEFINER ステートメントを削除します
  4. ECE-Tools メソッドを使用することをお勧めしますが、別の方法として、GZIP形式でネイティブ MySQLを使用してデータベースダンプファイルを作成する方法があります。

    code language-bash
    mysqldump -h <database-host> --user=<database-username> --password=<password> --single-transaction --triggers <database-name> | gzip - > /tmp/database.sql.gz
    

    ターゲット環境で2要素認証を設定している場合は、データベース移行後に再構成しないように、関連する2FA テーブルを除外することをお勧めします。

    code language-bash
    mysqldump -h <database-host> --user=<database-username> --password=<password> --single-transaction --triggers --ignore-table=<database-name>.tfa_user_config --ignore-table=<database-name>.tfa_country_codes <database-name> | gzip - > /tmp/database.sql.gz
    
  5. SSH接続を終了するには、logoutと入力します。

データベースをドロップして再作成します

データを読み込む場合は、データベースを削除して作成する必要があります。

データベースを削除して再作成するには:

  1. リモート環境へのSSH トンネル ​を確立します。

  2. データベースサービスに接続します。

    code language-bash
    mysql --host=127.0.0.1 --user='<database-username>' --pass='<user-password>' --database='<name>' --port='<port>'
    
  3. MariaDB [main]> プロンプトで、データベースをドロップします。

    StarterとProの統合の場合:

    code language-shell
    drop database main;
    

    実稼動環境とステージング環境の場合:

    code language-shell
    drop database <database_name>;
    
  4. データベースを再作成します。

    StarterとProの統合の場合:

    code language-shell
    create database main;
    
  5. データベースを読み込みます。

    実稼動用に読み込み:

    code language-shell
    zcat <cluster-ID>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -p -u <database-username> <database-name>;
    

    ステージング用に読み込み:

    code language-shell
    zcat <cluster-ID_stg>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -p -u <database-username> <database-name>;
    

    これらのコマンドは、データベース ダンプ ファイルを解凍し、DEFINER ステートメントを削除し、指定された資格情報を使用してデータベースをインポートします。

recommendation-more-help
commerce-on-cloud-help-cloud-guide