미디어위키/미디어위키 설치 및 관리

Git으로 미디어위키(Mediawiki) 1.35 LTS 설치 - 익스텐션 및 스킨 설치

씨실과 날실 2021. 5. 7. 09:00

안녕하세요. 씨실과 날실입니다.

지난 번에는 Git으로 미디어위키를 설치 및 버전 관리하는 방법에 대해 알아보았습니다.

이번에는 미디어위키의 하위 모듈이자 서드파티 영역인 스킨과 익스텐션를 추가로 설치하는 방법에 대해 알아보도록 하겠습니다.

여기서는 미디어위키 측에서 제공하는 저장소를 통해 배포 및 관리 되고 있는 스킨과 익스텐션을 위주로 설명합니다.

미디어위키 측에서 관리되지 않고 개별적으로 개발자 또는 개발팀에 의해 유지보수되고 있는 스킨과 익스텐션의 경우도 깃 저장소의 주소 형태만 다를 뿐 적용 방법은 같으므로 이번 글을 참고하시면 되겠습니다.

 


익스텐션 설치

여기서는 MsWikiEditor 익스텐션을 Git으로 설치해보도록 하겠습니다.

MsWikiEditor 익스텐션의 공식 소개 패이지는 위와 같습니다.

다른 익스텐션들도 설치 방법은 대동소이 합니다.

 

일반적인 익스텐션 설치

study@study-VirtualBox:~$ cd /var/www/html/w/extensions
study@study-VirtualBox:/var/www/html/w/extensions$ 

미디어위키의 익스텐션 디렉터리로 이동합니다.

 

study@study-VirtualBox:/var/www/html/w/extensions$ sudo git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/MsWikiEditor --branch REL1_35
[sudo] study의 암호: 
'MsWikiEditor'에 복제합니다...
remote: Total 367 (delta 0), reused 367 (delta 0)
오브젝트를 받는 중: 100% (367/367), 117.28 KiB | 201.00 KiB/s, 완료.
델타를 알아내는 중: 100% (203/203), 완료.
study@study-VirtualBox:/var/www/html/w/extensions$ 

미디어위키 측에서 관리되는 익스텐션 복제 주소는 아래 두 주소를 사용할 수 있습니다.

https://gerrit.wikimedia.org/r/mediawiki/extensions/익스텐션명 

https://github.com/wikimedia/mediawiki-extensions-익스텐션명.git

 

study@study-VirtualBox:/var/www/html/w/extensions$ cd ..
study@study-VirtualBox:/var/www/html/w$ sudo nano LocalSettings.php

미디어위키 디렉터리에 있는 LocalSettings.php 파일을 열어 아래와 같이 익스텐션 로드 구문을 추가해줍니다.

wfLoadExtension( 'MsWikiEditor' );

위 형식의 구문은 구문 현대화가 적용된 코드입니다.

require_once "$IP/extensions/MsWikiEditor/MsWikiEditor.php";

구버전의 미디어위키를 사용하는 경우(구 버전의 기준은 익스텐션별로 달라질 수 있음) 위와 같은 코드를 사용합니다.

 

일반적으로 여기까지가 모든 익스텐션들의 공통 과정이고, 익스텐션별로 추가 작업이 필요한 경우가 있습니다.

 

$wgMSWE_add['date'] = [ 'Current date', date( 'Y-m-d' ), '', '', 'extensions/MsWikiEditor/images/date.png' ];
$wgMSWE_add['gallery'] = [ 'Gallery', '<gallery>\\n', 'File:Example1.jpg|Caption1\\nFile:Example2.png|Caption2\\n', '</gallery>', 'extensions/MsWikiEditor/images/gallery.png' ];
$wgMSWE_add['strike'] = [ 'Strike', '<strike>', 'Text', '</strike>', 'extensions/MsWikiEditor/images/strike.png' ];
$wgMSWE_add['email'] = [ 'Email', '[mailto:', 'address@domain.com', ']', 'extensions/MsWikiEditor/images/email.png' ];
$wgMSWE_add['mslink'] = [ 'MsLink', '{{#l:', 'Filename.ext', '}}', 'extensions/MsWikiEditor/images/link.png' ];
$wgMSWE_add['template'] = [ 'Your template', '{{Your template|', 'Parameters', '}}', 'extensions/MsWikiEditor/images/template.png' ];
$wgMSWE_add['signature'] = [ 'Signature', '--~~~~', '', '', 'extensions/MsWikiEditor/images/signature.png' ];
$wgMSWE_add['attention'] = [ 'Attention', '{{Attention|', 'Text', '}}', 'extensions/MsWikiEditor/images/attention.png' ];

이 글에 예시로 사용된 MsWikiEditor의 경우 위와 같은 추가 설정 코드가 추가되는 것처럼 각 익스텐션별로 추가 설정 코드를 삽입해주어야 하는 경우가 있습니다.

 

어떤 익스텐션들은 다른 익스텐션의 설치를 필요로 하는 경우가 있습니다.

예를 들어 StructuredDiscussions(= 구 Flow)익스텐션의 경우, 필수적으로 Echo, ParserFunctions 익스텐션이, 옵션으로 BetaFeatures, CLDR, VisualEditor, CheckUser, Thanks, EventLogging, AbuseFilter, SpamBlacklist, ConfirmEdit 익스텐션이 요구됩니다.

 

이외에 익스텐션이 아니라 각종 리눅스 패키지들이 필요한 경우도 있습니다.

예를 들어 PdfBook 익스텐션의 경우 htmldoc 패키지가 필요합니다.

 

때에 따라서는 어떤 익스텐션을 설치해 사용하기 위해서는 미디어위키 DB 테이블의 확장 업데이특 필요한 경우도 있습니다.

$ so php maintenance/update.php

그런 경우 미디어위키 디렉터리에서 위 명령을 실행하여 미디어위키 DB를 업데이트해주어야 합니다.

 

MsWikiEditor 3.2 (a8189e9) 2020년 7월 10일 (금) 16:34

미디어위키 1.35 버전에서 Git으로 MsWikiEditor 익스텐션을 설치하면 특수:버전 페이지에서 위와 같은 정보를 확인할 수 있습니다.

 


미디어위키 버전 변경 시 익스텐션 재설치

아래의 내용의 생략된 설명의 대부분은 아래 링크의 글에 존재합니다.

 위 글을 읽어보시고 아래 과정을 진행하시면 이해가 쉬우실 겁니다.

 

미디어위키 현재 DB 백업 및 이전 버전 임포트

$ cd ~
$ mysqldump -h localhost -u root -p --default-character-set=binary my_wiki > backup_mw1.35.sql
$ mysqladmin -u root -p drop my_wiki
$ mysqladmin -u root -p create my_wiki
$ mysql -u root -p my_wiki < backup_mw1.31.sql

 

LocalSettings.php 파일 내용 편집

$ cd /var/www/html/w
$ sudo nano LocalSettings.php

 

불필요한 코드 주석처리

# wfLoadExtension( 'PageImages' );
# wfLoadExtension( 'Scribunto' );
# wfLoadExtension( 'SecureLinkFixer' );
# wfLoadExtension( 'TemplateData' );
# wfLoadExtension( 'TextExtracts' );
# wfLoadExtension( 'VisualEditor' );

# wfLoadExtension( 'MsWikiEditor' );

# $wgMSWE_add['date'] = [ 'Current date', date( 'Y-m-d' ), '', '', 'extensions/MsWikiEditor/images/date.png' ];
# $wgMSWE_add['gallery'] = [ 'Gallery', '<gallery>\\n', 'File:Example1.jpg|Caption1\\nFile:Example2.png|Caption2\\n', '</gallery>', 'extensions/MsWikiEditor/images/gallery.png' ];
# $wgMSWE_add['strike'] = [ 'Strike', '<strike>', 'Text', '</strike>', 'extensions/MsWikiEditor/images/strike.png' ];
# $wgMSWE_add['email'] = [ 'Email', '[mailto:', 'address@domain.com', ']', 'extensions/MsWikiEditor/images/email.png' ];
# $wgMSWE_add['mslink'] = [ 'MsLink', '{{#l:', 'Filename.ext', '}}', 'extensions/MsWikiEditor/images/link.png' ];
# $wgMSWE_add['template'] = [ 'Your template', '{{Your template|', 'Parameters', '}}', 'extensions/MsWikiEditor/images/template.png' ];
# $wgMSWE_add['signature'] = [ 'Signature', '--~~~~', '', '', 'extensions/MsWikiEditor/images/signature.png' ];
# $wgMSWE_add['attention'] = [ 'Attention', '{{Attention|', 'Text', '}}', 'extensions/MsWikiEditor/images/attention.png' ];

 

불필요한 익스텐션 디렉터리 삭제

$ cd extensions
$ sudo rm -rf PageImages Scribunto SecureLinkFixer TemplateData TextExtracts VisualEditor
$ sudo rm -rf MsWikiEditor

 

미디어위키 버전 체크아웃

$ cd ..
$ sudo git checkout 1.31.14
$ sudo git submodule update --init --recursive
$ sudo php maintenance/update.php

 

체크아웃한 버전에 맞춰 익스텐션 재복제

$ cd extensions
$ sudo git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/MsWikiEditor --branch REL1_31

 

LocalSettings.php 파일 내용 편집

$ cd ..
$ sudo nano LocalSettings.php

 

주석처리했던 코드 재활성화

wfLoadExtension( 'MsWikiEditor' );

$wgMSWE_add['date'] = [ 'Current date', date( 'Y-m-d' ), '', '', 'extensions/MsWikiEditor/images/date.png' ];
$wgMSWE_add['gallery'] = [ 'Gallery', '<gallery>\\n', 'File:Example1.jpg|Caption1\\nFile:Example2.png|Caption2\\n', '</gallery>', 'extensions/MsWikiEditor/images/gallery.png' ];
$wgMSWE_add['strike'] = [ 'Strike', '<strike>', 'Text', '</strike>', 'extensions/MsWikiEditor/images/strike.png' ];
$wgMSWE_add['email'] = [ 'Email', '[mailto:', 'address@domain.com', ']', 'extensions/MsWikiEditor/images/email.png' ];
$wgMSWE_add['mslink'] = [ 'MsLink', '{{#l:', 'Filename.ext', '}}', 'extensions/MsWikiEditor/images/link.png' ];
$wgMSWE_add['template'] = [ 'Your template', '{{Your template|', 'Parameters', '}}', 'extensions/MsWikiEditor/images/template.png' ];
$wgMSWE_add['signature'] = [ 'Signature', '--~~~~', '', '', 'extensions/MsWikiEditor/images/signature.png' ];
$wgMSWE_add['attention'] = [ 'Attention', '{{Attention|', 'Text', '}}', 'extensions/MsWikiEditor/images/attention.png' ];

 

MsWikiEditor 3.1 (bf64dca) 2021년 1월 2일 (토) 14:56

작업을 마치고 특수:버전 페이지를 다시금 확인해보면 MsWikiEditor 익스텐션 정보가 위와 같이 바뀐 것을 확인할 수 있습니다.

 

스킨 설치

스킨의 설치 방법은 익스텐션과 동일합니다.

여기서는 Mordern 스킨을 설치하는 방법을 예시로 들어 진행합니다.

자세한 설명은 생략하고 진행 과정만 나열했습니다.

 

study@study-VirtualBox:/var/www/html/w$ cd skins
study@study-VirtualBox:/var/www/html/w/skins$ sudo git clone https://gerrit.wikimedia.org/r/mediawiki/skins/Modern --branch REL1_35
[sudo] study의 암호: 
'Modern'에 복제합니다...
remote: Counting objects: 4, done
remote: Finding sources: 100% (4/4)
remote: Getting sizes: 100% (3/3)
remote: Compressing objects: 100% (5099/5099)
remote: Total 1494 (delta 0), reused 1492 (delta 0)
오브젝트를 받는 중: 100% (1494/1494), 654.34 KiB | 166.00 KiB/s, 완료.
델타를 알아내는 중: 100% (1041/1041), 완료.
study@study-VirtualBox:/var/www/html/w/skins$ 

 

study@study-VirtualBox:/var/www/html/w/skins$ cd ..
study@study-VirtualBox:/var/www/html/w$ sudo nano LocalSettings.php

 

## Default skin: you can change the default skin. Use the internal symbolic
## names, ie 'vector', 'monobook':
# $wgDefaultSkin = "vector";
$wgDefaultSkin = "Modern";

# Enabled skins.
# The following skins were automatically enabled:
wfLoadSkin( 'MonoBook' );
wfLoadSkin( 'Timeless' );
wfLoadSkin( 'Vector' );
wfLoadSkin( 'Modern' );