正解も不正解もありません。私が取ったアプローチについて提案しています。ベースnop 2.80の上にコードの変更とデータベースの変更があると仮定します。
地上工事
詳細な変更リストを書き留めます。(2.80 の上に追加した追加機能。)
3.10 で変更がサポートされているかどうかを確認してください。
私の変更回数は 250 でした (見積もりまで非常に詳細です)。
アプローチ
- 2.80 db を 3.10 db にアップグレードします。
- 2.80 の新機能をサポートするように 3.10 コードを変更します。
DB アップグレード
- 優れたデータベース差分ツールを見つけてください。例: SQL 比較。
- 実稼働 (2.80) DB を開発用 PC に復元し、nop 3.10 db も開発用 PC にインストールします。
- 両方の DB テーブルをテーブルごとに比較します。基本的に、3.10 スキーマを比較して、2.80 db を 3.10 db にアップグレードします。
- 3.10 と比較して、2.80 で新しい列を変更/削除/追加します。
- 店舗情報(店舗テーブル)を作成します。これは 3.10 の新機能であり、StoreID は他のほとんどのテーブルに必要です。
- 3.10 スキーマに一致するように顧客データを更新します。
- 製品情報を更新します。ProductVariant テーブルが Product テーブルとマージされました。したがって、製品テーブルを更新する必要があります。
- 注文の詳細を更新します。OrderVariant は OrderItem になりました。というわけでデータ移動。
- 他のテーブルを移動します。
以前は単一の SQL スクリプトを作成していましたが、
- バックアップ ファイルから本番 DB を復元します。
- 各テーブルをアップグレードしてデータを入力する、各テーブルのスクリプト ブロック。
これにより、スクリプトを実行して実行し、エラーが発生した場合にスクリプトを再実行する柔軟性が得られます。これは、スクリプト作成中にも役立ちます。
なお、2店舗以上を1店舗に統合する場合は、
- ステップ 5 ですべてのストア情報を追加します。
- この時点から、ストアごとに個別のスクリプトを作成します。
- OrderId と Customer ID の異なるシーケンス番号を見つける必要があります。同じにはなりません。
- 2 店舗目以降を追加する場合は、既存の顧客を確認してから追加してください。
チェック01
新しい 3.10 コード ベースを使用して、移行したデータベースに対して実行します。移行を適切に行っていれば、すべてうまくいくはずです。
コードのアップグレード
ProductVariant テーブルがないため、単純なコードに大幅な変更を加える必要があります。そのため、すべてのカスタム ロジックを書き直す必要があります。
主な問題は、請求書です。店舗が複数ある場合、店舗ごとのメール設定はありません。したがって、それもカスタム変更する必要があります。
良いアプローチは、
- すべての顧客側の e コマース フィストを実行します。
- 次に、管理側を行います。
- 顧客と管理者が同じ機能を使用している場合は、一緒に行います。たとえば、発注ワークフローのカスタム変更。
- プラグインに必要な大きな変更はありません。
チェック02
更新された 3.10 コード ベースを使用して、移行された DB を実行します。すべてが機能するはずです。
大事な日に
- プロダクション DB とプロダクション コード ベースをバックアップします。
- アップグレード スクリプトを実行し、新しいコード ベースを置き換えます。
- これまでにすべてのハードワークを行ったので、3 番目のステップはありません。
- わかりました、失敗したらロールバックします。
注意事項
私はこれらをテストで学びました。神に感謝します。実際の移行前にそれらを見つけました。
nop コマース側で完全なマルチストア ソリューションをセットアップする方法について、移行を行っていた時点では詳細な手順はありません。実稼働サーバーで nop コマースをセットアップする方法については、こちらの手順を参照してください。しかし、私はすべての側面をカバーしているわけではありません。
VPS サーバーを使用してプラットフォームをホストしていました。VPS を使用している場合、マルチストアを適切にセットアップすると、 SNIを使用する必要があることに注意してください。IIS 8 以降のみが SNI をサポートします。つまり、Windows 2012 Server が必要です。SNI の詳細については、こちらとこちらを参照してください
Pleask を使用してサーバーを管理していました。したがって、マスター ドメインをプライマリとして設定し、他のすべてのストアをエイリアスとして設定します。IIS側ではVPSにRDPインし、IIS8のSNI機能を利用してドメインごとにSSLを設定
SNI の欠点として、すべての古いブラウザーでサポートされているわけではありません。ここを参照してください。
制限事項
Pleask を使用している場合、メールはうまく機能しません。メール ボックスはマスター ドメインに対してのみ作成され、他のすべてのエイリアスは同じメール アカウントを共有するためです。そのため、エイリアス メールから返信を送信できます。残念ながら、それはノップコマース開発の範囲外です。
私はこれに対する解決策を見つけていません。これに取り組んでいます。