URL

2011-04-16 17 views
6

पर आधारित विभिन्न वातावरण (विकास, उत्पादन) सेट करना मैं URL पर आधारित ड्रूपल में वातावरण सेट अप करने का प्रयास कर रहा हूं। उदाहरण के लिए, यदि मैं mysite.local पर जाता हूं, तो यह स्थानीय डीबी का उपयोग करेगा और यह साइट का नाम "स्थानीय माइसाइट" में बदल देगा; अगर मैं mysite.com पर जाता हूं, तो यह स्वचालित रूप से उत्पादन डीबी का उपयोग करने के लिए स्विच हो जाएगा और नाम "माईसाइट" पर सेट करेगा।URL

यह एक समान सेटअप मैं सबसे MVC आधारित चौखटे के लिए उपयोग करते हैं:

define('DEVELOPMENT', 'mysite.local'); 
define('PRODUCTION', 'mysite.com'); 

switch ($_SERVER['SERVER_NAME']) { 
    case DEVELOPMENT: 
    // development server 
    $config['base_url'] = "http://mysite.local"; 
    $config['title'] = "DEVELOPMENT Mysite"; 
    $config['debug'] = 1; 
    break; 

    default: 
    // live server 
    $config['base_url'] = "http://mysite.com/"; 
    $config['title'] = "Mysite"; 
    $config['debug'] = 0; 
    break; 
} 

वहाँ कि Drupal7 में की तरह कुछ पहले से ही (मैं एक ही साइट के लिए विभिन्न साइटों, केवल दूसरी सेटिंग का उपयोग नहीं करना चाहती है), और क्या वहां कुछ प्रकार का सम्मेलन है जहां इस स्विच की आवश्यकता है (मैं वर्तमान में settings.php के बारे में सोच रहा हूं)।

+0

मेरा सुझाव है कि आपको http://drupal.stackexchange.com/questions/9/suggestions-for-settings-php-local-dev-development-server-live-server/41#41 पर विशेष रूप से देखें, विशेष रूप से मेरा वहां जवाब दो। – Berdir

उत्तर

4

व्यक्तिगत रूप से मैं सेटिंग्स नियंत्रण में सेटिंग्स.php नहीं करता, (settings.default.php है), फिर बस प्रत्येक वातावरण में settings.default.php के आधार पर एक कस्टम सेटिंग्स.php फ़ाइल रखें।

हालांकि, अगर आप अपने वातावरण को इस तरह से सेटअप करना पसंद करते हैं, तो ऐसा कुछ आपकी साइट/डिफ़ॉल्ट/सेटिंग्स.एफ़.पी. फ़ाइल में काम करेगा।

define('DEVELOPMENT', 'mysite.local'); 
define('PRODUCTION', 'mysite.com'); 

switch ($_SERVER['SERVER_NAME']) { 
    case DEVELOPMENT: 
    // development server 
    $db_url = 'mysql://user:[email protected]/mydb_dev'; 
    $db_prefix = ''; 
    $base_url = 'http://mysite.local'; 
    $conf = array(
    'site_name' => 'Development Environment', 
    ); 
    break; 

    default: 
    // live server 
    $db_url = 'mysql://user:[email protected]/mydb_prod'; 
    $db_prefix = ''; 
    $base_url = 'http://mysite.com'; 
    $conf = array(
    'site_name' => 'My Site', 
    ); 
    break; 
} 

याद रखें, इन वार्स तुम यहाँ का उपयोग से प्रत्येक के लिए, तुम बाहर टिप्पणी करने के लिए अगर वे settings.php के अन्य भागों में परिभाषित कर रहे हैं की जरूरत है।

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

हर पर्यावरण के लिए ड्रूपल की बहु-साइट कार्यक्षमता का उपयोग करके आपको विकसित करने और मंच पर, जैसा कि अन्य लोग यहां सुझाव दे रहे हैं, प्रबंधन के लिए पागल हो जाएंगे।

+0

शायद यही वह तरीका है जिसे मैं जाऊंगा। मुझे इसकी ज़रूरत है, इसलिए मैं फ़ाइलों को बदलने और हर चीज हर बार काम करने के बजाय, सीधे अपने एसवीएन से तैनात कर सकता हूं। जब मैं पर्यावरण में स्टेजिंग सर्वर जोड़ता हूं तो मामला और भी जटिल हो जाता है। –

+0

यह होने की अपेक्षा अधिक जटिल लगता है, लेकिन मुझे पता है कि प्रत्येक स्थिति अलग है। यदि आप एक ही समय में प्रत्येक वातावरण में settings.php (यानी सेटिंग्स.पीपी संस्करण नियंत्रण में नहीं हैं) में सेटिंग्स.default.php की प्रतिलिपि बनाने की विधि का उपयोग करते हैं, तो आपको अपनी सेटिंग्स फ़ाइलों के बाद से svn के माध्यम से तैनात करने में सक्षम होना चाहिए कभी छुआ नहीं मेरे लिए एक बार प्रत्येक सेटिंग्स.एफ़.पी. फ़ाइल को कॉन्फ़िगर करना एक ही सेटिंग्स.php फ़ाइल में उस डेटा को प्रबंधित करने से आसान और अधिक पोर्टेबल है। – Coder1

+0

ध्यान दें कि ड्रश $ _SERVER ['HTTP_HOST'] का उपयोग कर रहा है और $ _SERVER ['SERVER_NAME'] नहीं। – mperrin

0

मुझे लगता है कि अलग-अलग साइटों का उपयोग करना आप चाहते हैं। मेरे पास एक समान सेटअप है, और अलग-अलग साइटों में प्रत्येक की अपनी सेटिंग्स.एफ़.पी. फ़ाइल है। लेकिन फिर मैंने मॉड्यूल और थीम निर्देशिका को सिम्लिंक किया ताकि मेरे पास डुप्लिकेट फाइल न हों। लेकिन यदि आप विकास के लिए एक पर्यावरण स्थापित कर रहे हैं, तो आप उन्हें अलग रखना चाहते हैं।

drupal/sites/mysite.com/themes 
drupal/sites/mysite.com/modules 
drupal/sites/mysite.com/settings.php 

drupal/sites/mysite.local/themes => ../../mysite.com/themes 
drupal/sites/mysite.local/modules => ../../mysite.com/modules 
drupal/sites/mysite.local/settings.php 

drupal/sites/default => mysite.com 

Drupal URL के आधार पर सही साइट विन्यास का उपयोग करेगा:

तो मैं कुछ इस तरह की है।

+0

यह कुछ ऐसा है जो मैं चाहता हूं, लेकिन मैंने सोचा कि ड्रूपल में उनको सेट करने का एक बेहतर तरीका होना चाहिए, क्योंकि मैं सिम्लिंक (विंडोज़ देव मशीन) का उपयोग नहीं कर सकता, और जब वे आगे बढ़ते हैं तो वे लिंक गड़बड़ हो जाएंगे एक अलग मशीन मुझे लगता है कि संक्षिप्त जवाब यह होगा कि इस तरह की जगह में कुछ भी नहीं है, और या तो मुझे "बहु-साइट" के साथ जाना होगा और फाइलों, मॉड्यूल इत्यादि को दोहराना होगा, जिससे विखंडन हो जाएगा, या सेटिंग्स को संपादित किया जाएगा। PHP और इसे स्थापित करें जैसे कि यह ऊपर है ... –

1

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

आपको Run multiple sites from the same code base (multi-site) में जो भी बताया गया है, उसमें भी रुचि रखते हैं।

+0

धन्यवाद। मुझे ड्रूपल की "बहु-साइट" सुविधा के बारे में पता है, लेकिन इसका मतलब है कि हर पर्यावरण के लिए अलग-अलग फ़ोल्डर्स, मॉड्यूल, अपलोड इत्यादि। मैंने पहले इसका इस्तेमाल किया, लेकिन मुझे कुछ अलग चाहिए। मैं एक ही साइट के लिए अलग-अलग वातावरण सेट करने में सक्षम होना चाहता हूं (साइट के लिए फ़ोल्डर हमेशा "डिफ़ॉल्ट" होता है, लेकिन नाम, डेटाबेस और कुछ अन्य सेटिंग्स यूआरएल के आधार पर सेट की जाएंगी)। दूसरे शब्दों में, मैं इसे अपने स्थानीय बॉक्स पर तैनात करता हूं, डीबी स्वचालित रूप से मेरे स्थानीय डीबी आदि पर स्विच हो जाएगा –