미디어위키

미디어위키
MediaWiki-2020-logo.svg
소프트웨어 정보
개발 위키미디어 재단
종류 위키 소프트웨어
최신버전 버전 정보
1.40
상태 정상 운영 중
언어 다국어
운영체제 PHP 가능 환경
플랫폼 PHP 플랫폼
작성언어 PHP
라이선스 GPL v2+
웹사이트 mediawiki.org

미디어위키(MediaWiki)는 DB 시스템을 사용하는 위키 엔진의 일종이다. 위키백과를 비롯한 위키미디어 재단의 위키 프로젝트, 그리고 당신이 지금 보고있는 리브레 위키에서 사용하는 엔진이다. 위키미디어 재단에서 처음 개발하고 배포하는 설치형 위키 엔진으로 오픈 소스 위키 엔진에 PHP 기반, 라이선스는 GPL v2+를 사용한다.

특징[편집 | 원본 편집]

미디어위키를 사용하는 사이트에 달리는 배너

파일 기반이 아닌 데이터베이스를 사용하며, 그래서 문서 수가 많아도 속도 문제가 적다. 기본적으로 MySQL을 사용하나, PostgreSQL, SQLite, oracle도 사용 가능하고, MySQL과 호환되는 MariaDB도 사용 가능하다. 최신 버전인 1.3x대를 사용하기 위해서는 MySQL 5.5.8 이상(MariaDB는 5.1 이상) 과 PHP 7.0.13 이상이 필요하기 때문에(#) 국내에 웹호스팅에서 설치 불가능한 곳이 많으니 설치하려할시 사전에 확인이 필요하다. 국내 웹호스팅은 MySQL은 5.0.2 이상을 사용하는 곳이 많지만, PHP는 아직 5.2 버전대에 머물러 있는 곳이 많기 때문이다. 다행히 2015년 들어서는 XpressEngine이나 워드프레스 등의 메이저한 PHP 솔루션도 최하 지원이 5.3으로 올라감에 따라 PHP 버전을 올리는 호스팅이 느는 추세이기 때문에 이런 문제는 얼마 안 가 해결될 것이다. 만약 PHP 5.2 환경에서 써야 한다면 1.19 버전을 사용하면 되지만, 2015년 5월에 지원이 끝났으며 2017년 현재 와서 사용하려면 지원하지 않는 확장기능과 각종 버그를 스스로 고치거나 감수해야 한다.

미디어위키의 버전을 살펴보면 LTS(Long Term Support)라고 표기된 버전이 있는데, 이 버전은 다른 버전보다 지원기간이 길다. 일반 버전은 약 몇 개월이면 지원이 끝나지만, LTS라고 표기된 버전은 3~4년은 지원이 계속된다. 알파 버전은 미리보기 버전이며, 일반적인 방법으로 다운이 불가능하고 Git를 통해 받아야 한다.

최신 버전은 2023년 6월 3p일에 출시된 1.40.0이고, LTS 버전 중 최신은 1.39.4이다.

장점[편집 | 원본 편집]

대규모 프로젝트에 좋은 구조[편집 | 원본 편집]

위키 엔진이 파일 기반이 아닌 데이터베이스 기반이기에 많은 이용자가 대규모로 문서를 작성하는 대형 위키에서도 원활하게 돌아간다. 이런 특성으로 인해 대규모 협동 프로젝트를 진행하기에 좋다. 또한 단순히 표제어만 검색할 뿐 아니라 문서 내부의 키워드도 검색할 수 있으며, 특정 이름공간 안의 문서만 검색하거나 특정 키워드를 검색에서 제외시키는 등 구글 상세검색을 방불케 하는 강력한 검색 기능을 지원한다. 또한 사용자 관리 기능을 자랑하며, 분류 기능을 통해 문서가 어떠한 주제를 갖고 있는지 정의할 수 있다는 장점이 있다. 그래서 위키백과처럼 사람들이 많이 드나드는 대규모 위키 서비스에 최적화된 시스템을 자랑한다. 차라리 나무위키를 미디어위키로 채택했어야지... 또한 위키백과 공동체를 비롯한 사용자층을 통해 도움을 받을 수도 있다. 설치 과정에서 선택하거나 후에 LocalSettings.php에서 설정하면 위키미디어 공용의 컨텐츠를 쉽게 이용할 수도 있다.

높은 HTML 호환성[편집 | 원본 편집]

미디어위키에서 지원하는 자체 문법 외에도 보안상 허용하지 않는 외부 이미지 삽입 등을 제외하면 거의 모든 HTML을 가공 없이 이용할 수 있다. 그 외부 이미지 삽입도 기본 설정으로만 제한할 뿐 Localsettings.php를 건드려서 $wgAllowExternalImages=true라고 지정해주면 된다. 다만 보안 취약점이 늘어날 뿐. 또 문단 기호에서 * 기호를 사용하는 것이 정석이나 필요하면 <ol>, <ul> 태그를 이용해서 불릿 기호나 숫자 기호를 다른 형태로 바꿀 수도 있으며, 그밖에도 <span style> 태그를 활용해서 HTML에서 지원하는 거의 모든 글자 태그도 입력이 가능하다. 다만 개중에는 span 태그처럼 웹 페이지의 HTML 전체 페이지 레이아웃에 영향을 주는 것들도 있기에 잘못 쓰면 해당 문서가 완전히 망가질 수 있다. HTML을 쓰는 대표적인 태그의 예가 {{글 숨기기}}이나 {{}} 정도. 또 강력한 HTML 이용 때문에 방지 필터를 깔지 않는 이상 XSS 공격에 취약하다는 단점이 있다.

강력한 틀 문법[편집 | 원본 편집]

미디어위키는 모니위키 등의 다른 위키들과는 달리 틀에 수백 개의 변수명을 입력해도 괜찮을 뿐 아니라 변수명을 비워놓거나 동의의 변수명을 여러 가지 이름으로 제공하는 것도 가능하다. 구체적으로 예를 들자면 틀 A에 대해서 A의 변수명에 {{{(항목)|{{{(이름)|}}}}}}라고 지정하면 "항목=가"라고 변수명을 지정하거나 "이름=가"라고 변수명을 지정해도 같은 결과를 유도할 수 있고, 굳이 지정해주고 싶지 않으면 "항목=가" 이 부분을 생략해도 상관없다. 모니위키나 나무위키의 더 시드 엔진은 변수 하나에 하나의 이름만을 지정해줘야 하는 점과 대조되는 장점.

그 뿐만 아니라 어떤 틀 X에 대해 X'으로 넘겨주기를 지정했을 때 X에 대해 끼워넣기(transclusion)를 시도할 경우 #redirect [[X']] 코드가 아닌 X' 틀이 삽입되기에 틀을 삽입할 때 원래 이름이 아닌 그 틀의 동의어 아무 거나 삽입해도 (X' 대신 X 삽입 시도) 틀을 사용할 수 있다.

또한 위의 높은 HTML 호환성과 파서 함수의 분기기능을 결합해서 활용하면 다양한 디자인의 틀 템플릿을 만들 수 있고, 그 대표적으로 다양한 틀을 만들 수 있는 양식화된 틀의 모체인 {{둘러보기 상자}}나 {{정보상자}} 같은 강력한 틀들도 사용이 가능하다.

강력한 확장기능 제공[편집 | 원본 편집]

또한, 다양한 확장기능을 통해 다른 위키 엔진이 제공하기 힘든 강력한 기능들을 지원한다. 미디어위키 홈페이지 확장기능 참조. 기본적으로 제공되는 Cite나 if 문 등의 분기문을 지정하는 파서 함수를 제공하는 ParserFuncions, 분류 트리를 한 눈에 보여줄 수 있는 CategoryTree, 편집창 아래 쉽게 코드를 입력할 수 있게 안내하는 CharInsert 같은 확장기능이 있다. 보안성을 강화하는 확장기능으로 특정 패턴의 반복입력 등을 제한하는 AbuseFilter(편집 필터), CAPTCHA 기능을 통해 봇에 의한 입력을 제한하는 ConfirmEdit, 특정 문구를 위키 내부에서 입력하지 못하게 하는 SpamBlackList 같은 강력한 확장기능을 제공한다. 또한 다중계정을 악용하는 것을 찾아낼 수 있게 도와주는 CheckUser 확장기능도 제공하는 등 위키 엔진의 백엔드 부분에 대한 지식이 부족해도 강력한 관리기능에 접근할 수 있다.

거기에 CSS 확장기능과 HTML 문법까지 더해 아예 스킨 디자인을 바꾸거나 반응형 이미지를 삽입하는 등의 강력한 기능이 있다. CSS 개조기능과 미디어위키의 풍부한 링크 기능이 결합하면 백괴사전의 백괴게임이나 디시위키의 디시게임 같은 공들인 프로젝트도 가능하다.

스킨 등 풍부한 디자인 가능 툴[편집 | 원본 편집]

아무래도 가장 많이 사용하는 위키 엔진인 만큼 다양한 스킨도 제공한다. 미디어위키 홈페이지 스킨 안내 페이지 참조. 단순히 위키백과의 Vector 스킨 뿐 아니라 리브레 위키의 Liberty 스킨처럼 부트스트랩 기반의 스킨도 제작할 수 있고, 기존 스킨도 php와 HTML, 자바스크립트에 대한 간단한 지식만 있어도 색다른 느낌의 디자인을 연출할 수 있다.

강력한 환경설정[편집 | 원본 편집]

특수:환경설정에서 사용자의 이름 뿐 아니라 시간대, 사용자 정의 CSS/JS를 작성할 수 있다. 이를 통해서 자신이 스킨 CSS를 바꾸거나 자신이 원하는 문서에 자바스크립트 객체를 집어넣거나 하는 일도 가능하다. 도움말:사용자 자바스크립트에서 삽입할 수 있는 사용자 자바스크립트를 찾아보자.

강력한 관리기능[편집 | 원본 편집]

미디어위키는 관리자의 권한이 강력하다. 단순히 문서를 지우거나 사용자를 차단하는 정도가 아닌 미디어위키 이름공간의 정보를 조작해 스킨의 메뉴를 조작하거나 스킨 디자인을 바꾸거나 인터위키 정보를 추가할 수도 있고, 편집 필터를 설치했을 경우 편집 필터의 금지어나 차단 조건을 넣어서 특정 패턴성 편집을 막을 수 있다. 확장기능 중 ReplaceText 같은 경우 위키 전체의 특정 텍스트를 전부 바꾸는 등의 강력한 기능을 제공한다.

풍부한 도움말[편집 | 원본 편집]

미디어위키 홈페이지에서 각종 확장기능이나 미디어위키 사용법, 확장 기능 및 위키 엔진 수선법, 위키 유지보수에 도움이 되는 Maintenance Script 사용법, 그리고 Pywikibot을 비롯한 봇 프로그램 사용법 등 상당히 상세한 도움말을 제공한다. 기본적인 지식 뿐 아니라 관리자에 필요한 기능, 초고급 기능까지도 친절하게 설명해준다. 단 고급 기능은 한글 번역이 다소 부실한 편이라 영어 사용에 익숙하지 않으면 다소 이용하기 불편할 것이다.

단점[편집 | 원본 편집]

다소 무거운 엔진[편집 | 원본 편집]

미디어위키는 기본적으로 파일 기반이 아닌 데이터베이스 기반으로 돌아가는 위키 엔진이다. 따라서 MySQL 같은 데이터베이스 관리 프로그램(DBMS)가 기본적으로 설치되지 않은 환경에서는 별도로 DBMS를 설치해줘야 한다. 거기에 미디어위키는 도쿠위키 같은 가벼운 엔진에 비해 용량도 많이 들어간다. 개인이 사용하기에는 다소 무겁다는 단점이 있다. 또한 설정과 LocalSettings.php 관리가 까다롭다는 점도 단점으로 손꼽힌다. 리브레 위키에서도 이런 무겁고 까다로운 미디어위키 때문에 자주 곤혹을 치렀다. 또 미디어위키 엔진이 사용하는 언어가 문법이 자유도가 높고 간명하다고 보기 힘든 php 기반이기에 안 그래도 복잡한 위키의 특성상 유지보수하기도 다소 까다로운 편.

확장기능이 복잡하고 풍부한 점은 역으로 강력한 기능을 가진 확장기능을 일일이 유지보수하기 까다로울 수 있다는 점으로도 연결된다.

표 문법의 복잡함[편집 | 원본 편집]

또한 문법이 복잡하게 구성되어 있는데, 예를 들어 위키 안에 를 집어넣고 싶다면 모니위키||를 갖다붙이기만 하면 끝이지만, 미디어위키는 줄의 시작(|-), 그리고 표의 시작({|)과 끝(|})을 일일이 갖다 붙여야 하는 등 표에 적용되는 개별 문법을 숙지해야 한다. 표에 적용되는 미디어위키 문법이 HTML을 기반으로 일부 수정한 것에 지나지 않기 때문에 가독성을 배려하여 만들어진 모니위키의 표 문법에 비해 HTML에 대한 사전 지식이 없으면 한 눈에 파악하기 힘들다. 그래서 아예 모니위키 문법을 미디어위키로 번역해 주는 웹페이지까지 나올 정도이다.[1] 이 때문에 리브레 위키에서는 모니위키를 기반으로 하는 리그베다 위키 출신의 위키니트들이 미디어위키 문법에 적응하지 못 하고 편집을 그만두는 문제가 발생하고 있다. 이건 단순히 미디어위키가 세계적으로 많이 쓰이고 있기 때문에 딱히 뭐라고 할 상황은 아니지만, 이러한 문제 때문에 리브레 위키가 신규 사용자 유치에 애를 먹고 있는 게 사실이다.

영어로 된 키워드 구조에 의해 오는 불편함[편집 | 원본 편집]

한국어 등 다른 언어를 사용할 경우 미디어위키의 단점으로 작용한다. 미디어위키 코드들 중에서는 HTML 기반의 명령어가 많아서 명령어를 입력할 때마다 영어로 된 키워드를 입력해야 한다. 수시로 한/영 전환의 입력을 요구하니 순전히 기호만으로 입력이 가능한 나무위키 계열의 위키들에 비해 불편한 점이 생긴다.

명령어 조건 미디어위키 더 시드 엔진 또는 openNAMU
취소선 <s> 또는 <del> ~~ 또는 --
주석 <ref> [*
문법 무시 <nowiki> {{{

그나마 리브레 위키에서는 {{}}, {{}} 같은 틀로 취소선이나 주석 기능을 제공한다.

기타 특징[편집 | 원본 편집]

기본 세팅에서 불편할 수 있는 부분[편집 | 원본 편집]

기본적으로 미디어위키는 다른 위키 엔진과는 다르게 한 줄 띄어쓰기를 무시한다. 이 점 때문에 상당히 복잡한 틀도 한 줄 띄어쓰기를 이용해 복잡한 틀도 깔끔한 디자인이 가능한 이점도 있지만 반대로 일반적으로 글을 쓸 때 한 줄 띄어쓰기를 지원하지 않아서 한 줄 띄어쓰기가 필요하면 엔터를 두 번 눌러야한다. 엔터를 두 번 누르면 문단이 나누어지고 <br />을 쓰면 문단 내에서 강제 개행이 된다.

예시
엔터를 두 번 누르면 문단이 나누어지고

<br />을 쓰면 문단 내에서 강제 개행이 된다.

엔터를 두 번 누르면 문단이 나누어지고
<br />을 쓰면 문단 내에서 강제 개행이 된다.

과거의 오리위키 등 나무마크를 사용한 위키들은 나무위키와 마찬가지로 한 줄 띄어쓰기를 인식하기에 {{둘러보기 상자}} 같은 복잡한 틀들을 그냥 위키백과 같은 곳에서 복붙해서 사용할 때 틀이 깨져버리는 문제가 발생한다.

제목의 첫 번째 글자는 대문자로 고정[편집 | 원본 편집]

미디어위키 엔진에서 제목의 첫 번째 글자를 알파벳으로 입력하면 대문자로 고정된다. 이는 영어를 비롯한 알파벳을 사용하는 언어에서 문장의 첫 번째 글자를 대문자로 쓰기 때문이다. 하지만, 제목에서 첫 번째 글자를 소문자로 표시되게 하고 싶다면 리브레 위키틀:소문자 제목이나 한국어 위키백과틀:소문자등의 틀로 제목의 첫 번째 글자를 소문자로 표시되게 할 수 있다.

미디어위키 엔진에서는 사용자 이름도 사용자 이름공간에서의 제목으로 취급하므로 사용자 이름에서도 첫 번째 글자는 대문자로 고정된다.

설치 및 사용[편집 | 원본 편집]

문서가 있는 미디어위키 기반 위키[편집 | 원본 편집]

줄어들거나 많아지면 수정 바란다.

관련 문서[편집 | 원본 편집]


각주