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 देखें।
- अपनी मीडियाविकि स्थापना को सभी विकियों के साथ बाँटने के लिए अपना वेब सर्वर सक्षम करें। कई (सब)डोमेन्स के लिए आप कई सर्वर के नामों पर listen का इस्तेमाल कर सकते हैं। कई सबडिरेक्ट्रियों के लिए आप नियमों, उपनामों या चिह्न-कड़ियों को फिर से लिख सकते हैं। For multiple (sub)domains, have your web server accept connections from all the relevant domains. For multiple subdirectories, you could use rewrite rules, aliases, or symlinks.
- वर्तमान विकि का पता लगाने के लिए कोड को
LocalSettings.php
के ऊपर जोड़ें। Note that if the argument to--wiki
contains a hyphen, the argument will be split on the hyphen and the resulting two values assigned toMW_DB
andMW_PREFIX
, respectively. डोमेन के नाम के अनुसार विकियों के लिए:$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 ) { die( 'Unknown wiki.' ); } } $wgLocalDatabases = $wgConf->wikis = array_values( $wikis ); $wgDBname = $wikiID; $wgDBuser = 'mediawiki';
- उन सेटिंग्स को कॉन्फ़िगर करें जो सभी विकियों के लिए अलग होंगे। जैसे:
$wgCacheDirectory = "/tmp/mediawiki_cache/$wgDBname"; $wgUploadDirectory = "$IP/images/$wgDBname"; $wgUploadPath = "/w/images/$wgDBname";
- हर विकि के अनुसार ओवर्राइड्स कॉन्फ़िगर करें। इसमें कम-से-कम एक $1 और $2 होना चाहिए। This should include at least
$wgServer
and$wgArticlePath
.इसे एक दूसरे फ़ाइल से किया जा सकता है, जैसे:$wgConf->settings = [ 'wgServer' => [ 'examplewiki' => 'https://example.org', 'onewiki' => 'https://one.example.org', ], 'wgArticlePath' => [ 'default' => '/wiki', ], 'wgSitename' => [ 'default' => 'Example', 'onewiki' => 'One', ], 'wgLogo' => [ 'default' => '/images/examplewiki/Example_logo.png', ], 'wgLanguageCode' => [ 'default' => 'en', 'onewiki' => '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 its database and add its settings first , with
--wiki=mywiki
if you runinstall.php
from the command line. - Run
php maintenance/update.php --wiki=mywiki
.
अलग सेटिंग्स फ़ाइलें
यह विधि बिलकुल ही स्वतंत्र विकियों के लिए है, जो एक ही वेब सर्वर और मीडियाविकि स्रोत कोड का इस्तेमाल करते हैं।
- पहला विकि साधारण तरीके से स्थापित करें, वेब या फिर CLI इंस्टॉलर की मदद से, जो आपका डेटाबेस सेट अप करके एक LocalSettings.php फ़ाइल बनाता है।
- स्थापना के बाद बनाए गए
LocalSettings.php
फ़ाइल का नाम बदलकर विकि का ID (जैसे डेटाबेस का नाम) जोड़ें,LocalSettings_mywiki.php
की तरह। - हर विकि के लिए पहले और दूसरे चरण को दोहराएँ।
- एक नया
LocalSettings.php
फ़ाइल बनाएँ जो सही फ़ाइल को लोड करेगा। As with the above wiki farm example, a--wiki
argument containing a hyphen will be split on the hyphen into two values assigned toMW_DB
andMW_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 { $path = explode( '/', $_SERVER['REQUEST_URI'] ?? '', 3 )[1] ?? ''; $wikiID = $_SERVER['MW_DB'] ?? $wikis[ $path ] ?? 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
- Manual:Central ID — तंत्र जिससे सदस्य खातों पर एक अतिरिक्त 'केंद्रीय' पहचानकर्ता जोड़ी जा सकती है