Příručka:Rodina wiki
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 .
Níže jsou uvedeny pokyny, jak nastavit MediaWiki, aby hostovala více než jednu wiki.
Metody
Wiki farma
Následující kroky jsou pro spuštění více wikin na stejné verzi MediaWiki:
- Nainstalujte první wiki jako obvykle. Další podrobnosti najdete na Příručka:Instalační příručka .
- Povolte svému webovému serveru sdílení vaší instalace MediaWiki se všemi wikinami. For multiple (sub)domains, have your web server accept connections from all the relevant domains. Pro více podadresářů můžete použít pravidla přepisu, aliasy nebo symbolické odkazy.
- Přidejte kód do horní části
LocalSettings.php
, abyste zjistili aktuální wiki. Všimněte si, že pokud argument--wiki
obsahuje pomlčku, bude argument rozdělen na pomlčku a výsledné dvě hodnoty přiřazenéMW_DB
aMW_PREFIX
, v tomto pořadí. Pro wikiny podle názvu domény:$wikis = [ 'example.org' => 'examplewiki', 'one.example.org' => 'onewiki', ]; if ( defined( 'MW_DB' ) ) { // Automaticky nastaveno z možnosti --wiki na skripty údržby $wikiID = MW_DB; } else { // Použijte proměnnou prostředí MW_DB nebo namapujte název domény $wikiID = $_SERVER['MW_DB'] ?? $wikis[ $_SERVER['SERVER_NAME'] ?? '' ] ?? null; if ( !$wikiID ) { die( 'Unknown wiki.' ); } } $wgLocalDatabases = $wgConf->wikis = array_values( $wikis ); $wgDBname = $wikiID; $wgDBuser = 'mediawiki';
- Nakonfigurujte nastavení, která se musí lišit pro všechny wikiny. Například:
$wgCacheDirectory = "/tmp/mediawiki_cache/$wgDBname"; $wgUploadDirectory = "$IP/images/$wgDBname"; $wgUploadPath = "/w/images/$wgDBname";
- Nakonfigurujte přepsání podle wiki. To by mělo zahrnovat alespoň
$wgServer
a$wgArticlePath
.To lze provést ze samostatného souboru, např.:$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
.
Samostatné soubory nastavení
Tento přístup je pro provozování zcela nezávislých wikin, ale stále sdílení stejného webového serveru a zdrojového kódu MediaWiki.
Nainstalujte první wiki jako obvykle přes web nebo instalační program CLI, který nastaví vaši databázi a vygeneruje soubor LocalSettings.php .
- Po instalaci přejmenujte vygenerovaný soubor
LocalSettings.php
tak, aby obsahoval wiki ID (např. název databáze), napříkladLocalSettings_mywiki.php
. - Opakujte krok jedna a dva výše pro každou wiki, kterou chcete vytvořit.
- Vytvořte nový
LocalSettings.php
soubor, který načte ten správný. Stejně jako ve výše uvedeném příkladu wiki farmy bude argument--wiki
obsahující pomlčku rozdělen na pomlčku na dvě hodnoty přiřazené kMW_DB
aMW_PREFIX
.Pokud jsou vaše wikiny ve stejné doméně, ale pod různými cestami (např.<?php $wikis = [ 'example.org' => 'examplewiki', 'one.example.org' => 'onewiki', ]; if ( defined( 'MW_DB' ) ) { // Automaticky nastaveno z možnosti --wiki na skripty údržby $wikiID = MW_DB; } else { // Použijte proměnnou prostředí MW_DB nebo namapujte název domény $wikiID = $_SERVER['MW_DB'] ?? $wikis[ $_SERVER['SERVER_NAME'] ?? '' ] ?? null; } if ( $wikiID ) { require_once "LocalSettings_$wikiID.php"; } else { die( 'Unknown wiki.' ); } // Pod tento řádek přidejte všechna nastavení, která by měla platit pro všechny wikiny // -------
example.org/wiki1
,example.org/wiki2
atd.), můžete použít něco takového:<?php $wikis = [ '/example' => 'examplewiki', '/w_example' => 'examplewiki', '/one' => 'onewiki', '/w_one' => 'onewiki', ]; if ( defined( 'MW_DB' ) ) { // Automaticky nastaveno z možnosti --wiki na skripty údržby. $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.' ); }
Stránky ve stylu Drupal
Toto nastavení má tu výhodu, že je pro uživatele zcela transparentní a přiměřeně bezpečné z hlediska adresáře obrázků.
- Vytvořte základní adresář, který bude obsahovat všechny vaše soubory MediaWiki např.
mkdir /home/web/mediawiki
. - Nainstalujte MediaWiki a další nástroje jako obvykle do podadresáře deklarujícího verzi (např.,
/home/web/mediawiki/mediawiki-1.10.0
). - Propojte adresář deklarující verzi s adresářem kódu. např.,
ln -s /home/web/mediawiki/mediawiki-1.10.0 /home/web/mediawiki/code
- Vytvořte adresář sites, který bude obsahovat naše obrázky a nastavení:
mkdir /home/web/mediawiki/sites
- Nastavte wiki jako obvykle z adresáře /code.
- Po úspěšné instalaci přesuňte
LocalSettings.php
do adresáře webů, který bude při kontrole webu odpovídat. Například pro zachycení http://example.com/mywiki by se vytvořil adresář example.com.mywiki. např.,mkdir /home/web/mediawiki/sites/example.com.mywiki
. Další informace o tom najdete v souboru Drupalsettings.php
. - Pokud máte v úmyslu používat mediální soubory, vytvořte v adresáři webu adresář images. např.,
mkdir /home/web/mediawiki/sites/example.com.wiki/images
. Udělejte jej podle potřeby zapisovatelným. - Umístěte soubor Drupal-style
LocalSettings.php
do svého hlavního adresáře:cp DrupalLocalSettings.php /home/web/mediawiki/code/LocalSettings.php
- Upravte
LocalSettings.php
každé podstránky tak, aby ukazoval na správná místa:- Nejprve zakomentujte kód týkající se
$IP
(řádky 16-20 v 1.15.3), protože jeindex.php
nastaven na adresář code. - Poté vložte následující dva řádky, abyste zajistili, že soubory obrázků jsou přístupné, např.:
$wgUploadDirectory = "/home/web/mediawiki/sites/wiki.example.com/images";
a$wgUploadPath = "/images";
. Ty je třeba někam umístit po volání naDefaultSettings.php
(řádek 25 v 1.15.3), protože jinak se proměnné vynulují. - Podle potřeby proveďte další úpravy.
- Nejprve zakomentujte kód týkající se
- Připravte si instalaci Apache 2. Příklad webu: wiki.example.com
- Vytvořte odkaz na adresář code, je-li to požadováno např.
ln -s /home/web/mediawiki/code /home/web/wiki.example.com
- Vytvořte vhodnou konfiguraci virtuálního hostitele:
<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 webu, aby byl přístupný Alias /mediawiki/code /home/web/mediawiki/code # Alias pro wiki, takže obrázky fungují Alias /images /home/web/mediawiki/sites/wiki.example.com/images # Pokud chcete své stránky chránit heslem # <Directory /home/web/wiki.example.com> # AuthType Basic # AuthName "Moje chráněná wiki" # AuthUserFile /etc/apache2/htpasswd/users-mywiki # require valid-user # </Directory> </VirtualHost>
- Vytvořte odkaz na adresář code, je-li to požadováno např.
- 11. Pokud nastavujete weby lokálně, aktualizujte svůj soubor
hosts
názvy webů. Stránka by nyní měla fungovat.
V mém případě jsem vytvořil další kopii kódu, ze kterého jsem mohl nainstalovat a aktualizovat svůj LocalSettings.php
a databáze.
Všimněte si, že $_SERVER['HTTP_HOST']
v doprovodném kódu Drupalu není definován při spouštění skriptů údržby z příkazového řádku, takže toto řešení neumožňuje použití skriptů údržby bez určitých úprav.
Upravená metoda ve stylu Drupalu pro Ubuntu
Zjednodušenou metodu pro více wikin a více (nebo vnořených) podwikin na Ubuntu/Kubuntu, která je volně založena na výše uvedené metodě, lze nalézt na:
Jak se zachází s wiki farmami ve skriptech údržby
Udržovací skripty MediaWiki (např. update.php) přijímají argument --wiki
, který je předán do vašeho souboru LocalSettings.php jako konstanty MW_DB
, MW_PREFIX
a MW_WIKI_NAME
.
Celá hodnota argumentu --wiki
je hodnota MW_WIKI_NAME
.
--wiki
pomlčka, pak je část před pomlčkou přiřazena k MW_DB
a část za pomlčkou je přiřazena k MW_PREFIX
.Tato tabulka ukazuje, jak to funguje:
--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 |
Protože pro webové požadavky neexistuje argument --wiki
, musí se s nimi zacházet jinak.
K výběru wiki se obvykle používá název domény a/nebo cesta URL.
Tipy pro sdílení mezi wikinami
Můžete použít $wgForeignFileRepos
ke sdílení nahraných mediálních souborů napříč wikinami. Je to podobné jako Wikimedia Commons pro Wikipedii.
Například:
- en.example.org - angličtina
- fr.example.org - francouzština
- de.example.org - němčina
- pool.example.org - Sdílené mediální soubory pro všechny wikiny.
commons
pro Wikimedia Commons.
Vyhněte se také používání názvu "media" (např. media.example.org), protože to může způsobit konflikt mezi interwiki a interním jmenným prostorem Media:
pro přístup k místním mediálním souborům, např. [[media:File.png]].
Tabulky sdílené databáze
Zvažte použití sdílené databáze pro uživatelské účty. Pokyny k nastavení sdílených databázových tabulek naleznete v části Příručka:Sdílení databáze .
Interwiki
Můžete vytvořit interwiki odkazy mezi všemi wikinami pomocí Extension:Interwiki . Pokud jsou wikiny jazykovými verzemi, doporučuje se pojmenovat předponu interwiki po přesném kódu jazyka. Například "cs" pro českou wiki ve vaší rodině. Tímto způsobem můžete propojit stránky o stejném tématu pomocí jazykových odkazů.
Přidáním [[de:Hauptseite]] na vaši anglickou "hlavní stránku" vytvoříte na postranním panelu jazyků odkaz "Deutsch". Pro další informace navštivte Help:Interwiki linking
Pokud máte centrální wiki pro soubory, vytvořte předponu i pro tuto.
Např. pool
až https://pool.example.org/wiki/$1 a zaškrtněte políčko "Přeposlat", aby bylo rozpoznána jako místní wiki ve stejné rodině.
Nahrávání
Ujistěte se, že do složky "images" pool-wiki lze zapisovat.
Je užitečné změnit odkaz "Nahrát soubor" na jazyk-wiki tak, aby odkazoval na stránku pro nahrávání poolwiki. Otevřete "LocalSettings.php" každé jazykové wiki a přidejte:
$wgUploadNavigationUrl = "https://pool.example.org/index.php/Special:Upload";
Ve verzi 1.17 budete také muset nastavit $wgUploadMissingFileUrl
, abyste byli přesměrováni na pool-wiki na červených odkazech.
$wgUploadMissingFileUrl= "https://pool.example.org/index.php/Special:Upload";
Pokud chcete povolit nahrávání pouze pro vaši slučující wiki, můžete použít něco takového:
if ( $wgDBname === 'pool' ) {
$wgEnableUploads = true;
} else {
$wgEnableUploads = false;
}
Používání sdílených souborů
Chcete-li použít soubory poolwiki v languagewiki, otevřete "LocalSettings.php" pro každou languagewiki a přidejte:
$wgUseSharedUploads = true;
$wgSharedUploadPath = 'https://pool.example.org/images';
$wgSharedUploadDirectory = '/(LOCALPATH)/POOL-FOLDER/images/';
$wgHashedSharedUploadDirectory = true;
Nyní můžete integrovat soubory fondu s (např. [[File:MyLogo.png]]) v languagewikis.
Popis obrázku
V každém languagewiki otevřete (jako správce) zprávu MediaWiki:Sharedupload-desc-here.
Změňte text na něco jako:
Tento soubor je uložen v našem datovém fondu. Pro informace a popis prosím navštivte [[:pool:File:{{PAGENAME}}|tyto informace]].
(A všimněte si ':' na začátku řádku, které zabrání 'pool' v zařazení do seznamu interwiki v levé části stránky.)
Pokud chcete vydat popis média, uložený také v PoolWiki, přidejte do "LocalSettings.php" jazykových wikin:
$wgFetchCommonsDescriptions = true;
$wgSharedUploadDBname = 'pool'; # DB-Name of PoolWiki
$wgSharedUploadDBprefix = 'wiki_'; # Table name prefix for PoolWiki
$wgRepositoryBaseUrl = "https://pool.example.org/index.php/Image:";
Rozšíření Wiki Farm
Existuje několik rozšíření MediaWiki, která se pokoušejí zjednodušit hostování několika wikin pomocí pouze jedné kódové základny, avšak pouze jedno je v současné době pozoruhodné:
- Extension:MediaWikiFarm - beta.
- Extension:SkinCustomiser : Pro localisation vydání sidebar a přizpůsobení vzhledů týkající se souborů
MediaWiki:Cologneblue.css
,MediaWiki:Modern.css
,MediaWiki:Monobook.css
,MediaWiki:Vector.css
,MediaWiki:Mobile.css
,MediaWiki:Common.css
v tomto pořadí.
Související odkazy
- Rozšíření:CentralAuth
- Manual:InitialiseSettings.php
- Manual:CommonSettings.php
- Příručka:$wgConf
- Manual:Central ID — mechanismus, kterým mohou mít uživatelské účty další 'centrální' identifikátor.