미디어위키/설치 및 관리

이 문서는 리눅스를 기준으로 작성되었습니다.

미디어위키 기반의 위키 사이트를 서버에 올리기 위해서는 먼저 사이트에서 미디어위키를 내려받는 과정을 거쳐야 한다. 이곳에서 원하는 버전을 다운받아서 서버에 업로드하면 위키사이트가 완성된다. 호스팅 사이트의 자동 설치 기능을 쓰는 건 추천하지 않으며, 번거롭더라도 직접 설치하는 걸 권장한다.

웹 사이트가 동작하기 위해 필수적인 소프트웨어는 웹 서버가 있다. 이 웹 서버가 없으면 미디어위키나 워드프레스가 설치되어도 유저에게 웹 사이트를 보여줄 수가 없다.

미디어위키는 앞서 말한 웹 서버와 데이터베이스 서버, PHP 서버도 필요하다. 당신이 보고 있는 이 페이지는 데이터베이스 서버에 저장되고 편집 내용을 저장하고 페이지를 띄우는 등 데이터를 처리하기 위해 PHP 스크립트가 작동된다.

미디어위키 버전에 따라 지원하는 웹 서버, 데이터베이스 서버의 버전이 다른데 보통 최신 버전의 미디어위키를 설치하면 지원이 안 되는 경우가 드물기 때문에 걱정 안해도 된다. 구버전이면 좀 많이신경이 쓰이기는 하다.

웹 서버 설치

위키 사이트 뿐만 아니라 모든 웹 사이트는 웹 서버가 필요하다. 대표적인 웹서버는 Apache, Nginx 등이 있는데 여기서는 Apache를 기준으로 설명한다. 가장 잘 알려진 리눅스, 우분투는 명령어 몇 줄이면 프로그램 설치를 간단하게 할 수 있다.

먼저 소프트웨어를 내려받기 전에 업데이트를 하자.

sudo apt update
우분투 패키지 저장소의 업데이트 된 목록을 내려받는다.
sudo apt upgrade -y
패키지 업데이트

단 두 줄이면 업데이트가 끝난다. 비번을 요구하면 입력한다.

sudo apt install apache2

0개 업그레이드, 8개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
1,713 k바이트 아카이브를 받아야 합니다.
이 작업 후 7,497 k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] 

아파치 서버 설치 Y를 누르고 기다리자

설치가 완료되면 브라우저에 127.0.0.1이나 localhost 또는 0.0.0.0을 입력하여 설치가 완료되었는지 확인하자.

웹 페이지에 무언가가 뜨면 성공이다!

급하면 넘어가도 되는데 설명을 한번 보자 아래 설명이 이렇게 나오는데

/etc/apache2/
|-- apache2.conf
|       `--  ports.conf
|-- mods-enabled
|       |-- *.load
|       `-- *.conf
|-- conf-enabled
|       `-- *.conf
|-- sites-enabled
|       `-- *.conf

설정 파일이 어디있는지

웹 사이트의 루트경로가 어디인지 /var/www/public_html 설명이 다 되어있다.

명령어 창으로 들어가

cd /var/www/html

을 입력해 웹 사이트의 루트 경로로 들어가보자.

pc@pc-desktop:/var/www/html$ ll
합계 12
drwxr-xr-x 2 root root 4096  2월  6 15:55 ./
drwxr-xr-x 4 root root 4096  2월  6 15:55 ../
-rw-r--r-- 1 root root   17  2월  6 15:54 index.html

아까 접속해 본 페이지가 index.html이다. 이제는 필요없으니 지워보자

pc@pc-desktop:/var/www/html$ sudo rm index.html 

이제 미디어위키를 구동하는데 필요한 PHP를 설치하자!

PHP 설치하기

sudo apt install php-apcu php-curl php-intl php-mbstring php-mysql php-gd php-xml php-cli php-zip libapache2-mod-php

미디어위키와 데이터베이스를 위해 필요한 프로그램이다. 설치가 끝나면 명령창에 php -v를 쳐서 설치가 잘 되었는지 보자

pc@pc-desktop:/var/www/html$ php -v
PHP 7.4.3 (cli) (built: Oct  6 2020 15:47:56) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

정상적으로 잘 되었다! 이제 데이터 베이스를 설치하고 설정해주는 일만 남았다.

데이터베이스 서버 설치하기

sudo apt install mariadb-server

여기서는 mariadb를 설치한다.

sudo mysql_secure_installation

mariadb 보안 설정을 한다. mariadb를 설정해야하는데 mysql를 왜 입력하냐면 mariadb가 mysql을 그대로 포크한 프로그램이라 mysql과 커맨드를 공유하기 때문이다.

Enter current password for root (enter for none):
root의 비밀번호를 입력, 비번이 없으므로 엔터!
Set root password? [Y/n]
root 비번 설정 Y나 엔터! 
New password:
비밀번호 입력
Re-enter new password:
한번 더
Remove anonymous users? [Y/n]
아래는 모두 엔터치면 된다.
Disallow root login remotely? [Y/n] 
---

아직 끝난게 아니다. mysql 서버에 직접 접속해보자

sudo mysql -u root -p
/*Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 68
Server version: 10.3.25-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.*/

MariaDB [(none)]>

MariaDB의 CLI에서 유저를 생성하고 데이터베이스를 설정한다.

MariaDB [(none)]> CREATE USER '위키유저'@'localhost' IDENTIFIED BY '비밀번호 입력';
--Mariadb 유저 생성
MariaDB [(none)]> CREATE DATABASE 위키데이터베이스;
--데이터베이스 생성, 이 데이터베이스에 위키의 모든 문서가 저장된다.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON 위키데이터베이스.* TO '위키유저'@'localhost' WITH GRANT OPTION;
--위키유저가 방금 생성된 데이터베이스에 접근할 권한을 부여한다.

quit를 입력해 CLI에서 나간다.

미디어위키를 설치하기 전에 필요한 프로그램들을 모두 설치했다. 다음 단계로 넘어가자!

본격 미디어위키 설치

이 문단을 읽기 전에 파일 이동/복사 명령어나 sudo su 명령어로 관리자계정으로 명령창을 사용할 줄 알아야 편하다.

루트 경로 : 웹 사이트의 최상위 경로로 서버의 한 폴더가 루트 경로로 할당된다. 기본적으로 /var/www/html에 위치한다.

해당 파일을 웹 서버의 루트 경로에 올려서 압축 해제를 하면 디렉토리가 하나 생긴다. 그런데 보통 루트 경로인 /var/www/html은 보안을 위해 관리자 권한으로 막혀있다. 그래서 관리자 계정 없이는 폴더를 옮기는게 어렵다. 관리자 계정으로 터미널 에뮬레이터를 사용해서 폴더를 옮겨주자. 명령어로 폴더나 파일을 옮기고 tar.xz나 ZIP파일 압축 해제하는 명령어를 구글 검색을 통해 알아봐야 한다. 귀찮다면 아예 폴더 탐색기를 슈퍼유저로 띄워서 옮기자

sudo GUI파일탐색기 (운영체제마다 기본 탐색기 프로그램이 다르다)

미디어위키 1.35 설치 파일 탐색기.png


압축 해제한 mediawiki 디렉토리의 기본 명칭은 압축 파일명과 동일한데(mediawiki1.35~~) 그렇게 그대로 두면 사이트 접근성이 처참하게 떨어지니 'wiki','w' 등의 간단한 이름으로 바꿔주는 게 좋다. 그런 다음 '사이트 주소/설정한 디렉토리명'(여기서는 http://0.0.0.0/w가 된다.)에 들어가보면


미디어위키 1.35 설치.png 이런 화면이 뜬다, 'LocalSettings.php'가 없다는 문구에 당황할 필요는 없는데, 설치 과정이 이 파일을 만드는 것이다. 일단 파란색으로 되어 있는 'set up the wiki'를 클릭하면


미디어위키 1.35 설치2.png 언어 선택 창이 뜨는데, 위의 것은 설치에 쓸 언어, 아래의 것은 위키가 이용자들에게 제공할 언어이다. 대부분의 경우 둘 다 한국어일 것이다. 그 다음 뜨는 화면에서는 일반적으로 특별히 수행할 작업이 없으며, 설치가 가능한지 검사를 한다. 거기서 '계속' 탭을 누른다.


미디어위키 1.35 설치3.png 여기서 무엇이 설치안되었나 체크가 가능하다. 작성자가 실수로 php-gd나 Imagemagick을 설치하지 않아 스크린샷처럼 섬네일을 불러오지 못한다고 한다. 둘 중 하나를 설치하고 웹서버를 다시 시작하자.

sudo service apache2 restart

미디어위키 1.35 설치6.png 해결했다. 아래를 보면 사진을 업로드 하는 기능에 보안 취약점이 발견되었다고 하는데 아래의 페이지를 참고하여 웹 서버를 설정해주자.


미디어위키 1.35 설치7.png

sudo nano /etc/apache2/apache2.conf

Nano 편집기나 메모장같은 편집기로 웹 서버 설정파일(.ini .conf)에 코드를 복사해 붙여넣기한다.


미디어위키 1.35 설치image.png Nano 편집기같은 경우 Ctrl+X를 누르고 Y를 누르면 저장하고 종료된다.


미디어위키 1.35 설치8.png 이제 문제 없다.~


미디어위키 1.35 설치9.png 여기서 데이터베이스를 연동해야 하는데 전 단계에서 데이터베이스와 유저를 생성했으므로 그대로 입력하면 된다. 그러고 나서 문자 집합을 선택한 후 다음으로 넘어간다.


미디어위키 1.35 설치10.png 데이터베이스 호스트는 그대로 둔다. 데이터베이스 서버와 웹 서버를 분리시킨 대형 위키를 빼고는 설정할 필요 없다. 그냥 데이터베이스 이름과 유저이름을 입력하면 된다.


미디어위키 1.35 설치12.png 넘어간다


미디어위키 1.35 설치13.png 여기서 위키의 이름(리브레위키, 나무위키)과 관리자의 ID 비밀번호를 설정할 수 있다.


스크린샷 2021-02-06 18-22-58.png 여기서 중간 절차를 진행할지 생략할지 물어보는데, 되도록이면 중간 절차를 모두 밟는 게 좋다. 더 많은 질문을 물어보세요를 클릭한다.


미디어위키 1.35 설치14.png 그럼 확장기능 및 라이선스, 이 메일, 기본 스킨 등을 설정할 수 있는 칸이 나온다. 이 부분은 도움말 탭의 설명으로 충분하니 별도로 쓰지 않는다.


미디어위키 1.35 설치16.png 기본 내장된 필수 확장기능들은 대부분 설치하는 것을 권장한다. 각 확장기능에 대한 설명은 미디어위키/확장기능 참고. 파일 올리기는 특별한 경우가 없다면 활성화하는 게 좋다. '인스턴트 공용'은 위키미디어 공용 연동 여부를 선택하는 것이다. 로고에는 로고로 쓸 이미지 URL을 기입한다. 딱히 쓸 로고가 없다면 아직은 그대로 둬도 좋다. 그 다음에 페이지 하나에서 최종 확인을 거친다. 다시 그 다음 페이지에서 모든 설치가 끝나면 다음으로 넘어간다.


미디어위키 1.35 설치17.png 이제 모든 준비가 끝났다. 중앙의 링크를 눌러 'LocalSettings.php' 파일을 다운받은 뒤에 index.php와 같은 디렉토리에 넣는다. 보통 처음 미디어위키를 넣으면서 생긴 폴더에 넣은 뒤 위키에 들어가면 된다.


관리

확장기능 설치

아래는 윈도우, 리눅스 상관없는데 리눅스의 경우 압축풀기 명령어가 필요하다. 미디어위키에는 수많은 확장기능이 있어서 이 확장기능만 잘 다루면 나만의 마개조된 위키를 만나볼 수도 있다. 예를 들어 사용자 검사 기능을 제공하는 CheckUser 확장 기능을 설치한다고 해보자.

체크유저 다운로드 페이지에 접속해서 맞는 버전을 다운로드한다. 체크유저1.png


다운로드 받은 파일의 압축을 풀어 미디어위키 경로의 'extensions' 폴더에 집어넣어야 한다. 체크유저2.png


LocalSettings.php를 열어 아무 부분에나 wfLoadExtension( 'CheckUser' ); 를 추가해주고 반드시 엔터를 한 번 이상 눌러 위 사진처럼 만들어야 한다. 그렇지 않으면 위키에 들어갈 때 PHP 해석 오류가 뜬다.

SSH를 지원하는 환경이라면 php update.php를 돌려서 간단하게 설치를 완료하는 방법도 있으나, 여기에서는 SSH를 지원하지 않는 무료 호스팅을 쓰고 있다는 전제 하에 내용을 작성하였다.

미디어위키 LocalSettings.php 참조.png LocalSettings.php에서 $wgUpgradeKey = "숫자+영어 랜덤조합"; 으로 되어있는 부분을 찾아 숫자+영어 랜덤조합 부분을 복사해두자.


체크유저3.png http://test.com/mw-config 같이 위키가 설치된 주소 뒤에 /mw-config을 붙여서 설치 페이지로 들어가자. 만약 LocalSettings.php 다운로드를 시작하는 창이 뜬다면 취소하고 우측의 '설치 다시 시작'을 눌러 위의 화면을 만들면 된다.


체크유저4.png 다음 버튼을 눌러 정상적으로 왔다면 이런 화면이 뜰 것이다. LocalSettings.php에서 복사해뒀던 숫자+영어 랜덤조합 키를 입력하고 '계속' 을 누르자.


체크유저5.png '미디어위키를 설치할 수 있습니다' 창은 중요하지 않으니 생략하였다. '계속' 을 누르자.


체크유저6.png 설치 업그레이드가 끝났다. '위키를 시작할 수 있습니다' 를 눌러 위키에 들어간 다음 특수:버전 페이지에서 'CheckUser' 가 있나 확인해보자.


체크유저7ㅇ.png Yes check.svg 완료 위와 같이 뜬다면 당신은 미디어위키에 확장 기능을 설치하는 방법을 알게 된 것이다. 이제 특수:권한조정 페이지에서 '검사관' 권한을 부여한 다음 특수:사용자검사 페이지에서 검사가 진행되나 확인해 보면 된다. 만약 데이터베이스 오류가 발생했다면 업그레이드 과정을 다시 수행해야 한다.