Birden fazla veritabanı ile tek instalasyon


11

Bir kurulum yapmak ve bu kurulumdan farklı veritabanlarına sahip birden fazla dükkan yapmak mümkün müdür?

Bir veritabanı ile domain.1 üzerinde bir kurulum yapacağım gibi ve admin'den domain için yeni bir web sitesinde ve bir mağazada sandık yapacağım .

Bir veritabanı ile birden fazla mağazaya ulaşılabileceğini biliyorum. Ancak farklı veritabanları ile aynı olabilir mi?


Neden 2 veritabanına ihtiyacınız olduğunu açıklayabilir misiniz? Ana / bağımlı bir yapılandırma mı yoksa sadece 2 ayrı veritabanına mı sahip olmak istiyorsunuz?
Marius

Sadece 2 ayrı veri tabanına sahip olmak istiyorum. Bir kurulum ancak ayrı veritabanı ile iki farklı mağazaya ihtiyacım var.
Mike

Yanıtlar:


3

Büyük cevap slarek. Çok benzer bir şey yaptık. İndex.php dosyasını düzenlemek yerine, magento'nun kod tabanının dışında ayrı klasörler kurarız ve bu klasörlerden mage.php'yi ekleriz ve sonra yukarıdaki yönteminizde olduğu gibi etc_dir (ve diğer dizinleri) düzenleriz.

klasör yapısı:

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

İstemci klasörlerinin her birinin içinde:

  • /www/clientx/etc/local.xml (benzersiz veritabanı tanımlanmış ve benzersiz redis db ile)
  • / www / clientx / etc / modülleri (bu / www / magento / app / etc / modülleri için bir sym bağlantısıdır)
  • /www/clientx/index.php

/www/clientx/index.php adresinde

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

... (index.php'nin geri kalanı her zamanki gibi iştir) ...

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

Ayarladık

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

5

Bunun mümkün olduğunu düşünmüyorum. Magento, master / slave veritabanı yapılandırmasını destekler, ancak tüm mağazalar için bunlara sahip olmanız gerekir.
Mağazalar veritabanında tutulduğundan bu özel kodlama ile kolayca yapılabilir diye düşünmüyorum.

Bu yüzden mağaza görünümüne bağlı olarak hangi veritabanına bağlanacağınızı bilmeniz gerekir, ancak mağaza görünümünü bilmek için bir veritabanını sorgulamanız gerekir. Böylece daireler çiziyorsunuz.


3

Tek bir kod temeli kullanarak kendi veritabanlarına sahip birkaç ayrı mağazanız mı var?

Bunu yapmanın basit ve önerilen bir yolu yok. Ne yapılacağını görebileceğimiz söyleniyor:

Veritabanı bilgileri tek bir xml dosyasından gelir: app / etc / local.xml Bu dosya app / Mage.php dosyasından yüklenir, böylece bu dosyayı değiştirirseniz teorik olarak hangi yapılandırma dosyasını yükleyeceğinize karar verebilirsiniz (istenen alan adı gibi). Voila, farklı etki alanı, farklı veritabanı. Şimdi Kötü Haber Bölümü (tm) geliyor.

  1. Çekirdek kodun üzerine yazıyorsunuz ve buna "tanrı sınıfı" diyorsunuz. Bu Magento dünyasında ÇOK KÖTÜ bir uygulama olarak kabul edilir! Her yükseltme işleminizde değişikliklerin üzerine yazılır.
  2. İçerik çakışıyor. Tüm içeriğiniz veritabanında depolanmaz, medya klasörü de vardır ve bir geçici çözüm bulmanız (örneğin veritabanına dayalı özel yollar) veya hem görüntüleri hem de oturumları veritabanında (daha önce saklamanız) gereken oturum klasörü (var / session) vardır. soruyorsun: evet, bu mümkün).
  3. Önbellek. Kesinlikle farklı mağazalar paylaşım önbellek klasörü (var / cache) istemiyorum. Neyse ki, dosyaları bu klasöre depolamak yerine memcached gibi harici önbellekleri kullanmak mümkündür. Yine de önbellek kimliklerinizin çakışmayacağından emin olmalısınız, çünkü eğer öyleyse, incinme dünyasında olacaksınız.
  4. Derlemeyi kullanamazsınız (özellik yine de kullanımdan kaldırılmıştır).
  5. Belki de unuttuğum başka bir şey. Kimse?

2

Ben sadece bu uzantıyı buldum:
https://github.com/steverobbins/Magento-Multi_Client

Magento Multi Client
Birden fazla istemciyi aynı Magento kod tabanında barındırın.

Her istemcinin kendi local.xml ve etc / modules.xml dosyaları vardır. Bu, istemci başına ayrı veritabanları ve önbellek hizmetleri belirtmenize ve ayrıca istendiği gibi modülleri etkinleştirmenize / devre dışı bırakmanıza olanak tanır.

Her istemci bağımsızlığını korur ancak bir kod tabanını paylaşır.

Bu, Magento web sitelerini barındırmak için bir Magento Go-esque yaklaşımı olarak düşünülebilir.


2

Yapılandırma dosyalarını içeren yeni bir klasör oluşturmanız yeterlidir ve index.php'de Mage :: Run () öğesine bir dizi seçenek eklersiniz.

Bu klasörde, modüller klasörü dahil olmak üzere app / etc / ile aynı içeriğe sahip olacaksınız.

İlk alan adı:

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

İkinci alan adı:

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

bu Magento'ya etki alanı için yapılandırma dosyalarının nerede olduğunu söyleyecektir.


1

Ana hedefiniz nedir? Farklı yönetici alanı veya kaynak kodunuzun daha kolay kullanımı?

Bunu "yerel" dizinler ve dosyalar ve bağlantılı (ln -s) ortak dizinler ve dosyaların bir karışımı ile yapardı

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

Yaygın

  • Uygulamanın /
  • js /
  • lib /
  • ...

"yerel"

  • / Var /
  • index.php
  • .htaccess
  • Uygulama / etc / local.xml

Ama biraz kafa karıştırıcı olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.