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

미디어위키(Mediawiki) 업그레이드 - 1.31.1 → 1.32

씨실과 날실 2019. 3. 18. 10:00


[작업환경]

가상머신 : VirtualBox 6.04

OS : Ubuntu 18.04.2

Apache2 : Apache/2.4.29 (Ubuntu)

PHP7 : 7.2.15-0ubuntu0.18.04.1

MariaDB : mysql  Ver 15.1 Distrib 10.3.12-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

phpMyAdmin : phpMyAdmin 4.6.6deb5

미디어위키(Mediawiki) 업그레이드 방법에 대하여 안내해드리고자 합니다.

글은 미디어위키 1.31.1에서 1.32로 업그레이드하는 것을 기준으로 작성되었으며 이후의 업그레이드도 미디어위키의 큰 변화가 없다면 이 글을 참고하시면 되겠습니다. 미디어위키의 버전 업에 따른 주소 변경 등은 추후 업데이트하도록 하겠습니다.

[안내]

이하의 내용은 위키의 업그레이드 과정을 보여드리고자 적은 내용입니다. 만약 업그레이드하실 분들은 이 글을 참고하시면 되겠습니다.

그러나 이 글 이후에 연재될 위키 관련 내용은 업그레이드 된 1.32를 기준으로 하지 않고 LTS 버전인 1.31버전을 기준으로 진행하도록 하겠습니다.

이유는 위키를 안정적으로 운영하기 위해서는 장기 지원하는 LTS 버전이 위키를 유지보수하는데 유리하기 때문입니다.

여러분들께도 LTS인 1.31.1 버전을 추천드립니다.

기본 개요

요구 사항 확인

릴리스 정보 읽기

기존 파일 및 데이터베이스 백업

새 파일의 압축 해제.

업그레이드 확장

업데이트 스크립트를 실행하여 데이터베이스 확인

업데이트 테스트

위키의 대략적인 업그레이드 과정은 위와 같습니다.

이 중 릴리즈 정보는 위키 업그레이드를 하기 전 꼭 확인해주시기 바랍니다.

요구 사항

MediaWiki 1.32 요구 사항 :

PHP 7.0.13 이상

DB (택 1)

   MySQL 5.5.8 이상 (또는 동등한 MariaDB )
   PostgreSQL 9.2 이상
   SQLite 3.3.7 이상
   Oracle 9.0.1 이상

자세한 내용은 관련 게시물을 참고하시기 바랍니다.

PHP 7.3은 미디어위키 1.31에서 compact(): Undefined variable 이슈가 있습니다. 1.32에서는 해당 이슈가 생기지 않는 것으로 보입니다만 안정적인 유지보수를 위하여 PHP 7.2 를 사용하시기 바랍니다.

DB의 경우는 원활한 유지보수를 위하여 MySQL 이나 MariaDB를 사용하시기를 바랍니다.

보류 중인 작업 제거

업그레이드를 수행하기 전에 보류 중인 작업들을 모두 실행하여 작업 대기열을 비울 필요가 있습니다.

study@study-VirtualBox:~$ cd /var/www/html/w/maintenance
study@study-VirtualBox:/var/www/html/w/maintenance$ php runJobs.php
study@study-VirtualBox:/var/www/html/w/maintenance$ 

maintenance는 위키의 유지보수를 위한 파일들이 모여 있는 디렉토리입니다.

.php 파일을 실행하기 위해서는 앞에 php를 붙여 주어야 합니다.

기존 파일 및 DB 백업

DB 백업(MySQL or MariaDB)

백업은 두 파일 형식으로 가능합니다.

SQL 파일

study@study-VirtualBox:~$ cd ./다운로드 study@study-VirtualBox:~/다운로드$ mysqldump --user root --password my_wiki > wiki_backup.sql Enter password: study@study-VirtualBox:~/다운로드$

XML 파일

study@study-VirtualBox:~/다운로드$ mysqldump --user root --password my_wiki --xml > wiki_backup.xml
Enter password: 
study@study-VirtualBox:~/다운로드$

--user 바로 뒤에 위키 DB를 관리하는 DB 관리 아이디를 적어주시면 됩니다.

--password 바로 뒤에 위키 DB명을 적어주시면 됩니다.

> 뒤에 생성되는 백업 파일 이름을 적어주시면 됩니다.

.xml 파일로 백업할 경우 --xml 옵션을 붙여주셔야 합니다.

 위키 내용 백업(XML)

study@study-VirtualBox:~$ cd /var/www/html/w/maintenance
study@study-VirtualBox:/var/www/html/w/maintenance$ sudo su
[sudo] study의 암호: 
root@study-VirtualBox:/var/www/html/w/maintenance# php dumpBackup.php --full > /home/study/다운로드/wiki_dump.xml
2019-03-17 10:27:20: my_wiki-w (ID 4623) 36 pages (855.5|855.5/sec all|curr), 75 revs (1782.3|1782.3/sec all|curr), ETA 2019-03-17 10:27:20 [max 75]
root@study-VirtualBox:/var/www/html/w/maintenance# exit
exit
study@study-VirtualBox:/var/www/html/w/maintenance$ ls ~/다운로드
LocalSettings.php                           nextcloud-sqlbkp_20190115.bak
kboard-comments-wordpress-plugin-4.4.6.zip  nextcloud.sql
kboard-wordpress-plugin-5.3.11.zip          w-1.31.tar.gz
mediawiki-1.31.1.tar.gz                     wiki_dump.xml
nextcloud-14.0.3.tar.bz2                    wordpress-5.0.3-ko_KR.tar.gz
nextcloud-15.0.2.tar.bz2
study@study-VirtualBox:/var/www/html/w/maintenance$ 
위키 내용을 xml 파일로 덤프 받으실 분은 sudo su 명령을 실행하여 root 권한을 획득한 후 dumpBackup.php 파일을 실행해주셔야 합니다.

만약 그냥 php dumpBackup.php를 실행하시거나 sudo php dumpBackup.php를 실행하는 경우 권한이 없어 실행되지 않습니다.

--full 옵션은 전체 내용을 덤프받는 옵션입니다. 여기서 주의할 점은  이 --full 옵션이 사용자 계정, 이미지, 편집 로그 등을 포함되지 않는다는 겁니다. 위키가 생산한 모든 DB 정보를 내려 받기 위해서는 위키 DB 전체를 덤프해야 합니다.

> 뒤에 생성할 백업 파일의 위치와 이름을 적어주시면 딥니다.

위키 디렉토리 및 파일 압축 백업

study@study-VirtualBox:~$ cd /var/www/html
study@study-VirtualBox:/var/www/html$ sudo tar -zcvf ~/다운로드/w-1.31.tar.gz w
w/composer.json
w/LocalSettings.php
w/profileinfo.php
study@study-VirtualBox:/var/www/html$ ls ~/다운로드
LocalSettings.php                           nextcloud-15.0.2.tar.bz2
kboard-comments-wordpress-plugin-4.4.6.zip  nextcloud-sqlbkp_20190115.bak
kboard-wordpress-plugin-5.3.11.zip          nextcloud.sql
mediawiki-1.31.1.tar.gz                     w-1.31.tar.gz
nextcloud-14.0.3.tar.bz2                    wordpress-5.0.3-ko_KR.tar.gz
study@study-VirtualBox:/var/www/html$ 

tar -zxvf 생성위치/파일명.tar.gz 압축할 디렉토리명 이렇게 적어 실행해주시면 됩니다.

참고로 압축할 디렉토리를 적을 때 절대경로로 적으면 경고를 하며 자동으로 /를 제거한 채 압축하게 됩니다.

기존 디렉토리 이름 변경

study@study-VirtualBox:/var/www/html$ ls
index.html  nextcloud  nextcloud_old  phpinfo.php  w  wp
study@study-VirtualBox:/var/www/html$ sudo mv w w-1.31.1
study@study-VirtualBox:/var/www/html$ ls
index.html  nextcloud  nextcloud_old  phpinfo.php  w-1.31.1  wp
study@study-VirtualBox:/var/www/html$  

기존 디렉토리와 파일들은 가능하면 rm 명령어로 지우지 마시고 mv 명령어로 이름을 바꿔 보관해주시기 바랍니다.

만약 업그레이드 도중이나 이후에 문제가 생겨 원상복구할 필요가 있을 때 필요하기 때문입니다.

물론 tar 명령어를 이용해 전체 내용을 묶거나 묶어 압축할 수 있지만 이러한 행위는 언제나 내용이 깨질 위험성을 내포하고 있기 때문입니다.

미디어위키 새 버전 파일 설치

새 버전 미디어위키 다운로드

Mediawiki 1.32

study@study-VirtualBox:~$ cd ./다운로드
study@study-VirtualBox:~/다운로드$ wget https://releases.wikimedia.org/mediawiki/1.32/mediawiki-1.32.0.tar.gz
study@study-VirtualBox:~/다운로드$ study@study-VirtualBox:~/다운로드$ 

미디어위키 최신 버전의 주소는 미디어위키 공식 사이트 내 최신 버전 다운로드 링크 주소를 복사함으로써 알 수 있습니다.

압축 풀기 & 디렉토리명 변경

study@study-VirtualBox:~/다운로드$ sudo  tar -xvzf mediawiki-1.32.0.tar.gz -C /var/www/html
study@study-VirtualBox:~/다운로드$ cd /var/www/html
study@study-VirtualBox:/var/www/html$ ls
index.html        nextcloud      phpinfo.php  wp
mediawiki-1.32.0  nextcloud_old  w-1.31.1
study@study-VirtualBox:/var/www/html$ sudo mv mediawiki-1.32.0 w
study@study-VirtualBox:/var/www/html$

압축을 풀 땐 tar -xvzf 압축을 풀 파일 -C 압축을 풀 위치 명령어를 실행해주시면 됩니다.

-C는 tar 명령어에서 압축 해제 위치 지정 옵션입니다.

디렉토리 퍼미션 및 소유권 확인 및  변경

위키 디렉토리 퍼미션 및 소유권 확인

study@study-VirtualBox:~$ cd /var/www/html
study@study-VirtualBox:/var/www/html$ ls -dl w
drwxr-xr-x 14 root root 4096  3월 17 19:56 w
study@study-VirtualBox:/var/www/html$ 
 

drwxr-xr-x는 디렉토리 여부와 퍼미션(권한) 정보를 보여주는 것입니다.,

소문자 의미 - 퍼미션 값

d : 디렉토리

r : 읽기 - 2의 2승 = 4

w : 쓰기 - 2의 1승 = 2

x : 실행 - 0 or 1

권한 정보

d 다음은 3자리씩 끊어집니다.

소유자의 권한 / 집단 권한 / 손님 권한 이렇게 나뉩니다.

d / rwx / r-x / r-w

위 정보를 퍼미션값으로 변환해보면 아래와 같이 됩니다.

4+2+1 / 4+1 / 4+1 = 755

이미지 디렉토리 소유권 및 퍼미션 변경

study@study-VirtualBox:/var/www/html/w$ sudo chown -R www-data:www-data images
[sudo] study의 암호: 
study@study-VirtualBox:/var/www/html/w$ sudo chmod 0755 images
study@study-VirtualBox:/var/www/html/w$ 

chown은 change owner의 약자로 소유권 변경 명령어입니다.

chmod는 change mode의 약자로 퍼미션 변경 명령어입니다.

LocalSettings.php 복사

study@study-VirtualBox:~$ cd /var/www/html/w-1.31.1
study@study-VirtualBox:/var/www/html/w-1.31.1$ sudo cp LocalSettings.php /var/www/html/w
[sudo] study의 암호: 
study@study-VirtualBox:/var/www/html/w-1.31.1$ cd /var/www/html/w
study@study-VirtualBox:/var/www/html/w$ ls
CODE_OF_CONDUCT.md  api.php                     languages
COPYING             autoload.php                load.php
CREDITS             cache                       maintenance
FAQ                 composer.json               mw-config
Gruntfile.js        composer.local.json-sample  opensearch_desc.php
HISTORY             docs                        profileinfo.php
INSTALL             extensions                  resources
LocalSettings.php   images                      skins
README              img_auth.php                tests
RELEASE-NOTES-1.32  includes                    thumb.php
SECURITY            index.php                   thumb_handler.php
UPGRADE             jsduck.json                 vendor
study@study-VirtualBox:/var/www/html/w$ 

기존 위키에서 LocalSettings.php 파일을 백업해뒀다가 미디어위키 새 버전 압축 파일을 푼 디렉토리에 복사해줍니다.

Skin 및 Extension 다운로드

업그레이드할 버전에 맞는 스킨과 익스텐션들을 다운받아 각각 skins과 extensions 디렉토리에 풀어줍니다.

주요 스킨들은 Skin Distributor(https://www.mediawiki.org/wiki/Special:SkinDistributor)에서 다운받을 수 있습니다.

마찬가지로 주요 익스텐션들은 Extension Distributor(https://www.mediawiki.org/wiki/Special:ExtensionDistributor)에서 다운받을 수 있습니다.

만약 의존성이 걸린 익스텐션의 경우, 각 익스텐션별 안내에 따라 개별 작업들을 추가로 해주시기 바랍니다.

업그레이드 전 위키에 접속하는 경우

MediaWiki internal error.

Original exception: [24자리 영숫자 코드] 2019-03-17 11:30:23: Fatal exception of type "MediaWiki\Revision\RevisionAccessException"

Exception caught inside exception handler.

Set $wgShowExceptionDetails = true; at the bottom of LocalSettings.php to show detailed debugging information.

업그레이드 과정을 진행하기 전에 미디어위키에 접속하면 위와 같은 문구가 나옵니다.

셸 명령 업데이트

업그레이드 방법은 두 가지가 있습니다. 터미널에서 위키의 update.php파일을 실행시키는 방법과 웹브라우저에서 위키의 config 디렉토리에 접속하여 GUI로 업그레이드를 진행하는 것입니다.

셸 액세스 권한이 있다면 터미널에서 업그레이드하는 것을 추천합니다. 브라우저를 통한 업그레이드는 서버의 설정에 따라 시간 초과 혹은 연결 재설정 등으로 업그레이드 과정이 중단될 수 있기 때문입니다.

아래 처럼 위키의 maintenance 디렉토리에 들어가 update.php 파일을 실행해주시면 됩니다.

문제가 없다면 아래와 같이 진행될 것입니다.

study@study-VirtualBox:~$ cd /var/www/html/w/maintenance
study@study-VirtualBox:/var/www/html/w/maintenance$ php update.php
MediaWiki 1.32.0 Updater

Your composer.lock file is up to date with current dependencies!
Going to run database updates for my_wiki-w
Depending on the size of your database this may take a while!
Abort with control-c in the next five seconds (skip this countdown with --quick) ... 0
Turning off Content Handler DB fields for this part of upgrade.

... 중략 ...

Purging caches...done.

Done in 4.9 s.
study@study-VirtualBox:/var/www/html/w/maintenance$ 
 

브라우저를 통한 업그레이드

셸 접근 권한이 없는 경우 웹브라우저로 위키의 mw-config 디렉토리에 접속하여 업그레이드를 진행합니다.

언어 설정

사용할 언어를 선택해줍니다.

업그레이드 키 입력

LocalSettings.php 파일 안에 아래와 같은 문구가 있습니다.

# Site upgrade key. Must be set to a string (default provided) to turn on the
# web installer while LocalSettings.php is in place
$wgUpgradeKey = "16자리 영숫자 업그레이드 키";

16자리 영숫자 업그레이드 키를 찾아 복사해 입력해주시면 됩니다.

사용 환경 검사, 저작권 및 약관 안내

새로 설치 과정과 비슷합니다.

기존 설치 업그레이드

계속 → 버튼을 눌러줍니다.

기존 설치 업그레이드 진행 완료

설치 완료 후 위키를 시작 링크를 눌러줍니다. 그러면 아래와 같이 위키에 접속할 수 있습니다.

위키 접속

무사히 업그레이드가 완료되면 위와 같이 정상적으로 접속할 수 있습니다.

버전 확인

업그레이드한 위키의 버전 정보를 확인해봅시다.

우 ㅣ키 검색 상자에서 특수:버전을 검색합니다. 그러면 아래와 같이 위키와 관련한 전반적인 내용을 확인할 수 있습니다.

접속 불가 오류 발생 시

작업 완료 후 만약 위키에 접속할 수 없다면 대부분 LocalSetting.php 안의 스킨 내지 익스텐션 설정 정보와 위키 디렉토리 내 스킨 내지 익스텐션 정보가 불일치한 경우가 대부분입니다.

예를 들어 특정 스킨이나 익스텐션이 LocalSettings.php 파일에는 설정되어 있는데 위키 디렉토리에는 해당 스킨 또는 익스텐션이 설치되어 있지 않은 경우가 그 예입니다.

양쪽의 스킨과 익스텐션의 정보를 일치시켜 주면 문제가 해결될 것입니다.

혹은 LocalSetting.php 안의 구문 오류가 존재해서 접속이 안되는 경우가 있습니다. 그 대표적인 예가 구문 종결 표시인 ;(세미콜론)이 빠진 경우가 있습니다.

후기

원래는 미디어위키의 모바일 접속 환경 구축을 다루려고 했습니다만 미디어위키 1.32가 나온 지 꽤 되었기에 이것을 먼저 다루어야겠다는 생각이 들었습니다.

미디어위키의 업그레이드 과정은 초심자 분들에게 다른 다른 CMS에 비해 까다로운 편입니다. 이 까다로운 업그레이드 때문에 최신 버전을 써보고 싶지만 못하신 분들이 계실 것 같아 업그레이드 내용을 먼저 다루게 되었습니다.

사실 이 내용은 보시면 아시다시피 내용이 꽤 많습니다. 따라서 나누어서 연재할 수도 있었지만 작업 흐름이 한번에 쭉 이어져 내용을 나누지 않고 하나의 글로 마무리하게 되었습니다.

모바일 접속 환경 구축은 보다 먼저 다루어야 할 내용이 있어 나중으로 미루게 되었습니다. 방문객 여러분듫의 양해 부탁드립니다.

이글 앞에서 이미 언급했습니다만 이후의 연재는 다시 1.31을 기준으로 진행하고자 합니다. 위키의 안정적인 유지보수를 위해서는 장기지원을 받을 수 있는 LTS 버전을 사용하는 것이 좋기 때문입니다.

제 연재가 다른 분들께 조금이나 도움이 되었으면 합니다.