Одномісна установка з декількома базами даних


11

Чи можливо зробити одну установку, а з цієї установки зробити кілька магазинів з різними базами даних?

Щось подібне, я зроблю одну установку на domain.1 з базою даних, а від адміністратора я буду створювати новий веб-сайт та зберігати в якійсь новій базі даних для domain.2 .

Я знаю, що за допомогою однієї бази даних можна досягти декількох магазинів. Але чи може бути те саме з різними базами даних.


Чи можете ви пояснити, чому вам потрібні 2 бази даних? Це конфігурація головного / підлеглого або просто хочете мати 2 окремі бази даних?
Маріус

Я просто хочу мати 2 окремі бази даних. Мені потрібні два різні магазини з однією установкою, але окрема база даних.
Майк

Відповіді:


3

Чудова відповідь сларек. Ми зробили щось дуже схоже. Замість редагування index.php ми встановлюємо окремі папки поза кодовою базою магенто і включаємо mage.php з цих папок, а потім редагуємо etc_dir (та інші dirs), як у вашому методі вище.

структура папки:

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

Всередині кожної з папок клієнта є:

  • /www/clientx/etc/local.xml (з визначеною унікальною базою даних та унікальним redis db)
  • / www / clientx / etc / модулі (це символьне посилання на / www / magento / app / тощо / модулі)
  • /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 підтримує конфігурацію бази даних master / slave, але ви повинні мати їх для всіх магазинів.
І я не думаю, що це можна зробити легко за допомогою спеціального кодування, оскільки магазини зберігаються в базі даних.

Отже, залежно від подання магазину, ви повинні знати, до якої бази даних підключитись, але для того, щоб знати вигляд магазину, вам потрібно запитувати базу даних. Тож ти біжиш по колах.


3

Ви хочете мати кілька окремих магазинів із власними базами даних за допомогою єдиної бази даних?

Ну, немає простого і рекомендованого способу зробити це. Коли ми говоримо, ми можемо побачити, що МОЖНА зробити:

Інформація про базу даних походить з одного файлу xml: app / etc / local.xml Цей файл завантажується з app / Mage.php, тому якщо ви зміните цей файл, ви можете теоретично вирішити, який файл конфігурації ви збираєтеся завантажити (виходячи з потрібного умова, наприклад доменне ім’я). Voila, інший домен, інша база даних. Тепер приходить частина поганих новин (тм).

  1. Ви перезаписуєте основний код і так званий "клас бога" при цьому. Це вважається ДУЖЕ БАДНОЮ практикою в світі Magento! Щоразу, коли ви оновлюєте зміни, вони будуть перезаписані.
  2. Перекриття вмісту. Не весь ваш вміст зберігається в базі даних, є також папка мультимедіа та папка сеансу (var / session), вам потрібно знайти рішення (наприклад, власні шляхи на основі бази даних) або зберегти зображення та сеанси в базі даних (раніше ви запитаєте: так, це можливо).
  3. Кеш. Ви, звичайно, не хочете, щоб різні магазини ділилися папкою кешу (var / cache). На щастя, можна використовувати зовнішні кеші, такі як запам'ятовані замість зберігання файлів у цій папці. Тим не менш, ти повинен переконатися, що ваші ідентифікатори кешу не перекриватимуться, тому що якщо вони будуть, ви потрапите у світ боляче.
  4. Ви не можете використовувати компіляцію (функція все одно застаріла).
  5. Можливо, ще щось я забуваю. Хтось?

2

Я щойно знайшов це розширення:
https://github.com/steverobbins/Magento-Multi_Client

Magento Multi Client
Розміщує декілька клієнтів на одній базі кодів Magento.

У кожного клієнта є свій local.xml та ін. / Module.xml. Це дозволяє вказати окремі бази даних та послуги кешування для кожного клієнта, а також включити / відключити модулі за потребою.

Кожен клієнт підтримує свою незалежність, але ділиться кодовою базою.

Це можна вважати підходом Magento Go-esque до розміщення веб-сайтів Magento.


2

Вам просто потрібно створити нову папку, яка містить файли конфігурації, а в index.php ви додаєте масив параметрів до Mage :: Run ().

У цій папці ви будете мати той самий вміст, що і додаток / etc /, включаючи папку модулів.

Перший домен:

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

Другий домен:

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

це скаже Magento, де знаходяться конфігураційні файли для домену.


1

Яка ваша головна мета? Інша область адміністратора чи легше обробляти вихідний код?

Я б це зробив із поєднанням "локальних" каталогів та файлів та пов'язаних (ln -s) загальних каталогів та файлів

/ www / загальні / www / shop1 / www / shop2

звичайний

  • додаток /
  • js /
  • lib /
  • ...

"місцевий"

  • / var /
  • index.php
  • .htaccess
  • app / тощо / local.xml

Але це може бути трохи заплутано.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.