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

미디어위키(Mediawiki) 1.35 의 주요 특징과 설치 조건

씨실과 날실 2021. 4. 22. 09:00

 

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

제가 미디어위키 관련 연재를 처음 시작한 지 약 2년하고도 5개월만에 새로운 LTS 버전인 미디어위키 1.35에 대한 연재를 시작하게 되었습니다.

사실 미디어위키 1.35는 2020년 9월 25일에 첫 번째 판이 공개되었습니다. 그러나 그때는 새로 출시된 우분투 20.04에 맞춰 이전 서버 구축 연재 때보다 더 자세하고 친절한 내용을 담는 것을 목표로 서버 구축 연재를 시작하고 있었기에 미디어위키 관련 새 연재는 다음으로 미룰 수밖에 없었습니다. 미디어위키 연재는 서버 구축 관련 연재 만큼이나 방대한 양을 다루어야 합니다. 이 커다란 프로젝트를 동시에 두 개를 진행하기에는 제 주변 환경과 깜냥이 부족하다 여겼기 때문입니다.

이제 서버 관련 연재의 큰 언덕 하나를 넘은 것 같아 서버 관련 연재는 잠시 쉬고 미디어위키 1.35버전 관련 연재를 시작하고자 합니다.

제가 미디어위키 1.35 관련 연재를 시작할 때는 미디어위키 1.35의 두  번째 마이너 업그레이드자 보안 패치판인 Mediawiki 1.35.2 LTS가 릴리즈된 시점입니다. 따라서 이 버전을 기준으로 연재를 진행하겠습니다.

제 글이 미디어위키를 설치하고 운용하고자 하는 분들께 조금이나마 도움이 되기 바랍니다.

 

미디어위키(Mediawiki) 1.35 LTS 의 주요 특징

2021년 4월 1일자로 미디어위키의 로고 이미지가 바뀌게 되었습니다.

미디어위키의 옛 로고는 다양성, 꾸준한 성장 그리고 야생이라는 세 가지 관념을 상징하는 해바라기를 이미지한 것으로 15년 전 채택되어 지금까지 쓰여 왔습니다. 

 

그러나 해당 이미지는 이제 구식이 되었고 여러 문제가 발견되었습니다.

 

가장 먼저 기존 로고 이미지는 비트맵 파일로 만들어져 크기를 확대하면 이미지가 꺠집니다.

두 번째로 기존 이미지는 현싫의 해바라기 꽃 모양을 상당히 단순화하여 만들기는 했지만 그 역시 복잡한 편이어서 작은 크기에서는 해당 이미지를 온전히 표현하지 못하고 변형 등이 어렵습니다.

 

이러한 문제들을 피하기 위해 현대 산업 디자인은 회사나 제품의 로고를 개발할 때 보다 단순하고 추상적인 이미지를 채택하곤 합니다.

 

미디어위키는 위 링크의 글을 보면 알 수 있듯 약 1년간의 치열한 논의와 투표 그리고 법적 절차를 거쳐 현재의 새 로고로 변경되었습니다.

 

이번에 변경된 새 로고는 미디어위키 엔진으로 구축된 위키미디어 프로젝트 모음을 의미합니다. 그리고 각 꽃잎은 우리가 지원하는 많은 위키 중 하나를 의미합니다. 또한 명시적인 핵심이 없는 이 새 로고 이미지는 위키미디어/미디어위키 역시 이러한 프로젝트의 일부임을 보여주고자 함입니다.

 

MediaWiki의 새로운 로고는 또한 진화가 멈추지 않겠다는 의지를 담고 있으며, 꽃의 꽃잎처럼 각 프로젝트의 발전과 마찬가지로 미디어위키 엔진으로 구축된 각 커뮤니티의 성장은 다른 모든 사람들의 성장 발판이 되어줄 것이라는 것을 담기도 합니다.

 

 

미디어위키의 새로운 로고의 가이드라인은 위 링크를 참고 하시기 바랍니다.

 

미디어위키 새 로고에 대한 보다 자세한 내용은 위 링크를 참고하시기 바랍니다.

 

미디어위키(Mediawiki) 1.35 LTS 의 설치 조건

예전에 미디어위키 1.31 LTS 버전을 연재할 때는 설치 조건에 대해 간략하게 설명했습니다만 이번에는 설치 조건(시스템 요구 조건)을 최대한 자세히 설명하도록 하겠습니다.

미디어위키 설치 필수 조건

웹서버

PHP

데이터베이스 서버

웹서버

미디어위키는 요청된 페이지를 클라이언트의 브라우저에 제공하기 위해 웹서버를 사용합니다.

미디어위키는 기본 웹서버로 Apache2를 사용합니다. 그 이유는 미디어위키 개발의 목적이 된 위키피디아의 웹서버가 Apache2입니다. 따라서 미디어위키의 개발과 유지보수의 주 지원 서버 대상 역시 Apache2가 될 수밖에 없습니다.

 

그렇다고 웹서버로 Apache2만을 지원하는 것은 아닙니다. NgineX 서버도 지원하며 이외에 IIS, lighttpd, LiteSpeed, Cherokee, Hiawatha, Caddy도 기본적인 테스트를 마쳤습니다.

미디어위키 공식 사이트에서는 위와 같이 많은 웹서버에서의 작동 여부를 마친 것으로 말하고 있습니다만 개인적으로 미디어위키를 제대로 활용하고 문제 발생 시 관련 정보 및 해결 방법을 보다 쉽게 얻을 수 있는 Apache2, NgineX, IIS 서버를 웹서버로 사용하실 것을 권장하며 그중에서도 위키피디아의 주 웹서버인 Apache2를 사용하시는 것을 권장합니다.

 

PHP

PHP는 미디어위키 개발에 사용된 주 프로그래밍 언어입니다. 따라서 미디어위키를 실행하기 위해서는 서버에 PHP가 설치되어 있어야 합니다.

미디어위키 1.35 LTS는 최소한 PHP 7.3.19이상의 버전이 필요하며 이때 유의할 점은  해당 버전들 중에 PHP 7.4.0~7.4.2들은 자체의 업스트림 버그로 인해 미디어위키와 호환되지 않습니다.

따라서 가능하면 PHP 7.4.3 이상을 사용하실 것을 강력히 권장합니다.

 

필수 PHP 익스텐션

미디어위키는 기본적인 실행을 위해 PHP 그 자체가 필요하지만 그외에 미디어위키 기본 프로그램 또는 미디어위키 스킨 및 익스텐션이 제공하는 부가 기능을 제대로 지원하기 위해 일부 PHP 익스텐션도 설치되어 활성화되어 있어야 하는 경우가 있습니다.

필수 PHP 익스텐션

Perl Compatible Regular Expressions (PCRE) : https://www.php.net/pcre (MediaWiki 1.23 requires PCRE 7.2+)
session : https://www.php.net/sessions
spl : https://www.php.net/spl 
openssl : https://www.php.net/openssl
json : https://www.php.net/json   (MediaWiki 1.22+)
mbstring : www.php.net/mbstring  (required since 1.27, recommended for earlier versions)
fileinfo : https://www.php.net/fileinfo

 

Perl Compatible Regular Expressions (PCRE)

펄 호환 정규표현식을 지원케 하는 익스텐션입니다.

미디어위키 1.23의 경우 PCRE 7.2 이상의 버전을 요구합니다.

 

session

사이트 방문자에게 고유의 세션 ID를 부여하여 사용자의 쿠키 파일에 저장하거나 특정 URL에 전달하여 해당 사용자가 추후에 다시 방문하는 경우 이전의 사용 환경, 정보 등을 제공해주는 것을 지원해주는 익스텐션입니다.


spl

표준 PHP 라이브러리 (SPL)로, 일반적인 문제를 해결하기 위한 각종 인터페이스 및 클래스 모음입니다.

 

openssl

대칭 및 비대칭 암호화 및 복호화, PBKDF2, PKCS7, PKCS12, X509 및 기타 암호화 작업을 위한 OpenSSL 라이브러리의 기능과 TLS 스트림 구현 기능 등을 제공합니다.


json 

데비안/우분투 : php-json / php7.4-json

JSON (JavaScript Object Notation) 데이터 교환 포맷의 구현을 지원하는 익스텐션입니다.

미디어위키 1.22 이상 버전부터 요구됩니다.


mbstring 

데비안/우분투 : php-mbstring / php7.4-mbstring

멀티바이트 문자 인코딩 체계를 원활히 지원하기 위해 개발된 익스텐션입니다.

이 익스텐션은 미디어위키 1.27 이후 부터는 필수 요구 사항이고 1.26이전 버전은 권장됩니다.


fileinfo 

파일 내용의 형식과 인코딩 유형을 추측하는 익스텐션입니다.

미디어위키 1.30 이후 버전부터 요구됩니다.

 

사실 이상의 PHP 익스텐션들은 PHP를 일반적인 방법으로 설치하면 기본적으로 함께 설치되어 자동으로 활성화됩니다.

 

PHP intl 

MediaWiki의 설치 프로그램은 유니코드 정규화를 처리하기 위한 PHP intl 익스텐션이 없는 경우 경고 메시지를 출력합니다. 물론 이것을 설치하지 않는다고 해서 미디어위키를 설치하지 못하는 것은 아니지만 설치하는 것을 권장합니다.

데비안/우분투 : php-intl

데비안/우분투 계열의 경우 위 패키지를 설치하면 됩니다.

 

 

PHP OpenSSL

근래는 https 프로토콜을 통한 접속을 구축하므로 PHP OpenSSL 익스텐션의 설치도 권장됩니다.

 

OpenSSL Library

위 라이브러리를 설치하려면 openssl 그리고 이왕 관련된 종속 패키지들을 설치하시기 바랍니다.

해당 패키지 설치 방법은 위 링크를 참고하시기 바랍니다.

 

참고로 아래 링크를 참고하시기 바랍니다.

 

 

php-mysql

데비안/우분투 : php-mysql 

MediaWiki가 MySQL/MariaDB를 사용하도록 하려면 데비안/웁ㄴ투 계열 OS의 경우 위 패키지를 설치합니다.


기타
MediaWiki 익스텐션에는 추가 PHP 기능이 필요할 수 있습니다.따라서 각 익스텐션별 요구조건을 확인하여 필요한 패키지들을 설치해주시기 바랍니다.

예를 들어 시각편집기(VisualEditor)의 경우는 libcurl 지원(Debian/Ubuntu 기반 배포판의 경우 php-curl 패키지가 필요합니다.

 

시스템에 설치된 PHP 익스텐션(모듈) 확인 방법

컴파일된 PHP 모듈 목록

study@study-VirtualBox:~$ php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
FFI
fileinfo
filter
ftp
gd
gettext
hash
iconv
imagick
imap
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
pspell
readline
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
xsl
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache

study@study-VirtualBox:~$

 

로드된 PHP 익스텐션 배열

study@study-VirtualBox:~$ php -r "print_r(get_loaded_extensions());"
Array
(
    [0] => Core
    [1] => date
    [2] => libxml
    [3] => openssl
    [4] => pcre
    [5] => zlib
    [6] => filter
    [7] => hash
    [8] => pcntl
    [9] => Reflection
    [10] => SPL
    [11] => session
    [12] => standard
    [13] => sodium
    [14] => mysqlnd
    [15] => PDO
    [16] => xml
    [17] => bcmath
    [18] => bz2
    [19] => calendar
    [20] => ctype
    [21] => curl
    [22] => dom
    [23] => mbstring
    [24] => FFI
    [25] => fileinfo
    [26] => ftp
    [27] => gd
    [28] => gettext
    [29] => iconv
    [30] => imagick
    [31] => imap
    [32] => intl
    [33] => json
    [34] => exif
    [35] => mysqli
    [36] => pdo_mysql
    [37] => Phar
    [38] => posix
    [39] => pspell
    [40] => readline
    [41] => shmop
    [42] => SimpleXML
    [43] => sockets
    [44] => sysvmsg
    [45] => sysvsem
    [46] => sysvshm
    [47] => tokenizer
    [48] => xmlreader
    [49] => xmlrpc
    [50] => xmlwriter
    [51] => xsl
    [52] => zip
    [53] => Zend OPcache
)
study@study-VirtualBox:~$

 

데이터베이스(DB - Database) 서버(Server)

미디어위키는 모든 정보를 DB에 저장합니다. 따라서 미디어위키를 운용하기 위해서는 DB 서버가 필요합니다.

미디어위키는 현재 4가지 DB를 지원합니다.

미디어위키 지원 DB

MySQL 5.5.8+* 또는 MariaDB 5.1+
PostgreSQL 9.2+
SQLite 3

예전에는 Oracle DB나 Microsoft SQL Server 등도 지원했었습니다. 그러나 현재는 Oracle DB의 경우 DB 프로그램 자체의 버그로 인해 지원을 하지 않고 있으며 Microsoft SQL Server의 경우 Microsoft SQL Server 2008 R2 이상의 LTS 버전에 한하여 제한적으로만 지원되고 있습니다.

 

권장 LAMP 서버 및 부가 소프트웨어

미디어위키는 위키미디어 재단이 위키피디아를 포함해 여러 프로젝트들을 운영하기 위해 고안된 프로그램입니다. 따라서 미디어위키를 안정적으로 운영하고 보다 쉽게 유지 보수하기 위해서는 위키피디아가 채택하고 있는 소프트웨어를 참고하는 것이 좋습니다.

 

현재 위키피디아가 채택하고 있는 소프트웨어는 다음과 같습니다.

현재 위키피디아가 채택하고 있는 소프트웨어

[필수]

운영체제(OS) : Debian(기본 OS) / Ubuntu(일부 구형 서버)

웹서버(Web Server) : Apache2 HTTP Server

PHP : PHP 7

데이터베이스(DB) 백엔드 : MariaDB(주 DB) / MySQL 동시 사용

 

[대규모 서버 구축을 위한 추가 소프트웨어]

일반 웹 요청 캐싱 프록시 서버 : Varnish

데이터베이스 쿼리 캐싱 및 계산 : Memcached

도메인 네임 서버 : gdnsd

 

[이용]

유니코드 지원 라이브러리 : ICU

전체 텍스트 검색 : Elasticsearch(extension:CirrusSearch)

미디어위키 내 모듈 호출 위한 프로그래밍 언어 : Lua

비신뢰 Lua 5.1 코드 안전 실행 : LuaSandbox

악보 제작 프로그램 : LilyPond

 

 

위는 위키피디아에서 사용하는 미디어위키 버전 문서 링크입니다.

 

이외에도 여러 소프트웨어를 사용합니다.자세한 내용은 아래 링크를 참고하시기 바랍니다.

 

이상은 자신이 서버를 직접 구축해 미디어위키를 제대로 운영할 때의 조건들입니다.

만약 미디어위키의 구축의 주 목적이 외부 사용자를 위한 서비스 제공이 아니라 지극히 개인적인 목적이거나 사ㅛㅇ자가 극소수인 경우 XAMPP 같은 서버 구축 꾸러미 프로그램을 사용하는 것도 좋습니다. 

그러나 미디어위키의 다양한 서드파티 익스텐션 기능을 활용하려면 본격적으로 서버 구축하는 것을 권장합니다.

 

 

개인 미디어위키 구축을 위한 권장 사양

개인 및 소규모 미디어위키 사이트 구축을 위한 권장 사양

OS : Ubuntu 20.04 LTS

웹서버 : Apache2 HTTP Server

PHP : PHP 7.4.3 이상

DB : MariaDB 10.4 이상

저는 개인이 미디어위키 1.35 LTS 설치 및 운영을 위한 기본 서버 소프트웨어 사양으로 위 내용을 권장합니다.

미디어위키는 여러 OS를 지원하는 크로스플랫폼이지만 위키미디어가 데비안 계열 서버를 운영하는 만큼 미디어위키 역시 아무래도 데비안 계열 OS를 보다 잘 지원하고 유지보수를 위한 각종 정보 역시 다른 OS를 위한 정보도 존재하지만 아무래도 데비안 계열을 위한 정보가 더 많고 또 깊은 편입니다.

그러나 리눅스 초심자인 경우 데비안을 곧바로 다루기에는 어려운 편입니다. 따라서 리눅스 또는 서버 구축 초보자인 경우 데비안과 잘 호환되면서도 일반 사용자 친화적인 우분투를 OS로 선택해 사용하는 것을 권장합니다.

 

웹서버로는 위키미디어에서 사용하는 아파치2 서버를 권장합니다. 미디어위키는 다른 웹서버도 지원하게끔 개발되지만 위키미디어에서 아파치 서버를 기반으로 위키를 구동하므로 개발과 유지보수의 중심과 우선순위 역시 아파치 서버에 맞춰져 있는 편입니다.

더구나 웹서버의 시장점유율도 아파치가 다른 웹서버를 압도하므로 문제가 발생했을 경우 해결책을 찾기도 더 유리합니다.

 

PHP는 현재 PHP 8이 릴리즈되었지만 아직 충분한 검증이 이루어지지 않았습니다. 게다가 각 리눅스 배포판들의 공식 저장소 역시 아직 PHP7을 지원할 뿐 아직 PHP8을 올리지는 않고 있습니다.

미디어위키 측은 공식적으로 PHP 7.3.19이상의 버전이 필요하다고 밝히고 있으며 이때 주의할 점은 PHP 7.4.0~7.4.2들은 자체의 업스트림 버그로 인해 미디어위키와 호환되지 않는다는 점입니다. 따라서 안정적인 유지보수를 위하여 가능하면 PHP 7.4.3 이상을 사용하실 것을 강력히 권장합니다.

 

미디어위키는 공식적으로 총 4가지 DB를 지원하지만 미디어위키 사이트 내 기술 문서의 전반적인 내용을 훑어보면 그중에서도 MySQL과 MariaDB를 권장하는 편으로 보입니다.

그런데 위키미디어가 주 사용 DB로 MariaDB를 채택해 사용하는 것을 보면 MySQL보다는 MariaDB를 사용하는 것이 앞으로의 유지보수 측면에서 더 유리할 것으로 보입니다.

MariaDB는 5.1 이상 상ㅇ할 것을 이야기하고 있습니다만 현재 위키피디아는 10.4를 사용하고 있습니다.

저 역시 가능하면 MariaDB 10.4 이상을 권장하는데 그 이유는 10.4 버전부터 계정 인증과 관련하여 꽤 큰 변화가 있었기 때문입니다.

 

미디어위키 1.35 LTS 설치 및 운영 관련 연재에 사용할 환경

OS : Ubuntu 20.04.2 LTS

웹서버 : Apache2 HTTP Server

PHP : PHP 7.4.3

DB : MariaDB 10.5

저는 앞으로의 미디어위키 1.35 LTS 관련 연재에 위 사양을 기준으로 연재를 진행할 것입니다.

 

 

권장 시스템 하드웨어

미디어위키 설치 및 운용 위한 최소사양

조건 - 단일 컴퓨터 웹사이트(업로드 비활성화)

RAM : 256MB

Storage : 85MB

그러나 이것은 어디까지나 미디어위키를 처음 기본 설치하여 구동되는 것을 확인할 수 있는 최소한의 조건에 불과합니다.

기본적으로 제공되는 스킨 및 익스텐션 외에 추가 스킨 및 익스텐션을 설치하고 파일 업로드 기능을 활성화하며 DB에 많은 정보가 저장될 것으로 예상되는 경우 저장장치의 용량은 당연히 다다익선입니다.

그리고 단일 컴퓨터 서버로 중소규모 웹사이트를 운영할 경우 개인적으로 RAM은 최소 1GB 이상이어야 운활한 운영이 가능할 것입니다. 물론 방문자 수가 굉장히 많아 트래픽이 많이 유발되고 동시 접속자 수가 많은 경우 CPU의 성능과 RAM의 용량 역시 높아져야 할 것은 당연한 것이며 규모가 어느 지점을 넘어가면 로드밸런싱 등을 구축해야할 것입니다.

 

그러나 우리는 이 미디어위키를 개인 홈서버에 구축하거나 웹호스팅을 받아 구축할 것이므로 시스템 하드웨어 사양에 대해서는 크게 신경을 쓰지 않아도 될 것입니다.

 

기본 설치가 아닌 개발자 설치의 경우 설치 크기를 약 50MB로 줄일 수 있으며, 비개발자 최종 사용자 설치의 경우 약 26MB로 줄일 수 있습니다.

해당 방법은 위 링크를 참고하시기 바랍니다.

그렇지만 비개발자의 경우 설치 용량을 줄여 설치하는 것은 그다지 권장하지 않습니다.

설치 용량을 줄여 설치해야할 정도의 환경 또는 조건이라면 위키 엔진으로 미디어위키를 사용하기 보다는 도쿠위키 등을 사용하는 것을 권장합니다.

 

 

미디어위키가 제공하는 기본 기능을  위한 추가 종속성 패키지

이미지 미리보기(Image thumbnailing)

데비안/우분투 : imagemagick 또는 php-gd

이미지 썸네일 즉, 임지 미리보기를 활성화하려면 ImageMagick 또는 GD 필요합니다.