Manual:विकि परिवार
A wiki family is a collection of two or more wikis that run on the same server and share a common set of resources from the parent installation, while each wiki remains otherwise independent. This setup is an alternative to running fully separate installations of MediaWiki. It may be the preferred choice if the site admin wants to reduce the amount of work involved in managing multiple wikis, or cut down on inode usage. For this reason, some wiki hosting services opt for the wiki family model.
The best known implementation of a wiki family is the wiki farm, although other approaches are possible. A list of known wiki farms is available on WikiApiary.
नीचे मीडियाविकि की मदद से एक से ज़्यादा विकियाँ होस्ट करने की विधि दी गई है।
तरीके
विकि फ़ार्म
ये चरण, मीडियाविकि के एक ही संस्करण पर चल रहे कई विकियों के लिए हैं:
- पहला विकि साधारण तरीके से स्थापित करें। विस्तार के लिए Manual:Installation guide देखें।
- Ensure your future wikis can reach the same web server and MediaWiki install. When using (sub)domains, have your web server accept connections for all virtual hosts (e.g. in Apache or nginx). If you use Quickstart and localhost, this requires no changes. When using subdirectories, you could use rewrite rules, aliases, or symlinks.
- वर्तमान विकि का पता लगाने के लिए कोड को
LocalSettings.phpके ऊपर जोड़ें। Note that MediaWiki automatically parses the--wikiargument to support an optional hyphen, where the first half is assigned toMW_DBand an optional second half toMW_PREFIX. Example for when you use domain names:// Wiki family // https://www.mediawiki.org/wiki/Manual:Wiki_family $wikis = [ 'central.localhost:4000' => 'centralwiki', 'foo.localhost:4000' => 'foowiki', 'bar.localhost:4000' => 'barwiki', ]; $wgLocalDatabases = $wgConf->wikis = array_values( $wikis ); if ( defined( 'MW_DB' ) ) { // अनुरक्षण स्क्रिप्ट्स के लिए --wiki विकल्प से अपने आप सेट किया जाता है $wgDBname = MW_DB; } else { // MW_DB पर्यावरण वेरिएबल का इस्तेमाल करता है या डोमेन के नाम का मानचित्रण करता है $wgDBname = $_SERVER['MW_DB'] ?? $wikis[ $_SERVER['HTTP_HOST'] ?? '' ] ?? null; if ( !$wgDBname ) { die( 'Unknown wiki.' ); } }
- उन सेटिंग्स को कॉन्फ़िगर करें जो सभी विकियों के लिए अलग होंगे। जैसे:
$wgCacheDirectory = "/tmp/mediawiki_cache/$wgDBname"; $wgUploadDirectory = "$IP/images/$wgDBname"; $wgUploadPath = "/w/images/$wgDBname";
- हर विकि के अनुसार ओवर्राइड्स कॉन्फ़िगर करें। इसमें कम-से-कम एक $1 और $2 होना चाहिए। This should include at least
$wgServerand$wgArticlePath.इसे एक दूसरे फ़ाइल से किया जा सकता है, जैसे:$wgConf->settings = [ 'wgServer' => [ 'centralwiki' => 'http://central.localhost:4000', 'foowiki' => 'http://foo.localhost:4000', 'barwiki' => 'http://bar.localhost:4000', ], 'wgArticlePath' => [ 'default' => '/index.php/$1', // 'default' => '/wiki/$1', ], 'wgSitename' => [ 'default' => $wgDBname, // 'foowiki' => 'Foo', ], 'wgLogo' => [ // 'foowiki' => '/images/foowiki/Logo.png', ], 'wgLanguageCode' => [ // 'foowiki' => 'pt', ], ]; extract( $wgConf->getAll( $wgDBname ) );
# LocalSettings.php $wgConf->settings = require __DIR__ . '/LocalSettings_overrides.php'; # LocalSettings_overrides.php <?php return [ 'wgServer' => .., .., ];
To add a new wiki to the family:
- Create an empty database for the wiki, and then configure the wiki in LocalSettings.php (at least the
$wikismap and a key underwgServerin$wgConf). Then use the web installer to install the database. Settings you specify here will not be saved and you can discard the LocalSettings.php file it generates. Avoid usinginstall.phpfrom the command line to install the database, because that either refuses to start or overwrites your LocalSettings.php file. - Run
php maintenance/run.php update --wiki=mywiki
अलग सेटिंग्स फ़ाइलें
यह विधि बिलकुल ही स्वतंत्र विकियों के लिए है, जो एक ही वेब सर्वर और मीडियाविकि स्रोत कोड का इस्तेमाल करते हैं।
- पहला विकि साधारण तरीके से स्थापित करें, वेब या फिर CLI इंस्टॉलर की मदद से, जो आपका डेटाबेस सेट अप करके एक LocalSettings.php फ़ाइल बनाता है।
- स्थापना के बाद बनाए गए
LocalSettings.phpफ़ाइल का नाम बदलकर विकि का ID (जैसे डेटाबेस का नाम) जोड़ें,LocalSettings_mywiki.phpकी तरह। - हर विकि के लिए पहले और दूसरे चरण को दोहराएँ।
- एक नया
LocalSettings.phpफ़ाइल बनाएँ जो सही फ़ाइल को लोड करेगा। As with the above wiki farm example, a--wikiargument containing a hyphen will be split on the hyphen into two values assigned toMW_DBandMW_PREFIX, respectively.अगर आपके विकियाँ एक ही डोमेन पर हैं मगर अलग-अलग पथों पर (जैसे<?php $wikis = [ 'example.org' => 'examplewiki', 'one.example.org' => 'onewiki', ]; if ( defined( 'MW_DB' ) ) { // अनुरक्षण स्क्रिप्ट्स के लिए --wiki विकल्प से अपने आप सेट किया जाता है $wikiID = MW_DB; } else { // MW_DB पर्यावरण वेरिएबल का इस्तेमाल करता है या डोमेन के नाम का मानचित्रण करता है $wikiID = $_SERVER['MW_DB'] ?? $wikis[ $_SERVER['SERVER_NAME'] ?? '' ] ?? null; } if ( $wikiID ) { require_once "LocalSettings_$wikiID.php"; } else { die( 'Unknown wiki.' ); } // इस पंक्ति के नीचे वो सारी सेटिंग्स जोड़ें जो सभी विकियों पर लागू होनी चाहिए // -------
example.org/wiki1,example.org/wiki2, आदि), आप कुछ ऐसा इंतज़ाम कर सकते हैं:<?php $wikis = [ 'example' => 'examplewiki', 'w_example' => 'examplewiki', 'one' => 'onewiki', 'w_one' => 'onewiki', ]; if ( defined( 'MW_DB' ) ) { // अनुरक्षण स्क्रिप्ट्स के लिए --wiki विकल्प से अपने आप सेट किया जाता है $wikiID = MW_DB; } else { $wikiID = $_SERVER['MW_DB'] ?? $wikis[ explode( '/', $_SERVER['REQUEST_URI'], 3 )[1] ] ?? null; } if ( $wikiID ) { require_once "LocalSettings_$wikiID.php"; } else { die( 'Unknown wiki.' ); }
$wgArticlePath और $wgScriptPath, दोनों जोड़ने होंगे।
Drupal जैसे साइट्स
इस सेटअप का फ़ायदा यह है कि यह सदस्यों से पूरी तरह से पारदर्शी है, और साथ में चित्र के डिरेक्ट्री को सुरक्षित भी रखता है।
- अपने सभी मीडियाविकि फ़ाइलों को रखने के लिए एक जड़ डिरेक्ट्री बनाएँ, जैसे
mkdir /home/web/mediawiki। - एक संस्करण-घोषक सबडिरेक्ट्री (जैसे
/home/web/mediawiki/mediawiki-1.10.0) में मीडियाविकि और अतिरिक्त उपकरण स्थापित करें। - संस्करण-घोषक डिरेक्ट्री को एक कोड डिरेक्ट्री से जोड़ें। जैसे
ln -s /home/web/mediawiki/mediawiki-1.10.0 /home/web/mediawiki/code - अपने चित्रों और सेटिंग्स के लिए एक sites डिरेक्ट्री बनाएँ:
mkdir /home/web/mediawiki/sites - /code डिरेक्ट्री से साधारण तरीके से विकि को स्थापित करें
- स्थापित कर लेने के बाद
LocalSettings.phpको एक sites डिरेक्ट्री में लेकर जाएँ जो साइट को चेक करने पर मेल खाएगा। उदाहरणस्वरूप, http://example.com/mywiki को कैप्चर करने के लिए डिरेक्ट्री का नाम example.com.mywiki रखना पड़ेगा। जैसेmkdir /home/web/mediawiki/sites/example.com.mywiki। इस बारे में अधिक जानकारी के लिए Drupal काsettings.phpफ़ाइल देखें। - अगर आप मीडिया फ़ाइलों का इस्तेमाल करना चाहते हैं, अपने साइट के डिरेक्ट्री में एक images डिरेक्ट्री बनाएँ। जैसे
mkdir /home/web/mediawiki/sites/example.com.wiki/images। इसे आवश्यकतानुसार लेखनीय बनाएँ। - Drupal जैसा
LocalSettings.phpफ़ाइल अपने मुख्य डिरेक्ट्री में जोड़ें:cp DrupalLocalSettings.php /home/web/mediawiki/code/LocalSettings.php - हर सबसाइटों का
LocalSettings.phpबदलकर सही स्थानों की ओर इशारा करें:- पहले
$IPसे संबंधित कोड को टिप्पणी में बदलें (1.15.3 में पंक्ति 16 से 20) क्योंकि इसेindex.phpद्वारा code पर सेट किया जाता है। - फिर इन दोनों पंक्तियों को बदलें और सुनिश्चित करें कि फ़ाइलों तक पहुँचा जा सकता है, जैसे
$wgUploadDirectory = "/home/web/mediawiki/sites/wiki.example.com/images";और$wgUploadPath = "/images";। इन्हेंDefaultSettings.phpके कॉल के बाद कहीं जोड़ना होगा (1.15.3 में पंक्ति 25 पर), वरना वेरिएबलों को रीसेट कर दिया जाएगा। - आवश्यकतानुसार अधिक बदलाव करें।
- पहले
- अपनी Apache 2 स्थापना को तैयार करें। उदाहरण साइट: wiki.example.com
- code डिरेक्ट्री की एक कड़ी बनाएँ, अगर ज़रूरत पड़े। जैसे
ln -s /home/web/mediawiki/code /home/web/wiki.example.com - उचित VHost कॉन्फ़िगरेशन बनाएँ:
<VirtualHost *:80> ServerAdmin me@example.com DocumentRoot /home/web/wiki.example.com ServerName wiki.example.com CustomLog /var/log/apache2/wiki.mysite.log common # साइट तक पहुँच प्रदान करता है Alias /mediawiki/code /home/web/mediawiki/code # विकि के लिए उपनाम ताकि चित्र काम करे Alias /images /home/web/mediawiki/sites/wiki.example.com/images # अगर आप अपने साइट को पासवर्ड से सुरक्षित करना चाहते हैं # <Directory /home/web/wiki.example.com> # AuthType Basic # AuthName "Mera surakshit wiki" # AuthUserFile /etc/apache2/htpasswd/users-mywiki # require valid-user # </Directory> </VirtualHost>
- code डिरेक्ट्री की एक कड़ी बनाएँ, अगर ज़रूरत पड़े। जैसे
- 11. अगर आप साइटों को लोकल रूप से सेटअप कर रहे हैं, अपने
hostsफ़ाइल को साइटों के नामों के साथ अपडेट करें। साइट अब काम करने लगेगा।
मेरे मामले में, मैंने उस कोड की एक प्रतिलिपि बना ली थी जिससे स्थापित करना है, और मेरे LocalSettings.php और डेटाबेसों को अपडेट कर लिया था।
ध्यान रखें कि साथी Drupal कोड में $_SERVER['HTTP_HOST'], कमांड पंक्ति से अनुरक्षण स्क्रिप्ट्स चलाते समय अपरिभाषित होता है, तो इस समाधान से बिना किसी बदलाव किए अनुरक्षण स्क्रिप्ट्स को चलाना संभव नहीं हो जाता है।
Ubuntu के लिए परिवर्तित Drupal जैसा तरीका
Ubuntu/Kubuntu पर कई विकियों और कई (या नेस्टेड) उपविकियों के लिए एक सरलीकृत तरीका जो ऊपर की विधि पर आधारित है, यहाँ पर पाया जा सकता है:
How wiki farms are handled in maintenance scripts
मीडियाविकि के अनुरक्षण स्क्रिप्ट्स (जैसे update.php) एक --wiki तर्क स्वीकार करते हैं जो आपके LocalSettings.php फ़ाइल में स्थिर वैल्यू MW_DB, MW_PREFIX और MW_WIKI_NAME के रूप में दिए जाते हैं।
--wiki तर्क का पूरा वैल्यू, MW_WIKI_NAME का वैल्यू है।
--wiki तर्क में कोई डैश है, डैश से पहले का हिस्सा MW_DB को दिया जाता है और बाद का हिस्सा MW_PREFIX को।इस टेबल में दिखाया गया है कि यह काम कैसे करता है:
--wiki |
MW_WIKI_NAME |
MW_DB |
MW_PREFIX
|
|---|---|---|---|
| enwiki | enwiki | enwiki | empty |
| enwiki-one | enwiki-one | enwiki | one |
| enwiki-one-two | enwiki-one-two | enwiki | one-two |
Since there is no --wiki argument for web requests, they must be handled differently.
आम तौर पर डोमेन के नाम और/या URL के पथ की मदद से विकि को चुना जाता है।
विकियों के बीच बाँटने में टिप्पणियाँ
आप विकियों के बीच अपलोड की गई मीडिया को बाँटने के लिए $wgForeignFileRepos का इस्तेमाल कर सकते हैं। यह विकिपीडिया के लिए विकिमीडिया कॉमन्स सेवा की तरह है।
उदाहरणस्वरूप:
- en.example.org - अंग्रेज़ी
- fr.example.org - फ़्रेंच
- de.example.org - जर्मन
- pool.example.org - सभी विकियों के लिए साँझित मीडिया फ़ाइलें।
commons नामक इंटरविकि कड़ी से संघर्ष पैदा हो सकती है।
और "media" नाम का भी इस्तेमाल न करें (जैसे media.example.org) क्योंकि इससे आपकी इंटरविकि कड़ी और लोकल मीडिया फ़ाइलों के आंतरिक नामस्थान Media: के बीच संघर्ष हो सकती है, जैसे [[media:File.png]]।
साँझित डेटाबेस टेबल्स
सदस्य खातों के लिए एक साँझित डेटाबेस का इस्तेमाल करें। साँझित डेटाबेस टेबल्स को सेटअप करने के अनुदेशों के लिए Manual:Shared database देखें।
इंटरविकि
आप Extension:Interwiki की मदद से सभी विकियों के बीच इंटरविकि कड़ियाँ बना सकते हैं। अगर आपके विकियाँ भाषाओं के संस्करण हैं, इंटरविकि उपसर्ग का नाम विशिष्ट भाषा कोड पर रखें। जैसे, आपके परिवार के जर्मन विकि के लिए "de"। इस तरह से आप भाषा कड़ियों की मदद से समान विषय पर पृष्ठों को जोड़ सकते हैं।
आपके हिन्दी "मुखपृष्ठ" पर [[de:Hauptseite]] जोड़ देने पर भाषा साइडबार में एक "Deutsch" नामक कड़ी बना दी जाएगी। अधिक जानकारी के लिए Help:Interwiki linking देखें
अगर आपके पास फ़ाइलों के लिए एक केंद्रीय विकि है, उसके लिए भी एक उपसर्ग बनाएँ।
जैसे pool → https://pool.example.org/wiki/$1, और "फ़ॉरवर्ड" चेकबॉक्स को सक्षम करें ताकि इसे उसी परिवार में एक लोकल विकि माना जाए।
अपलोड
सुनिश्चित करें कि pool-wiki का "images" फ़ोल्डर लेखनीय है।
आप भाषा-विकियों की "फ़ाइल अपलोड करें" वाली कड़ियों के लक्ष्यों को poolwiki के अपलोड-साइट में बदल सकते हैं। हर भाषा-विकि का "LocalSettings.php" खोलें और जोड़ें:
$wgUploadNavigationUrl = "https://pool.example.org/index.php/Special:Upload";
1.17 में आपको लाल कड़ियों को pool-wiki पर अनुप्रेषित करने के लिए $wgUploadMissingFileUrl सेट करना होगा।
$wgUploadMissingFileUrl= "https://pool.example.org/index.php/Special:Upload";
अगर आप सिर्फ अपने पूल विकि लिए अपलोड्स सक्षम करना चाहते हैं, आप सेटिंग कुछ ऐसा कर सकते हैं:
if ( $wgDBname === 'pool' ) {
$wgEnableUploads = true;
} else {
$wgEnableUploads = false;
}
साँझित फ़ाइलों का इस्तेमाल करें
भाषा-विकियों में poolwiki की फ़ाइलों का इस्तेमाल करने के लिए हर भाषा-विकि पर "LocalSettings.php" खोलें और जोड़ें:
$wgUseSharedUploads = true;
$wgSharedUploadPath = 'https://pool.example.org/images';
$wgSharedUploadDirectory = '/(LOCALPATH)/POOL-FOLDER/images/';
$wgHashedSharedUploadDirectory = true;
अब आप पूल की फ़ाइलों को भाषा-विकियों में [[File:MyLogo.png]] के साथ एकीकृत कर सकते हैं।
चित्र विवरण
हर भाषा-विकि पर (प्रबंधक के रूप में) MediaWiki:Sharedupload-desc-here संदेश खोलें।
टेक्स्ट को कुछ ऐसा बना दें:
यह फ़ाइल हमारे डेटा-पूल में रखी जाती है।
जानकारी और विवरण के लिए कृपया [[:pool:File:{{PAGENAME}}|वहाँ पर विवरण]] देखें।
(पंक्ति की शुरुआत में ':' पर गौर करें, जो 'pool' को पृष्ठ के बाएँ तरफ की इंटरविकि सूची में जुड़ने से रोकता है।)
अगर आप PoolWiki पर रखी मीडिया-विवरण को आउटपुट करना चाहते हैं, भाषा-विकियों के "LocalSettings.php" पर यह जोड़ें:
$wgFetchCommonsDescriptions = true;
$wgSharedUploadDBname = 'pool'; # DB-Name of PoolWiki
$wgSharedUploadDBprefix = 'wiki_'; # Table name prefix for PoolWiki
$wgRepositoryBaseUrl = "https://pool.example.org/index.php/Image:";
विकि फ़ार्म के लिए एक्सटेंशन्स
कई मीडियाविकि एक्सटेंशन्स हैं जो एक कोड-आधार से कई विकियों को होस्ट करना आसान बनाते हैं, मगर सिर्फ एक ही थोड़ा-बहुत प्रसिद्ध है:
- Extension:MediaWikiFarm - beta.
- Extension:SkinCustomiser: साइडबार के स्थानीयकरण की समस्याओं, और क्रमशः
MediaWiki:Cologneblue.css,MediaWiki:Modern.css,MediaWiki:Monobook.css,MediaWiki:Vector.css,MediaWiki:Mobile.css,MediaWiki:Common.cssफ़ाइलों से संबंधित स्किन्स को अनुकूलित करने के लिए।
ये भी देखें
- Extension:CentralAuth
- Manual:InitialiseSettings.php
- Manual:CommonSettings.php
- Manual:$wgConf and Manual:SiteConfiguration.php
- Manual:Central ID — तंत्र जिससे सदस्य खातों पर एक अतिरिक्त 'केंद्रीय' पहचानकर्ता जोड़ी जा सकती है
- MediaWiki-Docker/Configuration recipes/Wiki farm - config recipe for a Docker container of MediaWiki