0

Magento サイトを開発しています。ローカル ホストとリモート ホストにアクセスできますが、何らかの方法で開発環境と運用環境を構成したいと考えています。リモート ホストで、ローカル ホストにバックアップされたデータベース データを復元しますが、復元するとホストのベース名が上書きされ、ページが読み込まれたときにサイトが存在しない URL にリダイレクトされます。この衝突を回避するにはどうすればよいですか:

(a) http:// remotehost/foobardev で開発し、データを http:// remotehost/foobar にバックアップするか、または (b) http:// localhost/foobar で開発し、http でデプロイできるようにしたい:// リモートホスト/foobar . mysql を実行して mysql コマンド ソースを使用するときに、Magento 管理パネル -> システム -> 構成 -> Web -> 非セキュア ベース URL / セキュア ベース URL にある値を上書きせずに、データベース データを前後に転送する方法を知りたい開発サイトで見つかったデータベース エントリを本番サイトに復元します。

そのため、magento 管理パネルで構成されたベース URL を上書きせずにデータベースのコンテンツを復元する簡単な方法が必要です。これを行うと、ページの読み込みごとに存在しない場所または間違った場所にリダイレクトされ、システムが使用できなくなります。

4

1 に答える 1

2

正確にはSOタイプの質問ではありません。Magento EE にはステージングが組み込まれており、データをマージすることもできます。dev から live へのデータの同期は、すべての行と列の状態を追跡し、新しいデータと古いデータを認識し、同期の競合を解決する本格的な同期フレームワークなしでは簡単にできないことを理解する必要があります。

CE を使用しており、データ移行ツールがバンドルされていないという前提に基づくフローを次に示します。

  • ライブデータベースをセットアップし、データ移行がないため、データがライブから開発にのみ移動し、開発からライブに移動しないことを数えます。データベースレベルで作成および保存する必要があるすべての構成は、ライブデータベースで実行します(開発環境でテストしてからライブで作成します)
  • シェルスクリプト、ファブリックスクリプトを作成して、ライブdbダンプをエクスポートし、開発データベースが存在する場合は削除し、新しいデータベースを作成してライブデータベースをインポートし、変更/削除する事前または事後SQLスクリプトを実行します環境に依存する構成値 (base_url、secure_base_url など)
  • 二重のデータ入力を避けるために、magento セットアップ スクリプトで保持する必要があるすべての属性と設定値を常に作成してください。

コードについても同じことが言えます。これは、ライブ、ステージ、および開発環境での一般的なセットアップ シナリオです。

  • クリーンな Magento バージョン ツリーに基づく 1 つのマスター バージョン管理 (できれば誰かがそこでファイルを変更することを避けるために裸であることが望ましい) リポジトリ
  • 各環境 (ライブ、ステージ、dev(n)) の個別のブランチと、dev (開発し、コードベースの状態が壊れている可能性がある場所) からステージ (リリース候補が存在し、テストの準備ができており、変更されていない場所) への検証済みコード フロー。ステージからライブまで (ライブ コードが安定した状態にある場所)
  • すべての開発者は、dev ブランチからのチェックアウトに取り組み、独自の dev ブランチにコミットしてから、変更を dev にプッシュします。そこで、変更を評価し、変更がステージングに十分成熟しているかどうかを判断できます。
  • ステージは、リリース候補が存在し、クライアントがテスト (または自動化されたテスト) を行い、リリースに十分な準備ができているかどうかを診断できる場所です。誰もここでコードを変更することはなく、コードは開発ブランチから取得されます。
  • live は、誰もコードを直接変更しないライブで実行中のバージョンです。テストに合格した場合、コードはステージからのみここに来ることができます

視覚化するには、コードベースが git にあると想像してください。

myproject_magento_se (your project git repository on bitbucket.org or in github or wherever you can host)
--> master (branch with all clean magento versions from your current to latest)
--> dev (git checkout -b master (or by specific version from master) 
--> stage (while on dev: git checkout -b stage)
--> live (while on stage: git checkout -b live)

ホストのセットアップを次のように想像してください。

www.mylivesite.com =  git clone yourgitrepo; git checkout live;
stage.mylivesite.com = git clone yourgitrepo; git checkout stage;
dev.mylivesite.com = git clone yourgitrepo; git checkout dev;

これらすべてのために、ボタンを押すだけで環境間の切り替えとコードとデータベースのリフトを行う展開スクリプトを用意することをお勧めします。

以下は、すべてのソフトウェア プロジェクトで毎日実行する必要がある一般的なアクションです。

  • ライブからステージへのデータの移動/リセット (クライアント関連データのスクランブルまたは変更が必要な場合は、難読化呼び出しを行います)
  • コードを開発からステージに移動する
  • コードをステージからライブに移動
  • ライブ状態の開発をリセット/作成します (データとコード)

楽しんでください:)そして、このスレッドも読んでください https://superuser.com/questions/90301/sync-two-mysql-databasesおよび同様の問題でSOで検索できる他のすべてのもの。

于 2012-08-04T12:46:14.107 に答える