Příručka:$wgForeignFileRepos
Sdílená nahrávání: $wgForeignFileRepos | |
---|---|
Pole struktury úložiště pro cizí úložiště. |
|
Zavedeno od verze: | 1.11.0 (r22580) |
Odstraněno od verze: | stále se používá |
Povolené hodnoty: | (pole) |
Výchozí hodnota: | (viz níže) |
Další nastavení: Podle abecedy | Podle funkce |
Podrobnosti
Vlastnosti požadované pro všechna úložiště
- class
- Název třídy pro úložiště. Může pocházet z jádra nebo rozšíření. Základní třídy úložiště jsou LocalRepo, ForeignDBRepo, FileRepo a ForeignAPIRepo.
- name
- Jedinečný název úložiště.
Pro všechna základní úložiště
- url
- Základní veřejná URL
- thumbUrl
- Základní adresa URL thumb, pokud se liší od adresy url/thumb
- hashLevels
- Počet úrovní adresáře pro rozdělení souborů na základě hash
- thumbScriptUrl
- Adresa URL pro thumb.php (volitelné, nedoporučuje se)
- transformVia404
- Zda přeskočit transformaci mediálního souboru při analýze a spoléhat se na obslužnou rutinu 404.
- initialCapital
- Ekvivalent
$wgCapitalLinks
určuje, zda názvy souborů implicitně začínají velkým písmenem. Současná implementace může poskytovat nesprávné odkazy na stránky s popisem, pokud místní$wgCapitalLinks
a initialCapital neodpovídají. - pathDisclosureProtection
- Může být 'paranoid' pro odstranění všech parametrů z chybových zpráv, 'none' pro ponechání cest beze změny nebo 'simple' pro nahrazení cest zástupnými symboly. Výchozí pro LocalRepo je 'simple'. Všimněte si, že některé programy pro vytváření miniatur obrázků vkládají cestu k miniaturám do výsledných metadat, takže toto nastavení nemusí poskytovat plnou ochranu.
- descBaseUrl
- URL stránek s popisem obrázků, např.
https://en.wikipedia.org/wiki/File:
- scriptDirUrl
- Adresa URL instalace MediaWiki, ekvivalentní
$wgScriptPath
, např.https://en.wikipedia.org/w
- articleUrl
- Ekvivalent
$wgArticlePath
, např.https://en.wikipedia.org/wiki/$1
- fetchDescription
- Načtěte text stránky popisu vzdáleného souboru. Ekvivalent
$wgFetchCommonsDescriptions
. - descriptionCacheExpiry
- Pokud je nastaveno na 0, nebude se používat žádné ukládání do mezipaměti. Nastavte na 1 nebo více (sekundy), abyste definovali, jak dlouho bude trvat místní mezipaměť stránek s popisem. Chcete-li použít, je nutné nastavit fetchDescription na hodnotu true.
Třída ForeignAPIRepo
- apibase
- Základní adresa URL pro rozhraní API vzdáleného úložiště (např.
https://commons.wikimedia.org/w/api.php
). Používá se pouze pro ForeignAPIRepo. - apiThumbCacheExpiry
- Jak dlouho ukládat thumbs lokálně do mezipaměti. Nastavení na 0 deaktivuje místní ukládání do mezipaměti. Místní ukládání thumb do mezipaměti sníží zatížení cizího serveru a zlepší soukromí uživatelů. Může to však způsobit, že vaše wiki bude o něco pomalejší.
Třída ForeignDBRepo
- directory
- Cesta k mediálnímu adresáři MediaWiki na serveru, například
/var/www/wiki/images
. - dbType, dbServer, dbUser, dbPassword, dbName, dbFlags
- Ekvivalentní odpovídajícímu členu
$wgDBservers
- tablePrefix
- Předpona tabulky, cizí wiki je
$wgDBprefix
- hasSharedCache
- True, pokud je sdílená mezipaměť wiki přístupná přes místní
$wgMemc
- favicon
- Favicon pro vzdálené úložiště
Výchozí hodnota (kód v includes/SetupDynamicConfig.php):
if ( $wgUseSharedUploads ) {
if ( $wgSharedUploadDBname ) {
$wgForeignFileRepos[] = [
'class' => ForeignDBRepo::class,
'name' => 'shared',
'directory' => $wgSharedUploadDirectory,
'url' => $wgSharedUploadPath,
'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0,
'thumbScriptUrl' => $wgSharedThumbnailScriptPath,
'transformVia404' => !$wgGenerateThumbnailOnParse,
'dbType' => $wgDBtype,
'dbServer' => $wgDBserver,
'dbUser' => $wgDBuser,
'dbPassword' => $wgDBpassword,
'dbName' => $wgSharedUploadDBname,
'dbFlags' => ( $wgDebugDumpSql ? DBO_DEBUG : 0 ) | DBO_DEFAULT,
'tablePrefix' => $wgSharedUploadDBprefix,
'hasSharedCache' => $wgCacheSharedUploads,
'descBaseUrl' => $wgRepositoryBaseUrl,
'fetchDescription' => $wgFetchCommonsDescriptions,
];
} else {
$wgForeignFileRepos[] = [
'class' => FileRepo::class,
'name' => 'shared',
'directory' => $wgSharedUploadDirectory,
'url' => $wgSharedUploadPath,
'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0,
'thumbScriptUrl' => $wgSharedThumbnailScriptPath,
'transformVia404' => !$wgGenerateThumbnailOnParse,
'descBaseUrl' => $wgRepositoryBaseUrl,
'fetchDescription' => $wgFetchCommonsDescriptions,
];
}
}
Třída ForeignDBViaLBRepo
- wiki
- wiki-db-name použitý v
$wgLBFactoryConf
Oprávnění k adresáři
Budete potřebovat rw na $IP/images
a $IP/images/thumbs
pro jakéhokoli uživatele, pod kterým php běží.
Použití
Verze MediaWiki: | ≥ 1.31 |
Použití souborů z Wikimedia Commons : ForeignAPIRepo
$wgUseInstantCommons
.Svou wiki můžete nastavit tak, aby používala média přímo z Wikimedia Commons (nebo z jakékoli jiné stránky s podporou MediaWiki, viz níže). Dejte si však pozor na jakékoli právní důsledky.
Chcete-li to použít, potřebujete:
- MediaWiki 1.13 +
- PHP s podporou JSON (pro funkci
json_decode()
). JSON je standardně povolen od PHP 5.2.0, pro starší verze budete potřebovat rozšíření PECL. Od MediaWiki 1.16 to již není nutné. Verze 1.16 použije vlastní (a pomalejší) kód, pokud JSON není k dispozici. - Vzdálená wiki musí také používat MediaWiki 1.13 nebo novější. Jinak jeho
api.php
vrátí{"error":{"code":"iiunknown_iiprop","info":"Unrecognised values for parameter 'iiprop'"}}
a požadavky na soubor selžou bezobslužně (tj. požadované soubory jsou prostě považovány za neexistující).
Níže uvedený kód umožňuje na vašem webu mediální soubory z Wikimedia Commons. Měli byste jej umístit do svého souboru LocalSettings.php
:
$wgForeignFileRepos[] = [
'class' => ForeignAPIRepo::class,
'name' => 'commonswiki', // Musí to být odlišný název
'apibase' => 'https://commons.wikimedia.org/w/api.php',
'hashLevels' => 2,
'fetchDescription' => true, // Volitelné
'descriptionCacheExpiry' => 43200, // 12 hodin, volitelné (hodnoty jsou v sekundách)
'apiMetadataExpiry' => 14400, // 4 hodiny, volitelné. Zvažte zvýšení pro lepší výkon.
'apiThumbCacheExpiry' => 86400, // 24 hodin, volitelné, ale nutné pro místní ukládání do mezipaměti (Všimněte si, že místní ukládání do mezipaměti je často pomalejší než neprovedení)
];
LocalSettings.php
místo použití $wgUseInstantCommons
, nemůžete použít wikimediacommons
jako nastavení pro name
, protože je již přítomno v základním MediaWiki kódu (v Setup.php
).Chcete-li stáhnout obrázky z jiného projektu Wikimedie, nastavte apibase
na soubor "api.php" této wiki jako např. https://en.wikipedia.org/w/api.php
.
Příklad:
$wgForeignFileRepos[] = [
'class' => ForeignAPIRepo::class,
'name' => 'enwikipedia',
'apibase' => 'https://en.wikipedia.org/w/api.php',
'hashLevels' => 2,
'fetchDescription' => true,
'descriptionCacheExpiry' => 43200,
'apiThumbCacheExpiry' => 86400,
];
Chcete-li do své instalace vložit obrázek, jednoduše použijte [[File:name_of_commons_picture.jpg]]
.
Výkon
Možná budete muset nakonfigurovat také $wgMainCacheType
.
Výchozí hodnota je často CACHE_NONE, což znamená, že se načte obrázek ze vzdáleného hostitele při každém načtení stránky, což bude velmi pomalé.
Podobně musíte nastavit apiThumbCacheExpiry
na nulu, pokud dáváte přednost použití cizích miniatur, které budou rychlejší.
Výchozí hodnota pro apiMetadataExpiry jsou 4 hodiny.
Toto je jedno z nejpůsobivějších nastavení na výkon.
Zvažte nastavení na opravdu vysokou hodnotu, například 604 800 (1 týden), abyste dosáhli nejlepšího výkonu.
To však může znamenat, že může trvat až tak dlouho, než se změny v souboru dostanou na vaši wiki.
Nastavení $wgResponsiveImages = false;
může zlepšit výkon instant commons za cenu nižší kvality obrázků na displejích s vysokým rozlišením.
V současné době MediaWiki nepodporuje zřetězení cizích žádostí o API. Vysoce výkonný web se může chtít podívat na nastavení místního proxy (jako je nginx), který dokáže sloučit více požadavků do jednoho zřetězeného požadavku, aby se zkrátily časy zpáteční cesty z TCP a TLS handshake.
Existuje také alternativní implementace na Rozšíření:QuickInstantCommons , která může být mnohem rychlejší
Použití souborů z databáze, ke které máte přístup: ForeignDBRepo, ForeignDBViaLBRepo
Třída ForeignDBRepo je velmi užitečná pro vytváření wiki rodin. V rodině wiki bude mít každá wiki svou vlastní databázi nebo předponu tabulky.
Pomocí této třídy můžete upozornit člena rodiny na tabulky jiného člena rodiny.
Přístup přes ForeignDBRepo
je rychlejší než přes ForeignAPIRepo
.
Tento kód by měl být nasazen do LocalSettings.php
$wgForeignFileRepos[] = [
'class' => ForeignDBRepo::class,
'name' => 'otherwiki',
'url' => "https://example.org/w/images",
'directory' => '/path/to/uploads',
'hashLevels' => 2, // To musí být stejné pro druhého člena rodiny
'dbType' => $wgDBtype,
'dbServer' => $wgDBserver,
'dbUser' => $wgDBuser,
'dbPassword' => $wgDBpassword,
'dbFlags' => DBO_DEFAULT,
'dbName' => 'mydb',
'tablePrefix' => 'mw_',
'hasSharedCache' => false,
'descBaseUrl' => 'https://example.org/wiki/File:',
'fetchDescription' => false
];
Případně, pokud máte $wgLBFactoryConf
nastaveno pro více wikin, můžete použít 'class' => ForeignDBViaLBRepo::class
:
$wgForeignFileRepos[] = [
'class' => ForeignDBViaLBRepo::class,
'wiki' => 'wiki-db-name-used-with-wgLBFactoryConf',
'name' => 'otherwiki', # zobrazované jméno (např. karta vector-skin "View on OtherWiki") může být nastaveno na MediaWiki:Shared-repo-name-<otherwiki> specifickou pro wiki
'url' => 'https://example.org/w/images',
'directory' => '/path/to/uploads',
'hashLevels' => 2, # To musí být stejné pro druhého člena rodiny
'tablePrefix' => 'mw_',
'hasSharedCache' => false,
'fetchDescription' => true,
'scriptDirUrl' => 'https://example.org/w', # má vliv na to, zda lze načíst popis
];
To nevyžaduje všechny parametry db* jako v ForeignDBRepo
.
Použití souborů z místní složky : FileRepo
Svou wiki můžete nastavit tak, aby používala média z jedné složky. Toto je v současnosti pouze demonstrační funkce a pravděpodobně bude příliš pomalá pro vytížené wiki nebo pomalé servery kvůli nedostatku mezipaměti. Tento kód by měl být přidán do LocalSettings.php
.
Níže uvedený kód z něj povolil mediální soubory:
$wgForeignFileRepos[] = [
'class' => FileRepo::class,
'name' => 'sharedFsRepo',
'directory' => 'media',
'hashLevels' => 0,
'url' => 'https://shared.example.org/path/to/media',
];
Varování
Pro optimální výkon použijte wiki, jejíž primárním účelem je sloužit jako commons jako cíl $wgForeignFileRepos
.
Vyhněte se například nasměrování obsahu dvou wiki na sebe jako cizích repozitářů za účelem sdílení souborů mezi nimi, protože to bude generovat nadměrný počet žádostí o soubory při zobrazení stránky a úpravách, protože obě wiki si soubor od sebe navzájem vyžádají.
Podobně se vyhněte sdílení databáze mezi Commons a jinými wikinami s obsahem, zvláště pokud musíte použít ForeignAPIRepo
místo ForeignDBRepo
kvůli omezením uloženým vaším poskytovatelem služeb nebo správcem.
To generuje velké množství potenciálně dlouhodobých databázových připojení, která mohou mít za následek zhoršení výkonu nebo mohou překročit limity DB připojení i na wikinách s velmi malým provozem nebo aktivitou.
Související odkazy
$wgLocalFileRepo
- Příručka:Rodina wiki
- Příručka:Konfigurace nahrávání souborů (hlavně pro místní nahrávání)
$wgUseInstantCommons
(pro automatické přidání commons do pole úložiště souborů)- filerepoinfo API pro získání informací o konfiguraci repozitáře, např. https://www.mediawiki.org/w/api.php?action=query&format=json&meta=filerepoinfo
- Extension:QuickInstantCommons
- Category:File repository extensions