MediaWiki/Extensions
미디어위키 확장은 미디어위키를 원하는 목적에 맞게 사용하기 위해 필요한 추가적인 기능을 더해주는 것입니다.
각 확장은 그것의 목적을 달성하기 위해 작성되므로, 복잡성이 다양합니다. 간단한 확장은 추가적인 설정없이 소스를 정해진 위치에 풀고, 확장을 로딩함으로써 설치가 끝납니다. 반면에 보다 복잡한 확장은 소스를 정해진 위치에 추가하는 것 외에 해당 디렉토리로 이동해서 필요한 라이브러리를 설치하는 과정이 필요할 수 있고, 원하는 동작을 위해, 추가적인 설정이 필요할 수 있습니다.
이런 것들은 미디어위키 사이트에서 관련된 정보를 찾을 수 있습니다. 예를 들어, 인터위키(Interwiki) 확장에 대한 정보를 얻고 싶으면, 미디어위키 사이트에서 Extension:Interwiki로 검색하면, 만약 있다면, 해당 페이지로 이동합니다.
그 외에도 미디어위키를 기반으로 운영되는 사이트, 단체, 또는 개인이 추가적인 확장을 만들어서 사용하는 경우가 있습니다. 이들 정보는 개별적인 사이트에서 정보를 찾을 수 있습니다.
한편, 미디어위키 처음 사용자들은 어떤 확장이 자신에게 필요한지, 또는 필수적인지 알 수가 대체로 없습니다. 이런 목적으로, 검색을 통해 필수적인 확장을 찾을 수도 있지만, 대체로 원하는 기능인지 확신하기 힘들고 복잡한 확장은 설정이 까다로울 수 있습니다.
경험적으로 보자면, 미디어위키 사이트에서 주로 확장을 찾을 수 있었고, 현재 운영중인 미디어위키 기반 사이트에서 원하는 기능을 발견할 수 있었습니다. 만약 미디어위키로 운영되는 사이트, 예를 들어, 영문 위키피디아의 설치된 확장을 확인하고 싶다면, w:Special:Version의 Installed extensions 섹션을 보십시오. 만약 이 위키에서 이전에 검토, 사용되었거나, 사용중인 확장을 보고 싶다면, Category:Extensions을 보십시오.
묶음 확장
미디어위키는 안정 버전이 제공될 때, 묶어서 같이 제공되는 몇 개의 확장이 있습니다. 미디어위키-1.36 버전에서는 다음 확장이 기본적으로 제공됩니다. 이들 확장 중에서, 아래의 주석 처리한 LocalisationUpdate와 OATHAuth를 제외하고는 대체로 위키를 운영하는데 도움이 됩니다.
wfLoadExtension( 'CategoryTree' );
wfLoadExtension( 'Cite' );
wfLoadExtension( 'CiteThisPage' );
wfLoadExtension( 'CodeEditor' );
wfLoadExtension( 'ConfirmEdit' );
wfLoadExtension( 'Gadgets' );
wfLoadExtension( 'ImageMap' );
wfLoadExtension( 'InputBox' );
wfLoadExtension( 'Interwiki' );
#wfLoadExtension( 'LocalisationUpdate' );
wfLoadExtension( 'MultimediaViewer' );
wfLoadExtension( 'Nuke' );
#wfLoadExtension( 'OATHAuth' );
wfLoadExtension( 'PageImages' );
wfLoadExtension( 'ParserFunctions' );
wfLoadExtension( 'PdfHandler' );
wfLoadExtension( 'Poem' );
wfLoadExtension( 'Renameuser' );
wfLoadExtension( 'ReplaceText' );
wfLoadExtension( 'Scribunto' );
wfLoadExtension( 'SecureLinkFixer' );
wfLoadExtension( 'SpamBlacklist' );
wfLoadExtension( 'SyntaxHighlight_GeSHi' );
wfLoadExtension( 'TemplateData' );
wfLoadExtension( 'TextExtracts' );
wfLoadExtension( 'TitleBlacklist' );
wfLoadExtension( 'VisualEditor' );
wfLoadExtension( 'WikiEditor' );
추천 확장
- 수식 표현: Math 확장, 다른 설정없이 기본값을 제공할 경우는 위키미디어에서 제공된 RESTBase, Mathoid를 사용해서 수식을 랜더링할 것입니다. 가능한 로컬에서 RESTBase와 Mathoid를 설치해서 사용하십시오.
- 검색 개선: AdvancedSearch, Elastica, CirrusSearch, 설치 전에 Elasticsearch를 먼저 설치해야 하고, CirrusSearch에 대한 문서를 읽고 설정을 해야 합니다.
- 에디터 개선: Extension:CodeMirror, Extension:CharInsert
- 토론 개선 : Extension:Echo, Extension:Flow, Extension:CheckUser, Extension:cldr, 및 Extension:Thanks
- 도움말 개선: Extension:GrowthExperiments, 설치 후에 Preferences->Editing에서 Enable the editor help panel를 활성화해야 하고, 설정을 일부 변경해야 합니다.
- 모바일 지원: Extension:MobileFrontend
- 관련글 보이기: Extension:RelatedArticles
- 익명성 개선: Extension:TorBlock, 가짜 ip로 편집하는 것을 막는 것으로써, 설치 후에 추가적인 설정이 대체로 필요합니다.
- 템플릿 개선: Extension:TemplateData, Extension:TemplateSandbox, Extension:TemplateStyles, Extension:TemplateWizard
- 스크립팅 언어 지원: Extension:Scribunto, php-luasandbox
시각 편집기는 미디어위키 처음 사용자에게 보다 쉬운 편집 환경을 제공하기 위해 도입할 필요가 있습니다. 이에 필요한 환경을 위키미디어 재단의 것을 사용하면 비교적 쉽게 설정이 되지만, 서비스의 속도 품질 향상을 위해 로컬에서 환경을 제공할 때에는 잘 작동하지 않을 수 있습니다.
이제, 미디어위키 알파 버전 1.39.0-wmf.28에서 테스트된 결과를 제공하고자 합니다.
이미, 위의 데비안 설치 문서의 내용을 적용한 후로 가정하고, 다음 3개의 파일을 수정해 볼 수 있습니다:
- /etc/nginx/site-available/default
- /usr/local/lib/restbase/config.yaml
- /var/www/html/w/LocalSettings.php
먼저, Nginx의 설정에서 restbase 관련 설정에서 localhost를 자신의 도메인, 예를 들어, 이 서버에서 dawoum.duckdns.org으로 바꿉니다.
# 서버 블록 위에
upstream restbase {
server dawoum.duckdns.org:7231;
keepalive 32;
}
map $request_uri $restbasequery {
default "xx";
"~/api/rest_v1/(?<xrestbasequery>.*)$" "$xrestbasequery";
}
# 서버 블록 내에
location /api/rest_v1/ {
proxy_pass http://restbase/dawoum.duckdns.org/v1/$restbasequery;
}
다음으로, RESTBase의 설정에서 parsoid의 host 부분을 웹 서버의 설정을 따릅니다. 이때, 프로토콜도 http인지 https인지 정확히 적도록 하십시오. 그런-다음, 전체 도메인을 localhost 도메인과 함께, 위에서 지정한 도메인을 추가합니다:
parsoid:
host: https://dawoum.duckdns.org/w/rest.php
paths:
/{domain:localhost}: *default_project
/{domain:dawoum.duckdns.org}: *default_project
마지막으로, 미디어위키 설정에서 일부를 수정합니다:
$parsoidInstallDir = 'vendor/wikimedia/parsoid'; # bundled copy
if ( $parsoidInstallDir !== 'vendor/wikimedia/parsoid' ) {
AutoLoader::registerNamespaces( [
'Wikimedia\\Parsoid\\' => "$parsoidInstallDir/src",
] );
}
wfLoadExtension( 'Parsoid', "$parsoidInstallDir/extension.json" );
# Manually configure Parsoid
$wgVisualEditorParsoidAutoConfig = false;
$wgParsoidSettings = [
'useSelser' => true,
'rtTestMode' => false,
'linting' => false,
];
$wgVirtualRestConfig['modules']['parsoid'] = [
'url' => 'https://dawoum.duckdns.org/w/rest.php',
# 'domain' => 'dawoum.duckdns.org',
];
unset( $parsoidInstallDir );
$wgVirtualRestConfig['modules']['restbase'] = [
'url' => "http://dawoum.duckdns.org:7231",
'domain' => 'dawoum.duckdns.org',
'forwardCookies' => false,
'parsoidCompat' => false,
];
이렇게 설정하더라도 동작하지 않을 수 있으며, 오류 메시지를 확인해서 대처하십시오.
Troubleshootings
- Parsoid 확장 로드
- 위의 시각 편집기 설정에서 위와 같이 Parsoid 확장을 로드하면, php 명령을 실행하는 것에서 다음 오류가 발생할 수 있습니다. 여기서 확인하십시오.
PHP Fatal error: Uncaught Exception: Unable to open file vendor/wikimedia/parsoid/extension.json: filemtime(): stat failed for ...
- 아래와 같이 수정하면, 발생하지 않을 것입니다:
- wfLoadExtension( 'Parsoid', __DIR__ . "/$parsoidInstallDir/extension.json" );