क्या हम कई डेटाबेस, डोमेन और सामग्री निर्देशिकाओं के लिए एक वर्डप्रेस इंस्टॉलेशन का उपयोग कर सकते हैं


10

मैंने कुछ प्रश्न देखे हैं जो समान दिखते हैं, लेकिन वे सभी मल्टीसाइट के साथ समाप्त हो गए । स्थिरता, प्रदर्शन और सुरक्षा के लिए, मैं मल्टीसाइट का उपयोग नहीं करना चाहता। तो कृपया धीरज रखें।

यही मैं सोच रहा हूँ:

.
|_____branch1 // for branch1.domain.com
|  |_____themes
|  |_____plugins
|
|_____branch2 // for branch2.domain.com
|  |_____themes
|  |_____plugins
|
|_____branch3 // for branch3.domain.com
|  |_____themes
|  |_____plugins
|
|_____index.php
|_____WordPress
|_____wp-config.php

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

लेकिन क्या यह संभव है? यदि आपने पहले भी यही समस्या अनुभव की है, तो कृपया अपने विचार साझा करें! तुम्हारी मदद के लिए शुक्रिया।


1
एक संभावना के रूप में मल्टीसाइट को समाप्त क्यों किया गया था? ऐसा करने से एक नाजुक प्रणाली का निर्माण होगा, जो मल्टीसाइट की तुलना में कम रखरखाव योग्य होगा, जिसमें मल्टीसाइट की तुलना में धीमा प्रदर्शन होगा, और मल्टीसाइट की तुलना में बदतर सुरक्षा होगी। वर्डप्रेस का सबसे बड़ा इंस्टॉल किए जाने की कुछ एकाधिक इंस्टॉल किए जाने हैं, और यह सब एक ही कोड है कि एक मानक एकल साइट पर रन
टॉम जम्मू नॉवेल

मैं 500 से अधिक उप-साइटों वाले एक सहित कई WP मल्टीसाइट्स का प्रबंधन करता हूं। प्रदर्शन समान होगा कि क्या आप एक मल्टीसिट या 500 WP उदाहरणों का उपयोग करते हैं जब तक कि आपके पास अलग-अलग वीएम और डेटाबेस पर 500 इंस्टेंसेस न हों। मल्टीसिट के साथ रखरखाव बेकार है? 500 एकल साइटों को बनाए रखने का प्रयास करें।
user42826

@TomJNowell मुझे यकीन नहीं है कि अगर यह सबसे बड़ा केवल एक डेटाबेस का उपयोग करके स्थापित होता है, लेकिन मुझे लगता है कि यह और यह वीडियो हमें एक ही पृष्ठ पर ला सकता है। हम मुख्य रूप से सीआरएम के लिए वर्डप्रेस का उपयोग कर रहे हैं और उपयोगकर्ता की गोपनीयता बहुत महत्वपूर्ण है।
साराकोडिंग

@ user42826 वर्तमान में, मेरी कंपनी के पास इतनी साइटें नहीं हैं। मैं वर्तमान साइट को मल्टीसाइट में भी नहीं बदल सकता और इसे बेंचमार्क कर सकता हूं। और हार्डवेयर और अन्य चीजें आपसे अलग हो सकती हैं। इसलिए मैं सिर्फ अपने मामले में एक इष्टतम स्थापना वास्तुकला के बारे में पूछना चाहता हूं। जहाँ तक मुझे पता है, मल्टीसाइट सबडोमेन के साथ काम करता है, लेकिन यह विभिन्न डोमेन के लिए काम नहीं कर सकता है।
साराकोडिंग

मल्टीसाइट विभिन्न डोमेन के साथ काम करता है। हम एक मुख्य डोमेन, * .domain.com, और कुछ अन्य डोमेन, www.domain2.com और www.domain3.com का उपयोग करते हैं। हम मल्टी डोमेन को पूरा करने के लिए WP डोमेन मैपिंग प्लगइन का उपयोग करते हैं, लेकिन जो मैंने सुना है WP कोर अब मूल रूप से मल्टीडोमेन मैपिंग का समर्थन करता है।
user42826

जवाबों:


10

जैसा कि @ tom-j-nowell ने ओपी को टिप्पणी में कहा, मल्टीसाइट इसे आसान बना सकता है।

प्रदर्शन और सुरक्षा वास्तव में मल्टीसाइट के लिए एक समस्या नहीं है (कम से कम, वे नियमित प्रतिष्ठानों के लिए अधिक नहीं हैं), लेकिन मैं सहमत हूं कि मल्टीसाइट कभी-कभी एक समस्या हो सकती है, क्योंकि बहुत सारे प्लगइन्स (या तो कस्टम या 3 डी पार्टी) नहीं हो सकते हैं मल्टीसाइट पर ठीक से काम करें, या शायद इसलिए कि आप विभिन्न वेबसाइटों के उपयोगकर्ताओं को पूरी तरह से अलग रखना चाहते हैं।

कहा कि आप जो हासिल करना चाहते हैं, वह उतना कठिन नहीं है।

स्थापना के बीच आपको क्या बदलने की आवश्यकता है:

  • प्लगइन्स फ़ोल्डर
  • थीम फ़ोल्डर
  • डेटाबेस सेटिंग्स

उन कॉन्फ़िगरेशन को आपकी एकमात्र समस्या में स्थिरांकwp-config.php का उपयोग करके किया जा सकता है कि उन्हें URL के आधार पर कैसे स्विच किया जाए।

सर्वर वैरिएबल 'SERVER_NAME'आपके लिए काम करना चाहिए, कम से कम यदि आपका वेबसर्वर ठीक से कॉन्फ़िगर किया गया है।

उदाहरण के लिए आप फ़ाइल और फ़ोल्डर /confके समान स्तर पर एक फ़ोल्डर बना सकते हैं ।wp-config.php/WordPress

उस फ़ोल्डर में आप कुछ फाइलें जोड़ सकते हैं:

  • branch1.domain.com.conf
  • branch2.domain.com.conf
  • branch3.domain.com.conf

उनमें से प्रत्येक के अंदर आप कुछ ऐसा कर सकते हैं

$branch = 'branch1';
$base_dir = dirname( __DIR__) . "/{$branch}";

defined( 'WP_CONTENT_DIR' ) or define( 'WP_CONTENT_DIR', $base_dir );

// be sure WP understand URLs correctly
defined( 'DB_HOME' ) or define( 'DB_HOME', "{$branch}.example.com" );
defined('WP_SITEURL') or define('WP_SITEURL', "{$branch}.example.com/WordPress");

// adjust DB settings  as needed
defined( 'DB_NAME' ) or define( 'DB_NAME', $branch );
defined( 'DB_USER' ) or define( 'DB_USER', $branch );
defined( 'DB_PASSWORD' ) or define( 'DB_PASSWORD', '********' );

unset( $base_dir, $branch );

यह "शाखा" के अनुसार प्रत्येक कॉन्फ़िगरेशन फ़ाइल पर बदल जाएगा।

उसके बाद, अपने अद्वितीय में wp-config.phpआप ऐसा कुछ कर सकते हैं:

$defaults_conf = [
  'WP_CONTENT_DIR' => __DIR__ . '/branch1',
  'DB_HOST'        => 'localhost',
  'DB_NAME'        => 'branch1',
  'DB_USER'        => 'branch1',
  'DB_PASSWORD'    => '********',
];

$host = getenv('WORDPRESS_HOST') ?: $_SERVER['SERVER_NAME'];

if ($host && file_exists(__DIR__."/conf/{$host}.conf")) {
  require __DIR__."/conf/{$host}.conf";
}

array_walk($defaults_conf, function($value, $name) {
   defined($name) or define($name, $value);
});

unset($defaults_conf, $host);

ऊपर क्या होता है कि सर्वर नाम के आधार पर आप एक अलग कॉन्फ़िगरेशन फ़ाइल (यदि पाया गया) लोड करते हैं और यदि कॉन्फ़िगरेशन फ़ाइल डिफ़ॉल्ट कॉन्फ़िगरेशन में से किसी को परिभाषित नहीं करती है (या यदि फ़ाइल नहीं मिली है) तो कॉन्फ़िगरेशन डिफ़ॉल्ट रूप से सेट किया गया है।

अच्छी बात यह है कि एक नई शाखा जोड़ने के लिए, आपको बस शाखा फ़ोल्डर बनाने और .confनई शाखा डोमेन के नाम पर नाम प्रदान करने की आवश्यकता है , और आप कर रहे हैं, WP की ओर से बदलने के लिए कुछ भी नहीं है।

रेखा:

 $host = getenv('WORDPRESS_HOST') ?: $_SERVER['SERVER_NAME'];

वह जगह है जहाँ मुझे डोमेन नाम मिलता है। पहले विकल्प के रूप में, मैं एक पर्यावरण चर का उपयोग कर रहा हूं, क्योंकि संभावनाएं $_SERVER['SERVER_NAME']कमांड लाइन के संदर्भ में काम नहीं करेंगी, जैसे कि WP CLI का उपयोग करते समय। उन स्थितियों में आप WP को एक विशिष्ट शाखा से सेटिंग्स का उपयोग करने के लिए मजबूर करने के लिए एक पर्यावरण चर सेट कर सकते हैं।

ध्यान दें कि शाखा-विशिष्ट कॉन्फ़िगर फ़ाइलों में मैं बदल रहा हूँ WP_CONTENT_DIRऔर वह स्वचालित रूप से संबंधित /pluginsऔर /themesशाखा सबफ़ोल्डर में प्लगइन्स और थीम फ़ोल्डर सेट कर देगा ।

यहां एक संभावित मुद्दा यह है कि क्या आप /uploadsफ़ोल्डर साझा करना चाहते हैं (जहां फाइलें अपलोड होती हैं)।

डिफ़ॉल्ट रूप से वह फ़ोल्डर सामग्री dir का सबफ़ोल्डर है, इसलिए इसके ऊपर वर्कफ़्लो का उपयोग करना /uploadsप्रत्येक शाखा रूट फ़ोल्डर का सबफ़ोल्डर होगा ।

अगर वह आपके लिए कोई समस्या नहीं है, तो बस उसके साथ जाएं, अन्यथा सबसे आसान उपाय यह होगा कि /uploadsआप प्रत्येक शाखा फ़ोल्डर में वास्तविक अपलोड फ़ोल्डर जिसे आप साझा करना चाहते हैं, के लिए सहिष्णु हो ।


धन्यवाद! मैं वास्तव में आपके विचार को पसंद करता हूं भले ही $_SERVER['SERVER_NAME']विश्वसनीय न हो/uploadsdir समस्या नहीं है। मैंने WP CLI के साथ परीक्षण भी किया है, यदि हम --urlप्रत्येक साइट के लिए पैरामीटर में पास करते हैं, तो यह सामान्य रूप से काम करता है :)
SarahCoding

1
@Dan मैंने उत्तर में कहा: "सर्वर चर 'SERVER_NAME' को आपके लिए काम करना चाहिए, कम से कम यदि आपका वेबसर्वर ठीक से कॉन्फ़िगर किया गया है।" इसका मतलब है कि आपको अपने सर्वर को ठीक से कॉन्फ़िगर करने की आवश्यकता है :) वास्तव में, जब तक आप server_nameनॅनेक्स में या ServerNameअपाचे में सेटअप करते हैं या जो भी आपके वेब सर्वर पर फिट बैठता है, $_SERVER['SERVER_NAME']बस काम करेगा। भले ही WP CLI --urlपैरामीटर का उपयोग करके काम करता हो , अन्य कमांड लाइन उपकरण में समस्या हो सकती है यदि आप पर्यावरण चर का उपयोग नहीं करते हैं। WP CLI सीएलआई संदर्भ में अनुरोध के URL को "मॉक" करता है, अन्य कमांड शायद ऐसा नहीं करेंगे।
gmazzap

1
बेशक, मैं यह सुनिश्चित करूंगा कि SERVER_NAMEइसे ठीक से कॉन्फ़िगर किया गया है। Env vars के बारे में, मैंने इसे ठीक करने के लिए phpdotenv का उपयोग किया है। वर्तमान में, सब कुछ बहुत अच्छा लगता है :)
साराकोडिंग

0

यह सहानुभूति और थोड़ी योजना के साथ संभव है। मैंने उसी चीज के लिए नेट पर कुछ परिहास किया। अंत में, सभी सामान एक साथ रखें और इसे काम कर रहा है।

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

मैंने मास्टर-टीएनपी / थीम और मास्टर-टीएनपी / प्लगइन्स जैसी निर्देशिका बनाई है। उसके बाद ln -s कमांड का उपयोग करके अपने वर्डप्रेस डायरेक्टरी में सहानुभूति रखें।

सर्वर कॉन्फ़िगरेशन में भी नुकसान होते हैं। सुनिश्चित करने के लिए सहानुभूति निर्देश का पालन करना सुनिश्चित करें।

यदि आप एक एकल वर्डप्रेस इंस्टॉलेशन का उपयोग करना चाहते हैं, तो मैंने एक विस्तृत गाइड को एक साथ रखा है कि मैंने इसे https://vaish.co/multiple-sites-single-wordpress-directory पर कैसे किया

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