Kézikönyv:$wgForeignFileRepos

This page is a translated version of the page Manual:$wgForeignFileRepos and the translation is 66% complete.
Outdated translations are marked like this.
Shared uploads: $wgForeignFileRepos
Külső tárhelyek struktúrájának tömbje.
Bevezetve:1.11.0 (r22580)
Eltávolítva:használatban
Megengedett értékek:(tömb)
Alapértelmezett érték:(lásd alább)

Részletek

  Figyelem: A Wikimédia Commons használatakor a hivatkozásoknál kötelező a HTTPS alkalmazása. A Wikimédia Alapítvány minden HTTP-forgalmat HTTPS-re irányít át; biztonsági okokból a MediaWiki-szoftver ezeket nem követi (lásd: task T102566).

A megoldás a HTTPS használata a Wikimédia Commons URL-jeiben! A $wgUseInstantCommons alkalmazása esetén a MediaWiki 1.25.2 vagy újabb verziókban a probléma meg lett oldva. Ha a Wikimédia Commonshoz a $wgForeignFileRepos használatával egyedi beállításokat definiáltál, az URL-eket ezeknek megfelelően kell módosítanod!

Minden tárhelyhez szükséges tulajdonságok

class
A tárhely osztályneve; a szoftver vagy egy kiterjesztés határozza meg. Az alapértelmezett osztálynevek: LocalRepo, ForeignDBRepo, FileRepo és ForeignAPIRepo.
name
A tárhely egyedi neve.

Minden alapértelmezett tárhelyhez

url
Nyilvános gyökér URL
thumbUrl
Bélyegképek gyökér URL-je, ha az URL/thumbtól eltér
hashLevels
A fájlok hash-sel számított elosztásához tartozó könyvtárak szintjeinek száma
thumbScriptUrl
A thum.php URL-je (opcionális, nem ajánlott)
transformVia404
A média-átalakítás kihagyása értelmezés során, és helyette HTTP 404-es hibakezelő használata.
initialCapital
Megegyezik a $wgc-szel; meghatározza, hogy a fájlneveknek nagybetűvel kell-e kezdődniük. A jelenlegi implementációban a leírólapokon problémákat okozhat, ha a $wgc és az initialCapital nem egyezik.
pathDisclosureProtection
Értékei: 'paranoid' – minden paraméter törlése a hibaüzenetekből; 'none' – az útvonalak változatlanul hagyása; 'simple' – az útvonalak felülírása helykitöltőkkel. A LocalRepo alapértelmezése a 'simple'. Megjegyzés: egyes bélyegkép-létrehozó szoftverek a fájl útvonalát a létrejött állomány metaadataiban rögzítik, így ezen beállítás lehet, hogy nem biztosít kellő védelmet.
descBaseUrl
A kép-leírólapok URL-je, például https://hu.wikipedia.org/wiki/Fájl:
scriptDirUrl
A MediaWiki-telepítés URL-je; a $wgScriptPath -szel megegyezik, például: https://en.wikipedia.org/w
articleUrl
A $wgArticlePath -szel megegyezik, például: https://en.wikipedia.org/wiki/$1
fetchDescription
A távoli leírólap szövegét importálja; megegyezik a $wgFetchCommonsDescriptions -szel.
  Figyelem: A MediaWiki egy bugja miatt a külső wiki $wgUploadPath paraméterének teljes, vagy protokoll-relatív (de nem általánosan relatív) URL-t kell tartalmaznia, máskülönben a távoli leírólapok nem töltődnek be helyesen.
descriptionCacheExpiry
0 érték esetén a gyorsítótárazás le lesz tiltva. 1-nél magasabb érték (másodpercben) megadja a leírólapok gyorsítótárának tárolási idejét. Működéséhez a fetchDescription „true” értéke szükséges.

ForeignAPIRepo-osztályok

apibase
A távoli tárhely API-jának gyökér URL-je (például https://commons.wikimedia.org/w/api.php). Csak a ForeignAPIRepo által használt.
apiThumbCacheExpiry
A bélyegképek helyi gyorsítótárazásának hossza. Üresen hagyása vagy 0 értéke letiltja a bélyegképek helyi gyorsítótárazását. Local thumb caching will reduce load on the foreign server, and improve user privacy. However it may cause your wiki to be slightly slower.

ForeignDBRepo-osztályok

directory
A MediaWiki médiakönyvtárának helyi útvonala a szerveren, például /var/www/wiki/images.
dbType, dbServer, dbUser, dbPassword, dbName, dbFlags
megegyezik a $wgDBservers vonatkozó tagjával.
tablePrefix
Táblaelőtag, a külső wiki $wgDBprefix -e.
hasSharedCache
Értéke legyen „true”, ha a wiki megosztott gyorsítótára a helyi $wgMemc-en át elérhető.
favicon
A távoli tárhely faviconja.

Alapértelmezett érték (az includes/SetupDynamicConfig.php-ban rögzítve):

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,
		];
	}
}

ForeignDBViaLBRepo-osztályok

wiki
a wiki adatbázisának $wgLBFactoryConf által használt neve

Könyvtár-jogosultságok

A PHP által használt felhasználónak 'rw' jogosultság szükséges az $IP/images és $IP/images/thumbs könyvtárak esetében.

Használat

MediaWiki-verzió:
1.31

A Wikimédia Commons fájljainak használata: ForeignAPIRepo

Az 1.16.0 verzió óta egy kényelmesebb módszer is rendelkezésre áll a Commons külső tárhelyként való használatára, a $wgUseInstantCommons .

A beállítással a wiki a Wikimédia Commonsról, vagy bármely más MediaWiki-oldalról (lásd alább) használhat fájlokat, azonban vedd figyelembe a jogi szabályokat.

Használatához a következő szükséges:

  • MediaWiki 1.13 +
  • PHP JSON-támogatással (a json_decode() funkcióhoz). A JSON a PHP 5.2.0 óta alapértelmezésben engedélyezve van; régebbi verziók esetén a PECL kiterjesztést kell beszerezned. A MediaWiki 1.16 óta erre nincs szükség; ha nem elérhető a JSON, a szoftver egy egyéni (és lassabb) megoldást fog alkalmazni.
  • A távoli wikin legalább a MediaWiki 1.13 megléte szükséges, máskülönben annak api.php állománya {"error":{"code":"iiunknown_iiprop","info":"Unrecognised values for parameter 'iiprop'"}} hibaüzenetet fog visszaküldeni, és a fájlkérések csendben sikertelenek lesznek (például a kért állományok nemlétezőként lesznek kezelve).

Az alábbi kód engedélyezi a Wikimédia Commonsról származó fájlok használatát; a részletet a LocalSettings.php-ba kell másolnod:

$wgForeignFileRepos[] = [
	'class' => ForeignAPIRepo::class,
	'name' => 'commonswiki', // Must be a distinct name
	'apibase' => 'https://commons.wikimedia.org/w/api.php',
	'hashLevels' => 2,
	'fetchDescription' => true, // Optional
	'descriptionCacheExpiry' => 43200, // 12 hours, optional (values are seconds)
    'apiMetadataExpiry' => 14400, // 4 hours, optional. Consider increasing for better performance.
	'apiThumbCacheExpiry' => 86400, // 24 hours, optional, but required for local thumb caching (Note local thumb caching is often slower than not doing it)
];
Ha a kódrészlet LocalSettings.php-ba másolása mellett döntesz a $wgUseInstantCommons használata helyett, a name paraméter értékeként nem használhatod a wikimediacommons-t, mivel az már szerepel a Setup.php-ban.

Más Wikimédia-projektről származó képek megjelenítéséhez az apibase értékének a forráswiki api.php-jére kell mutatnia, például: https://en.wikipedia.org/w/api.php. Példa.

$wgForeignFileRepos[] = [
	'class' => ForeignAPIRepo::class,
	'name' => 'enwikipedia',
	'apibase' => 'https://en.wikipedia.org/w/api.php',
	'hashLevels' => 2,
	'fetchDescription' => true,
	'descriptionCacheExpiry' => 43200,
	'apiThumbCacheExpiry' => 86400,
];

Képek beágyazásához használd a [[File:Commons_kep_neve.jpg]] kódot.

Performance

A működéshez szükséges lehet még a $wgMainCacheType konfigurálása is. Ennek alapértelmezett értéke CACHE_NONE, ezáltal a távoli képet minden laplekéréskor tölti le. Ugyanígy, a távoli bélyegképek használatához az apiThumbCacheExpiry értéke legyen 0. The default for apiMetadataExpiry is 4 hours. This is one of the most impactful settings for performance. Consider setting to a really high value, such as 604 800 (1 week) for best performance. However this may mean that it can take up to that long for changes to the file to get to your wiki.

Setting $wgResponsiveImages = false; may improve performance of instant commons at the cost of making images be lower quality on high resolution displays.

Currently MediaWiki does not support pipelining foreign api requests. A high performance site may want to look at setting up a local proxy (like nginx) that can coalesce multiple requests into a single pipelined request to reduce round trip times from TCP & TLS handshakes.

There is also an alternative implementation at Extension:QuickInstantCommons which may be much faster

Fájlok használata egy általad hozzáférhető adatbázisból: ForeignDBRepo, ForeignDBViaLBRepo

A ForeignDBRepo wikicsaládok létrehozásakor hasznos, mely esetben minden wikinek saját adatbázis-előtagja van. Az osztály használatával egy wiki felismerheti a családtagjának tábláit. A ForeignDBRepón át történő hozzáférés a ForeignAPIRepónál gyorsabb; beállítása a LocalSettings.php-ban szükséges. This code should be deployed to LocalSettings.php.

$wgForeignFileRepos[] = [
	'class' => ForeignDBRepo::class,
	'name' => 'otherwiki',
	'url' => "https://example.org/w/images",
	'directory' => '/path/to/uploads',
	'hashLevels' => 2, // This must be the same for the other family member
	'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
];

Alternatív megoldásként a $wgLBFactoryConf több wikihez való beállítása esetén használhatod a 'class' => 'ForeignDBViaLBRepo'-t:

$wgForeignFileRepos[] = [
	'class' => ForeignDBViaLBRepo::class,
	'wiki' => 'wiki-db-name-used-with-wgLBFactoryConf',
	'name' => 'otherwiki', # displayname (eg. the vector-skin-tab “View on OtherWiki“) may be set at wiki-specific MediaWiki:Shared-repo-name-<otherwiki>
	'url' => 'https://example.org/w/images',
	'directory' => '/path/to/uploads',
	'hashLevels' => 2, # This must be the same for the other family member
	'tablePrefix' => 'mw_',
	'hasSharedCache' => false,
	'fetchDescription' => true,
	'scriptDirUrl' => 'https://example.org/w', # has effect whether description can be fetched
];

Ehhez nem szükséges a ForeignDBRepo összes db* paramétere.

Fájlok használata helyi könyvtárból: FileRepo

A wikidet egy könyvtárból való fájlhasználathoz is konfigurálhatod; ez csak bemutatási célokat szolgál, és nagyobb wikik vagy lassú szerverek esetén a gyorsítótárazás hiánya miatt teljesítménybeli problémákat okozhat. Az engedélyezéshez másold be az alábbi kódot a LocalSettings.php-ba:

Az alábbi kód engedélyezi az onnan származó médiafájlok felhasználását:

$wgForeignFileRepos[] = [
	'class' => FileRepo::class,
	'name' => 'sharedFsRepo',
	'directory' => 'media',
	'hashLevels' => 0,
	'url' => 'https://shared.example.org/path/to/media',
];

Caveats

For optimal performance, use a wiki whose primary purpose is to serve as a commons as the target of $wgForeignFileRepos. Avoid, for instance, pointing two content wikis at each other as foreign repositories in order to share files between them, because this will generate an excessive number of file requests on page views and edits as both wikis request the file from each other.

Likewise, avoid sharing a database between the commons wiki and other content wikis, especially if you must use ForeignAPIRepo instead of ForeignDBRepo due to limitations imposed by your service provider or administrator. This generates a large number of potentially long-lived database connections that can result in impaired performance, or can exceed DB connection limits even on wikis with very little traffic or activity.

Lásd még