複数のデータベースを使用した単一のインストール


11

1つのインストールを作成し、このインストールから異なるデータベースで複数のショップを作成することは可能ですか?

データベースを使用してdomain.1に 1つのインストールを作成し、adminからdomain.2の新しいデータベースに新しいWebサイトとストアを作成するようなものです。

1つのデータベースで複数の店舗を実現できることは知っています。しかし、データベースが異なっていても同じになる可能性があります。


2つのデータベースが必要な理由を説明できますか?それはマスター/スレーブ構成ですか、それとも2つの別個のデータベースが必要ですか?
マリウス

2つの個別のデータベースが欲しいだけです。1つのインストールで2つの異なるストアが必要ですが、データベースは別々です。
マイク

回答:


3

すばらしい回答です。私たちは非常に似たようなことをしました。index.phpを編集する代わりに、magentoのコードベースの外に別のフォルダーをセットアップし、それらのフォルダーからmage.phpを含めて、上記の方法のようにetc_dir(およびその他のディレクトリ)を編集します。

フォルダー構造:

/ www / client1
/ www / client2
/ www / client3
/ www / clientX
/ www / magento

各クライアントフォルダーの内部は次のとおりです。

  • /www/clientx/etc/local.xml(一意のデータベースが定義され、一意のredis dbが含まれています)
  • / www / clientx / etc / modules(これは/ www / magento / app / etc / modulesへのシンボリックリンクです)
  • /www/clientx/index.php

/www/clientx/index.php

define('MAGENTO_ROOT', '/www/magento');

...(index.phpの残りの部分は通常どおりのビジネスです)...

$client = isset($_SERVER['CLIENT_ID']) ? $_SERVER['CLIENT_ID'] : '';] Mage::run($mageRunCode, $mageRunType, array('etc_dir'=>'../'.$client));

設定

$_SERVER['CLIENT_ID'] in Nginx with 
`fastcgi_param  CLIENT_ID clientx; `

5

これはそのままでは可能ではないと思います。Magentoはマスター/スレーブデータベース構成をサポートしますが、すべてのストアに対してそれらを用意する必要があります。
また、ストアはデータベースに保存されているため、カスタムコーディングを使用してこれを簡単に実行できるとは思いません。

したがって、ストアビューに応じて、接続するデータベースを知る必要がありますが、ストアビューを知るには、データベースにクエリを実行する必要があります。だからあなたは輪になって走り回ります。


3

単一のコードベースを使用して、独自のデータベースを備えた複数の別個のストアが必要ですか?

まあ、それを行うための単純で推奨される方法はありません。そうは言っても、何ができるかがわかります。

データベース情報は単一のxmlファイルから取得されます:app / etc / local.xmlこのファイルはapp / Mage.phpからロードされるため、そのファイルを変更した場合、理論的には、ロードする構成ファイルを(必要に応じて)決定できますドメイン名などの条件)。出来上がり、異なるドメイン、異なるデータベース。今度はBad News Part(tm)が登場します。

  1. あなたはコアコードといわゆる「神のクラス」を上書きしています。これはMagentoの世界では非常に悪い習慣と見なされています!アップグレードするたびに、変更は上書きされます。
  2. コンテンツが重複しています。すべてのコンテンツがデータベースに保存されているわけではありません。メディアフォルダーとセッションフォルダー(var / session)もあり、回避策(データベースに基づくカスタムパスなど)を見つけるか、画像とセッションの両方をデータベースに保存する必要があります(以前はあなたが尋ねる:そう、これは可能です)。
  3. キャッシュ。別のストアがキャッシュフォルダー(var / cache)を共有することを望まないでしょう。幸い、そのフォルダーにファイルを保存する代わりに、memcachedなどの外部キャッシュを使用することができます。それでも、キャッシュIDが重複しないことを確認する必要があります。重複していると、被害を受ける可能性があります。
  4. コンパイルは使用できません(この機能はとにかく非推奨です)。
  5. 多分私が忘れている何か。誰でも?

2

私はこの拡張機能を見つけました:https :
//github.com/steverobbins/Magento-Multi_Client

Magento Multi Client
同じMagentoコードベースで複数のクライアントをホストします。

各クライアントには、独自のlocal.xmlおよびetc / modules.xmlがあります。これにより、クライアントごとに個別のデータベースとキャッシュサービスを指定し、必要に応じてモジュールを有効または無効にすることができます。

各クライアントは独立性を維持しますが、コードベースを共有します。

これは、Magento WebサイトをホストするためのMagento Go-esqueアプローチと考えることができます。


2

設定ファイルを含む新しいフォルダーを作成し、index.phpでMage :: Run()にオプションの配列を追加するだけです。

そのフォルダーには、modulesフォルダーを含むapp / etc /と同じ内容がすべて含まれます。

最初のドメイン:

Mage::run($mageRunCode, $mageRunType, array('etc_dir'=>'app/domain1'));

2番目のドメイン:

Mage::run($mageRunCode, $mageRunType, array('etc_dir'=>'app/domain2'));

これにより、ドメインの構成ファイルの場所がMagentoに通知されます。


1

あなたの主な目標は何ですか?別の管理領域またはソースコードの扱いが簡単ですか?

「ローカル」ディレクトリとファイル、およびリンクされた(ln -s)共通ディレクトリとファイルを組み合わせて使用​​します

/ www / common / www / shop1 / www / shop2

一般

  • app /
  • js /
  • lib /
  • ...

"地元"

  • / var /
  • index.php
  • .htaccess
  • app / etc / local.xml

しかし、少し混乱するかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.