एकाधिक डेटाबेस के साथ एकल इंस्टालेशन


11

क्या एक स्थापना करना संभव है, और इस स्थापना से विभिन्न डेटाबेस के साथ कई दुकानें बनाने के लिए?

कुछ ऐसा है कि मैं एक डेटाबेस के साथ domain.1 पर एक इंस्टॉलेशन बनाऊंगा , और एडमिन से मैं एक नई वेबसाइट और डोमेन के लिए कुछ नए डेटाबेस पर एक स्टोर बनाऊंगा

मुझे पता है कि एक डेटाबेस से कई स्टोर हासिल किए जा सकते हैं। लेकिन क्या यह अलग-अलग डेटाबेस के साथ समान हो सकता है।


क्या आप बता सकते हैं कि आपको 2 डेटाबेस की आवश्यकता क्यों है? क्या यह एक मास्टर / दास विन्यास है या सिर्फ 2 अलग डेटाबेस होना चाहते हैं?
मारियस

मैं सिर्फ 2 अलग-अलग डेटाबेस रखना चाहता हूं। मुझे एक इंस्टालेशन लेकिन अलग डेटाबेस के साथ दो अलग-अलग स्टोर चाहिए।
माइक

जवाबों:


3

शानदार जवाब। हमने कुछ ऐसा ही किया। Index.php के संपादन के बजाय हम अलग-अलग फ़ोल्डरों को magento के कोडबेस से बाहर सेटअप करते हैं, और उन फ़ोल्डरों से mage.php को शामिल करते हैं, और फिर आपकी विधि की तरह etc_dir (और अन्य dirs) को संपादित करते हैं।

फ़ोल्डर संरचना:

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

क्लाइंट फ़ोल्डर में से प्रत्येक के अंदर हैं:

  • /www/clientx/etc/local.xml (अद्वितीय डेटाबेस के साथ परिभाषित, और अद्वितीय रेडिस डीबी)
  • / www / clientx / etc / मॉड्यूल (यह / www / magento / app / etc / मॉड्यूल के लिए एक कड़ी है)
  • /www/clientx/index.php

in /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 फ़ाइल से आती है: एप्लिकेशन / etc / local.xml इस फ़ाइल को ऐप / Mage.php से लोड किया जा रहा है, इसलिए यदि आप उस फ़ाइल को बदलते हैं, तो आप सैद्धांतिक रूप से निर्णय ले सकते हैं कि आप कौन सी कॉन्फ़िगरेशन फ़ाइल लोड करने जा रहे हैं (वांछित के आधार पर) हालत, जैसे कि डोमेन नाम)। वोइला, अलग डोमेन, अलग डेटाबेस। अब बैड न्यूज पार्ट (tm) आता है।

  1. आप कोर कोड को ओवरराइट कर रहे हैं और उस पर "देव वर्ग" कहा जाता है। यह Magento दुनिया में एक बहुत बुरा अभ्यास माना जाता है! हर बार जब आप अपने बदलावों को अपग्रेड करेंगे, ओवरराइट कर दिया जाएगा।
  2. सामग्री ओवरलैपिंग। डेटाबेस में आपकी सभी सामग्री संग्रहीत नहीं है, वहां मीडिया फ़ोल्डर भी है और सत्र फ़ोल्डर (var / session) है जिसे आपको या तो डेटाबेस के लिए वर्कअराउंड (उदाहरण के लिए डेटाबेस पर आधारित कस्टम पथ) या स्टोर करने की आवश्यकता है आप पूछते हैं: हाँ, यह संभव है)।
  3. कैश। आप निश्चित रूप से नहीं चाहते हैं कि आप विभिन्न स्टोर कैश फ़ोल्डर (var / cache) साझा करें। सौभाग्य से बाहरी कैश का उपयोग करना संभव है, जैसे कि उस फ़ोल्डर में फ़ाइलों को संग्रहीत करने के बजाय मेमकाटेड। फिर भी आपको यह सुनिश्चित करना होगा कि आपका कैश आईडी ओवरलैप नहीं होगा, क्योंकि यदि वे ऐसा करते हैं, तो आप चोट की दुनिया में जाने वाले हैं।
  4. आप संकलन का उपयोग नहीं कर सकते (सुविधा वैसे भी अपदस्थ है)।
  5. शायद कुछ और मैं भूल रहा हूँ। किसी को?

2

मुझे यह एक्सटेंशन मिला:
https://github.com/steverobbins/Magento-Multi_Client

Magento मल्टी क्लाइंट
एक ही Magento कोड बेस पर कई क्लाइंट होस्ट करता है।

प्रत्येक ग्राहक के पास अपना स्वयं का स्थानीय.एक्सएमएल और आदि / मॉड्यूल.एक्सएमएल होता है। यह आपको प्रति ग्राहक अलग डेटाबेस और कैशिंग सेवाओं को निर्दिष्ट करने की अनुमति देता है, साथ ही अनुरोध के अनुसार मॉड्यूल को सक्षम / अक्षम करता है।

प्रत्येक ग्राहक अपना स्वतंत्र रखरखाव करता है लेकिन एक कोड आधार साझा करता है।

इसे Magento की वेबसाइटों की मेजबानी के लिए एक Magento Go-esque दृष्टिकोण माना जा सकता है।


2

आपको कॉन्फ़िगरेशन फ़ाइलों को शामिल करने के लिए एक नया फ़ोल्डर बनाने की आवश्यकता है और index.php में आप Mage :: Run () में विकल्पों की एक सरणी जोड़ते हैं।

उस फ़ोल्डर में आपके पास एप्लिकेशन / etc / मॉड्यूल फ़ोल्डर सहित सभी समान सामग्री होगी।

पहला डोमेन:

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

दूसरा डोमेन:

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

यह मैगेंटो को बताएगा कि डोमेन के लिए कॉन्फिग फाइल कहां है।


1

आपका मुख्य लक्ष्य क्या है? अलग-अलग व्यवस्थापक क्षेत्र या अपने स्रोत कोड की आसान हैंडलिंग?

मैं इसे "स्थानीय" निर्देशिकाओं और फ़ाइलों और लिंक (ln -s) सामान्य निर्देशिकाओं और फ़ाइलों के मिश्रण के साथ करूँगा

/ www / आम / www / shop1 / www / shop2

सामान्य

  • एप्लिकेशन /
  • जे एस /
  • lib /
  • ...

"स्थानीय"

  • / Var /
  • index.php
  • .htaccess
  • एप्लिकेशन / etc / local.xml

लेकिन थोड़ा भ्रमित हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.