Shared uploads: $wgForeignFileRepos | ||
An array of repository structure for foreign repositories. | ||
Introduced in version: | 1.11.0 (r22580) | |
Removed in version: | still in use | |
Allowed values: | (array) | |
Default value: | (see below) | |
Other settings: Alphabetical | By function |
Manual:Wiki family를 구성한 후에, 개인 위키에서 Extension:MultimediaViewer로 이미지를 볼 수 없는 문제로 이 설정을 살펴보았습니다.
Details
위키미디어 커먼즈를 사용할 때, 링크에 대해 HTTP 대신에 HTTPS를 사용하는 것이 요구됩니다. 2015년부터, 위키미디어 재단은 HTTP에서 HTTPS로 트래픽을 리다이렉션합니다. 보안상의 이유로, 미디어위키는 그러한 리다이렉션을 따르지 않습니다 (T102566를 참조하십시요). 해결책은 위키미디어 커먼즈에 대해 URL에서 HTTPS를 사용하는 것입니다! 만약 $wgUseInstantCommons를 사용하면, 이 문제는 미디어위키 1.25.2 이상을 사용함으로써 자동으로 수정됩니다. 만약 위키미디어 커먼즈에 대해 $wgForeignFileRepos를 갖는 사용자 설정을 정의했으면, URL은 그에 따라 반드시 조정되어야 합니다! |
Properties required for all repos
class 저장소에 대해 클래스 이름. 미디어위키 코어 또는 확장으로부터 올 수 있습니다. 코어 저장소 클래스는 LocalRepo, ForeignDBRepo, FileRepo 및 ForeignAPIRepo입니다. name 저장소에 대해 고유한 이름.
For all core repos
url 기본 공개 URL thumbUrl 기본 썸네일 url, 만약 url/thumb이 다르다면. hashLevels 파일의 해시-기반 분할에 대해 디렉토리 수준의 숫자 thumbScriptUrl (선택적, 비-추천) thumb.php에 대해 URL transformVia404 파서에서 미디어 파일 변환을 건너뛰고 대신에 404 핸들러를 사용할지 여부를 지정합니다. initialCapital $wgCapitalLinks와 동일하게, 파일 이름이 암시적으로 대문자로 시작하는지 여부를 결정합니다. 현재 구현은 로컬 $wgCapitalLinks 및 initialCapital이 일치하지 않을 때 부정확한 설명 페이지 링크를 제공할 것입니다. pathDisclosureProtection 오류 메시지에서 모든 매개변수를 제거하기 위해서 'paranoid', 경로를 변경하지 않고 남겨두기 위해 'none', 경로를 자리 표시자로 바꾸기 위해 'simple'이 될 수 있습니다. LocalRepo에 대해 기본값은 'simple'입니다. 일부 이미지 썸네일 소프트웨어는 썸네일 경로를 결과물인 썸의 메타데이터에 넣으므로, 이 설정은 완전한 보호를 제공하지 못할 수 있습니다. descBaseUrl 이미지 설명 페이지의 URL, 즉, https://en.wikipedia.org/wiki/File: scriptDirUrl 미디어위키 설치의 경로, $wgScriptPath와 같습니다. 즉, https://en.wikipedia.org/w articleUrl $wgArticlePath와 같은, 즉, https://en.wikipedia.org/wiki/$1 fetchDescription 원격 파일 설명 페이지의 텍스트를 가져옵니다. $wgFetchCommonsDescriptions와 같습니다.
미디어위키의 버그로 인해, 외래의 위키는 $wgUploadPath에서 전체, 또는 프로토콜-관련 (그러나 일반적으로 상대적은 아닌) url, 또는 적절하게 가져오지 못한 그들에 대해 이미지를 갖는 설명 페이지를 가져야 합니다. |
descriptionCacheExpiry 만약 0으로 설정하면, 캐싱이 사용되지 않을 것입니다. 설명 페이지의 로컬 캐시가 지속되는 시간을 정의하기 위해 1 이상 (초)으로 설정하십시오. 사용하기 위해 fetchDescription을 true로 반드시 설정해야 합니다.
ForeignAPIRepo class
apibase 원격 저장소의 API에 대해 기본 URL (즉: https://commons.wikimedia.org/w/api.php). 오직 ForeignAPIRepo에 대해 사용됩니다. apiThumbCacheExpiry 썸네일을 지역적으로 캐시하는 시간. 이것을 설정하지 않거나 0으로 설정하면 로컬 썸 캐싱을 비활성화합니다.
ForeignDBRepo class
directory /var/www/wiki/images와 같은, 로컬 서버에서 미디어위키의 미디어 디렉토리에 대한 경로. dbType, dbServer, dbUser, dbPassword, dbName, dbFlags $wgDBservers의 해당 구성원과 같습니다. tablePrefix 테이블 접두사, 외래 위키의 $wgDBprefix hasSharedCache 위키의 공유 캐시가 로컬 $wgMemc를 접근 가능하면 True favicon 원격 저장소에 대해 favicon
기본 값 (includes/Setup.php에서 코드):
if ( $wgUseSharedUploads ) {
if ( $wgSharedUploadDBname ) {
$wgForeignFileRepos[] = [
'class' => 'ForeignDBRepo',
'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',
'name' => 'shared',
'directory' => $wgSharedUploadDirectory,
'url' => $wgSharedUploadPath,
'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0,
'thumbScriptUrl' => $wgSharedThumbnailScriptPath,
'transformVia404' => !$wgGenerateThumbnailOnParse,
'descBaseUrl' => $wgRepositoryBaseUrl,
'fetchDescription' => $wgFetchCommonsDescriptions,
];
}
}
ForeignDBViaLBRepo class
wiki $wgLBFactoryConf에서 사용된 wiki-db-name
Directory permissions
어떤 사용자 php가 실행되더라도 $IP/images와 $IP/images/thumbs에 읽기-쓰기 권한이 필요합니다.
Usage
MediaWiki version: |
≥ 1.13
|
Using files from Wikimedia Commons : ForeignAPIRepo
위키에서 직접 (또는 임의의 다른 미디어위키-지원 사이트로부터, 아래를 참조하십시오) 위키미디어 커먼즈로부터 미디어를 사용하도록 설정할 수 있습니다. 어쨌든, 임의의 법적 영향을 주의하십시오.
이것을 사용하기 위해, 다음이 필요합니다:
- 미디어위키 1.13+
- JSON 지원과 함께 PHP (json_decode() 함수에 대해). PHP 5.2.0 이래로 JSON은 기본적으로 활성화되며, 이전 버전에 대해 PECL 확장이 필요할 것입니다. 미디어위키 1.16 이래로, 이것은 더 이상 필요하지 않습니다; 버전 1.16은 만약 JSON이 유용하지 않으면, 자체적인 것 (그리고 느린)을 사용할 것입니다.
- 원격 위키는 역시 미디어위키 1.13 이후를 반드시 사용해야 합니다; 그렇지 않으면 그의 api.php는 {"error":{"code":"iiunknown_iiprop","info":"Unrecognised values for parameter 'iiprop'"}}를 반환하고 파일 요청은 아무 말 없이 실패합니다 (즉, 요청된 파일은 단지 비-존재로 처리됩니다).
아래 코드는 여러분의 사이트에 대해 위키미디어 커먼즈로부터 미디어 파일을 활성화합니다. 그것을 "LocalSettings.php"파일에 넣어야 합니다.
$wgForeignFileRepos[] = [
'class' => 'ForeignAPIRepo',
'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)
'apiThumbCacheExpiry' => 86400, // 24 hours, optional, but required for local thumb caching
];
다른 위키미디어 프로젝트에서 이미지를 가져오기 위해, 이 위키의, 예를 들어 https://en.wikipedia.org/w/api.php와 같은, "api.php" 파일을 apibase에 설정하십시오. 예제:
$wgForeignFileRepos[] = [
'class' => 'ForeignAPIRepo',
'name' => 'enwikipedia',
'apibase' => 'https://en.wikipedia.org/w/api.php',
'hashLevels' => 2,
'fetchDescription' => true,
'descriptionCacheExpiry' => 43200,
'apiThumbCacheExpiry' => 86400,
];
설치에서 이미지를 포함하기 위해, 단순히 [[File:name_of_commons_picture.jpg]]을 사용하십시오.
Performance
마찬가지로 $wgMainCacheType를 구성할 필요가 있을 것입니다. 기본값은 종종 CACHE_NONE이며, 이것은 매우 느릴 수 있는 각 페이지 로드시 원격 호스트에서 이미지를 로드할 것임을 의미합니다. 유사하게, 만약 더 빠를 수 있는 외부 썸네일을 사용하기를 선호한다면 apiThumbCacheExpiry를 영으로 설정해야 합니다.
$wgResponsiveImages = false;를 설정하는 것은 고해상도 디스플레이에서 이미지 품질을 낮추는 대신 인스턴트 커먼즈의 성능을 향상시킬 수 있습니다.
현재 미디어위키는 외부 api 요청을 파이프라이닝을 지원하지 않습니다. 고성능 사이트는 TCP & TLS 핸드셰이크의 왕복 시간을 줄이기 위해 여러 요청을 단일 파이프라인 요청으로 통합할 수 있는 (nginx와 같은) 지역 프록시를 설정하기를 원할 수 있습니다.
Using files from a database that you can access : ForeignDBRepo, ForeignDBViaLBRepo
ForeignDBRepo 클래스는 위키 가족을 만드는 데 매우 유용합니다. 위키 가족에서, 각 위키는 그 자체 데이터베이스 또는 테이블 접두사가 있습니다. 이 클래스를 사용하여, 가족 구성원이 다른 가족 구성원의 테이블을 인식하게 할 수 있습니다. ForeignDBRepo를 통한 접근은 ForeignAPIRepo를 통한 접근보다 빠릅니다. 이 코드는 LocalSettings.php에 반드시 배포해야 합니다.
$wgForeignFileRepos[] = [
'class' => 'ForeignDBRepo',
'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
];
대안적으로, 만약 여러 위키에 대해 $wgLBFactoryConf를 설정했다면, 'class' => 'ForeignDBViaLBRepo'를 사용할 수 있습니다:
$wgForeignFileRepos[] = [
'class' => 'ForeignDBViaLBRepo',
'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
];
이것은 ForeignDBRepo에서 처럼 모든 db* 매개변수를 필요하지는 않습니다.
Using files from a local folder : FileRepo
위키를 하나의 폴더로부터 미디어를 사용하기 위해서 설정할 수 있습니다. 이것은 단지 현재 데모 기능 중 하나이고, 아마도 캐싱의 부족으로 기인해서 바쁜 위키 또는 느린 서버에 대해 매우 느릴 것입니다. 이 코드는 LocalSettings.php에 반드시 추가되어야 합니다.
아래 코드는 그것으로부터 미디어 파일을 활성화합니다:
$wgForeignFileRepos[] = [
'class' => 'FileRepo',
'name' => 'sharedFsRepo',
'directory' => 'media/',
'hashLevels' => 0,
'url' => 'https://shared.example.org/path/to/uploads/',
];
Caveats
최적의 성능에 대해, $wgForeignFileRepos의 타깃으로 커먼즈로 역할을 주요 목적으로 하는 위키를 사용하십시오. 예를 들어 각 다른 위키에서 두 개의 컨텐츠 위키를 그들 사이에 파일을 공유하기 위해 외래 저장소로 지정하는 것을 피하십시오. 왜냐하면 이것은 두 위키에서 서로 파일을 요청함으로써 페이지 보기와 편집에 대해 과도한 숫자의 파일 요청을 생성할 것입니다.
마찬가지로, 커먼즈 위키와 다른 컨텐트 위키 사이에 데이터베이스를 공유하는 것을 피하십시오. 특히 서비스 제공업체 또는 관리자에 의해 제한사항으로 기인하여 ForeignDBRepo 대신에 ForeignAPIRepo를 반드시 사용해야 한다면 특히 그렇습니다. 이것은 성능이 저하되거나 트래픽이나 활동이 거의 없는 위키에서도 DB 연결 제한을 초과할 수 있는 많은 숫자의 잠재적으로 오래가는 데이터베이스 연결을 생성합니다.
See also
- $wgLocalFileRepo
- Manual:Wiki family
- Manual:Configuring file uploads (mainly for local uploads)
- $wgUseInstantCommons (to automatically add commons to the file repository array)
- filerepoinfo API for getting information about the configuration of a repo, e.g. https://www.mediawiki.org/w/api.php?action=query&format=json&meta=filerepoinfo