ステージングおよび実稼動へのデプロイ
デプロイと本番稼動のプロセスは、開発から始まり、ステージングに続き、本番稼動に移行して終了します。 Adobeは、構成の一貫性を確保するためのエンドツーエンドの環境ソリューションを提供します。 あらゆる環境で、ストアフロントへの直接URL アクセスと、CLI コマンドの管理者およびSSH アクセスがサポートされています。
ストアをデプロイする準備ができたら、実稼動にデプロイする前に、ステージング環境でのデプロイメントとテストを完了する必要があります。 この節では、ビルドとデプロイのプロセス、データとコンテンツの移行、テストについて詳しい手順と情報を提供します。
また、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 プロジェクトの場合、統合ブランチをステージングにデプロイします。
Starterの場合、開発ブランチをステージングにデプロイします。
コマンドラインを使用したコードのデプロイ
Cloud CLIには、コードをデプロイするコマンドが用意されています。 プロジェクトにはSSHとGitのアクセス権が必要です。
手順1:統合環境のデプロイとテスト
-
プロジェクトにログインした後、統合環境を確認します。
code language-bash magento-cloud environment:checkout <environment-ID> -
ローカル統合環境をリモート環境と同期します。
code language-bash magento-cloud environment:synchronize <environment-ID> -
環境のスナップショットをバックアップとして作成します。
code language-bash magento-cloud snapshot: create -e <environment-ID> -
必要に応じて、ローカルブランチのコードを更新します。
-
環境に変更を追加、コミット、およびプッシュします。
code language-bash git add -A && git commit -m "Commit message" && git push origin <environment-ID> -
包括的なサイトテスト:
手順2:変更をステージングに統合してデプロイする
-
ステージング環境を確認します。
code language-bash magento-cloud environment:checkout <environment-ID> -
ローカルのステージング環境をリモート環境と同期します。
code language-bash magento-cloud environment:synchronize <environment-ID> -
環境のスナップショットをバックアップとして作成します。
code language-bash magento-cloud snapshot: create -e <environment-ID> -
統合環境をステージングに統合してデプロイします。
code language-bash magento-cloud environment:merge <integration-ID> -
包括的なサイトテスト:
手順3:実稼動環境へのデプロイ
-
ローカルの実稼動環境のスナップショットをチェックアウト、同期、作成します。
-
ステージング環境を実稼動環境にマージしてデプロイします。
code language-bash magento-cloud environment:merge <staging-ID> -
包括的なサイトテスト:
静的ファイルの移行
静的ファイル は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のヘルプを参照してください。
リモート環境からリモート環境に静的ファイルを直接移行するには(高速アプローチ):
-
SSHを使用してソース環境にログインします。
magento-cloudCLIは使用しないでください。 認証エージェント接続の転送を有効にするため、-Aオプションの使用は重要です。note tip TIP Cloud ConsoleでSSH アクセス リンクを見つけるには、環境を選択して「サイトにアクセス」をクリックします。 code language-bash ssh -A <environment_ssh_link@ssh.region.magento.cloud> -
rsyncコマンドを使用して、pub/mediaディレクトリをソース環境から別のリモート環境にコピーします。code language-bash rsync -azvP pub/media/ <destination_environment_ssh_link@ssh.region.magento.cloud>:pub/media/ -
他のリモート環境にログインして、正常に移行されたファイルを確認します。
データベースの移行
前提条件: データベース ダンプ (手順3を参照)には、データベース トリガーを含める必要があります。 ダンプする場合は、トリガー権限があることを確認してください。
継続的インテグレーションのデプロイメントの場合、Adobe はインテグレーションからステージングおよび実稼動へのデータの移行をお勧めしません。 テストデータを渡したり、重要なデータを上書きしたりできます。 重要な設定はすべて、ビルドおよびデプロイ時に設定ファイル およびsetup:upgrade コマンドを使用して渡されます。
Adobe では、すべてのサービスと設定を使用して、ほぼ実稼働環境でサイトとストアを完全にテストするために、実稼働環境からステージングにデータを移行することをお勧めします。
データベースのバックアップ
データベースのバックアップを作成することをお勧めします。 次の手順では、 データベースをバックアップ のガイダンスを使用します。
データベースをダンプするには:
-
SSHを使用して、コピーするデータベースを含むリモート環境にログインします。
-
環境の関係を一覧表示し、データベースのログイン情報をメモします。
code language-bash php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"]))->database);'Pro ステージングおよび実稼動の場合、データベースの名前は
MAGENTO_CLOUD_RELATIONSHIPS変数に含まれます(通常は、アプリケーション名とユーザー名と同じです)。 -
データベースのバックアップを作成します。 DB ダンプのターゲットディレクトリを選択するには、
--dump-directoryオプションを使用します。スターター環境とPro統合環境の場合は、データベースの名前として
mainを使用します。code language-bash php vendor/bin/ece-tools db-dump mainダンプオプション:
--dump-directory=<dir>- データベース ダンプのターゲット ディレクトリを選択します--remove-definers- データベース ダンプからDEFINER ステートメントを削除します
-
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 -
SSH接続を終了するには、
logoutと入力します。
データベースをドロップして再作成します
データを読み込む場合は、データベースを削除して作成する必要があります。
データベースを削除して再作成するには:
-
リモート環境へのSSH トンネル を確立します。
-
データベースサービスに接続します。
code language-bash mysql --host=127.0.0.1 --user='<database-username>' --pass='<user-password>' --database='<name>' --port='<port>' -
MariaDB [main]>プロンプトで、データベースをドロップします。StarterとProの統合の場合:
code language-shell drop database main;実稼動環境とステージング環境の場合:
code language-shell drop database <database_name>; -
データベースを再作成します。
StarterとProの統合の場合:
code language-shell create database main; -
データベースを読み込みます。
実稼動用に読み込み:
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ステートメントを削除し、指定された資格情報を使用してデータベースをインポートします。