2010-08-19 10 views
6

हमारे पास PHP सिम्फनी फ्रेमवर्क में विकसित एक उत्पाद है। हमारे पास अभी कुछ ग्राहक हैं जिनके लिए हम अलग-अलग कोड आधार और डेटाबेस (MySQL) बनाए रखते हैं।एकाधिक डोमेन के लिए सिम्फनी प्रोजेक्ट कॉन्फ़िगर करें

वे client1.myproduct.com और client2.myproduct.com की तरह अपने-अपने कोड उपडोमेन का उपयोग कर बेस तक पहुंचने के

अब हम दोनों ग्राहकों के लिए एक एकल कोड बेस बनाने के लिए और केवल में फ़ाइलों को जो अलग हैं रखने के (चाहते हैं तर्क की शर्तें) उनमें से दोनों अलग-अलग सबडोमेन में हैं।

तो दोनों उप डोमेन एक ही कोड बेस को इंगित करेंगे लेकिन जब भी आवश्यक अर्थात जब भी तर्क दोनों ग्राहकों के लिए कुछ सुविधा के लिए अलग है उनके संबंधित उप-डोमेन की फ़ाइलों तक पहुंच पाएंगे।

क्या कोई सुझाव दे सकता है कि इस बारे में जाने का सबसे अच्छा तरीका क्या है?

उत्तर

4

साइटें:।। [foo.com, बार .co.uk, www.mike.es]

// index.php 
require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php'); 

// get the domain 
$domain = $_SERVER['SERVER_NAME']; 

// get rid of www, com, es etc ... 
foreach(array('www.', '.com', '.es', '.co.uk') as $crap) { 
    $domain = str_replace($crap, '', $domain); 
} 
$confs = array(
    'foo' => 'somefoo', 
    'bar' => 'somebar', 
    'waz' => 'andwazconfig' 
); 
$cfg = (!empty($confs[$domain])) 
    ? $confs[$domain] 
    : 'default'; 

$configuration = ProjectConfiguration::getApplicationConfiguration($cfg, 'prod', false); 

sfContext::createInstance($configuration)->dispatch(); 

// End of index.php 

आशा इस

+0

महान मदद करता है, मैं भी इस तरह कॉन्फ़िगरेशन का उपयोग करने में सोच रहा था और तुम सिर्फ मेरे लिए यह पुष्टि की है। मुझे प्यार है कि यह दृष्टिकोण प्रत्येक ऐप को यह सोचने देता है कि यह केवल एकमात्र ऐसा है जब इसे प्रति साइट पूरी तरह कॉन्फ़िगर करने योग्य बनाता है। – Ryall

2

हाँ आप ऐसा कर सकते हैं। सिम्फनी रूटिंग इस उपयोग-मामले को संभाल सकता है, लेकिन यह करने के लिए आसान कार्यों में से एक नहीं है। विस्तृत विवरण के लिए सिम्फनी-डॉक्यूमेंटेशन पर एक नज़र डालें: http://www.symfony-project.org/more-with-symfony/1_4/en/02-Advanced-Routing

0

मैंने sfDomainRoutePlugin का उपयोग करते हुए सिम्फनी here में गतिशील सबडोमेन के उपयोग का वर्णन किया है।

हालांकि, आपको एक ही ऐप में एकाधिक क्लाइंट का समर्थन करने के लिए अपने मौजूदा एप्लिकेशन तर्क को फिर से लिखना होगा, और आपको दो पुराने डेटाबेस भी मर्ज करना होगा।

0

मैंने उसी जानकारी का अनुरोध किया और माइक और fabien के जवाब प्राप्त करने का मौका मिला।

एक उप डोमेन के साथ तर्क के लिए:: http://trac.symfony-project.org/wiki/HowToDoMultipleSitesWithSingleCore

एकाधिक साइटें समान विन्यास के आधार पर यह एक अजीब विषय हो सकता है, लेकिन मैं उप डोमेन में हमारी एक्सेस, SSL का उपयोग के साथ सब कॉन्फ़िगर करने के लिए चाहता था यहाँ विवरण हैं। हमें विभिन्न साइटों की आवश्यकता थी क्योंकि एसएसएल आईपी आधारित वर्चुअल डोमेन को मजबूर करता है, जिसका मतलब हमारे लिए अलग-अलग दस्तावेज़ जड़ों का था। जैसे:

• www.mydomain.com • admin.mydomain.com • parents.mydomain.com हालांकि, इन सब थे एक ही कोर स्कीमा और प्लग इन के साथ साइटों। इस विन्यास का लाभ है:

साझा मॉडल फ़ाइलें •: सभी XxxPeer वर्गों में अनुप्रयोगों नुकसान लिंक कर दिया जाएगा:

• आप अब 2-एन अलग कैश है/लॉग नजर रखने के लिए।

आम निर्देशिकाएँ •: आप एक विशिष्ट Symfony निर्देशिका संरचना को देखें, तो यह दो प्रकार समूहों को तोड़ा जा सकता है ◦batch ◦config ◦data ◦doc ◦lib ◦plugins ◦test • एप्लिकेशन विशिष्ट निर्देशिकाएँ: ◦apps ◦cache ◦log ◦web ये कदम उठाएँ मैं हुए थे:

• विकास www.yourdomain.com अनुसूचित जाति हेमा और साइट। एक बार यह एक साथ आने शुरू हो गया है, तो आप अतिरिक्त साइटों को विकसित करना शुरू कर सकते हैं। • नई साइट में, प्रतीकात्मक कड़ी आम निर्देशिकाएँ • नई साइट में, एप्लिकेशन विशिष्ट निर्देशिकाएँ ◦NOTE बनाएँ: वेब निर्देशिका में, आप मूल सामग्री (सीएसएस, जे एस, और से कुछ कॉपी करने के लिए आवश्यकता हो सकती है। htaccess फाइलों को ध्यान में आता है)। जब आप नई साइट लाने शुरू करते हैं तो इसे अपने दिमाग के पीछे रखें। • आदेश चलाएं सिम्फोनी ठीक-perms ◦NOTE: मेरे लिए, Virtualmin नए उपयोगकर्ता नाम के साथ इन नई साइटें पैदा करता है। आपको बीमा करना होगा कि सभी एप्लिकेशन विशिष्ट निर्देशिकाएं उस उपयोगकर्ता नाम के स्वामित्व में हैं, इसलिए आपके स्पष्ट-कैश कमांड और लॉगिंग कमांड काम करते हैं। • अब, आपके पास एक प्रोजेक्ट कॉन्फ़िगर किया गया है। आप ऐसा करके शुरू: ◦symfony एप्लिकेशन MyApp ◦symfony मॉड्यूल MyApp MYMODULE ◦ ... • अब आप पाएंगे कि आपकी ऐप्लिकेशन/MyApp/मॉड्यूल/MYMODULE बना दिया गया है, और आप पूरे डेटाबेस के लिए पूर्ण सहकर्मी उपयोग कर सकते है

यहाँ Fabien अलग डोमेन नाम के साथ एक तर्क के बारे में है: client1.com client2.com ही एप्लिकेशन का उपयोग कर।

विभिन्न डोमेन के साथ एक तर्क के लिए: "आप उन्हें एक ही फ्रंट कंट्रोलर पर इंगित कर सकते हैं, और उसके बाद साइट टेम्पलेट इत्यादि जैसे चीजों को करने के लिए फ़िल्टर या एक्शन पैरेंट क्लास का उपयोग कर सकते हैं। हालांकि, फ्रंट कंट्रोलर रखना प्रति डोमेन अधिक कुशल हो सकता है, और यह जाने का एक बिल्कुल अच्छा तरीका है।

प्रत्येक डोमेन का अपना आवेदन हो सकता है, लेकिन तर्क का बड़ा हिस्सा प्लगइन में लागू किया जाना चाहिए, इसलिए उन्हें प्रत्येक डोमेन/ऐप के लिए सक्षम किया जा सकता है है कि उन्हें जरूरत है, और साझा के रूप में आवश्यक कितना कोड आवेदन प्रति की आवश्यकता है निर्भर करता, मुझे लगता है, कि कैसे विभिन्न साइटों वास्तव में कर रहे पर "

संबंधित मुद्दे