Příručka:$wgForeignFileRepos

From mediawiki.org
This page is a translated version of the page Manual:$wgForeignFileRepos and the translation is 100% complete.
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)

Podrobnosti

Varování Varování: Při používání Wikimedia Commons je vyžadováno použití HTTPS pro odkazy místo HTTP. Od roku 2015 Wikimedia Foundation přesměrovává provoz z HTTP na HTTPS. Z bezpečnostních důvodů MediaWiki taková přesměrování nenásleduje (viz úkol T102566).

Řešením je použití HTTPS v URL pro Wikimedia Commons! Pokud používáte $wgUseInstantCommons , tento problém je automaticky vyřešen pomocí MediaWiki 1.25.2 nebo novější. Pokud jste definovali vlastní nastavení pomocí $wgForeignFileRepos pro Wikimedia Commons, musí být adresy URL odpovídajícím způsobem upraveny!

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 .
Varování Varování: Kvůli bug v MediaWiki by cizí wiki měla mít v $wgUploadPath úplnou nebo pro protokol relativní (ale ne obecně relativní) URL, jinak nebudou načteny popisné stránky s obrázky správně.
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

Od 1.16.0 existuje pohodlnější zkratka pro použití Commons jako cizího úložiště: $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í)
];
Pokud se rozhodnete přidat toto nastavení do svého souboru "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