ステージング環境および実稼動環境にデプロイ
デプロイと運用開始のプロセスは、開発から始まり、ステージングに続き、実稼動での運用開始で終わります。 Adobeは、一貫性のある設定を確実に行うためのエンドツーエンドの環境ソリューションを提供します。 すべての環境で、ストアフロントへの直接 URL アクセス、および CLI コマンドへの管理者および SSH アクセスがサポートされています。
ストアをデプロイする準備が整ったら、実稼動環境にデプロイする前に、ステージング環境でのデプロイメントとテストを完了する必要があります。 この節では、ビルドおよびデプロイプロセス、データとコンテンツの移行およびテストに関する詳細な手順と情報を示します。
また、を有効にすることもできます New Relicを使用したデプロイメントの追跡 デプロイメントのイベントを監視し、デプロイメント間のパフォーマンスを分析するのに役立ちます。
スターターデプロイメントフロー
Adobeでは、以下を作成することをお勧めします staging
分岐の master
スタータープランの開発とデプロイメントを最適にサポートするブランチ。 次に、4 つのアクティブな環境のうち 2 つが準備されています。 master
実稼動用および staging
ステージングの場合。
このプロセスの詳細については、を参照してください スターターの開発とデプロイのワークフロー.
プロデプロイメントフロー
Pro には、2 つのアクティブなブランチを持つ大規模な統合環境(グローバル)が付属しています master
ブランチ、ステージングおよび実稼動のブランチ。 プロジェクトを作成すると、サイトの構築とデプロイのために、コードを分岐、開発、プッシュする準備が整います。 統合環境には多数のブランチを含めることができますが、ステージング環境と実稼動環境のブランチは各環境に 1 つだけです。
このプロセスの詳細については、を参照してください プロ開発およびデプロイワークフロー.
コードをステージングにデプロイ
このステージング環境は、データベース、web サーバー、Fastly やNew Relicなどのすべてのサービスを含む、実稼動環境に近い環境を提供します。 を介して完全にプッシュ、結合、デプロイできます Cloud Console または クラウド CLI コマンド ターミナルアプリケーションを使用します。
を使用したコードのデプロイ Cloud Console
この Cloud Console は、スタータープランと Pro プランの統合、ステージングおよび実稼動環境でコードを作成、管理、デプロイする機能を提供します。
Pro プロジェクトの場合は、統合ブランチをステージングにデプロイします:
スターターの場合、開発ブランチをステージングにデプロイします:
コマンドラインでコードをデプロイします。
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に合わせてカスタマイズされたオプションとプロンプトが提供されます。 たとえば、オプションを指定せずに単純なコマンドを使用した場合、アップロードまたはダウンロードするマウントを選択するよう 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
の使用 --help
オプション: mount:upload
および mount:download
その他のオプションを表示するコマンド。 例えば、 --delete
移行中に不要なファイルを削除するオプション。
rsync を使用したファイルの移行
または、を使用することもできます。 rsync
ファイルを移行するためのユーティリティ。
rsync -azvP <source> <destination>
このコマンドは、次のオプションを使用します。
a
-archivez
– マイグレーション中にファイルを圧縮するv
-verboseP
部分的な進捗状況
参照: rsync 助けて。
静的ファイルをリモート環境からリモート環境に直接移行する(高速アプローチ):
-
SSH を使用してソース環境にログインします。 を使用しないでください。
magento-cloud
CLI。 使用,-A
認証エージェント接続の転送を有効にするので、オプションは重要です。note tip TIP を検索するには SSH アクセス 内のリンク Cloud Consoleを選択し、環境を選択して、 サイトへのアクセス. 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);'
ステージング環境および実稼動環境の場合、データベースの名前はにあります。
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 ツール方式をお勧めしますが、別の方法として、ネイティブの MySQL を使用して GZIP 形式でデータベースダンプファイルを作成する方法もあります。
code language-bash mysqldump -h <database-host> --user=<database-username> --password=<password> --single-transaction --triggers <database-name> | gzip - > /tmp/database.sql.gz
ターゲット環境で二要素認証を設定した場合は、関連する 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
-
タイプ
logout
SSH 接続を終了します。
データベースを削除して再作成します
データをインポートする場合、データベースをドロップして作成する必要があります。
データベースを削除して再作成するには、次の手順に従います:
-
を確立する SSH トンネル をリモート環境に送信します。
-
データベースサービスに接続します。
code language-bash mysql --host=127.0.0.1 --user='<database-username>' --pass='<user-password>' --database='<name>' --port='<port>'
-
時刻
MariaDB [main]>
プロンプトを表示して、データベースを削除します。スターターと Pro の統合の場合:
code language-shell drop database main;
実稼動の場合:
code language-shell drop database <cluster-id>;
ステージング用:
code language-shell drop database <cluster-ID_stg>;
-
データベースを再作成します。
スターターと 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>;