미디어위키/설치 및 관리

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

미디어위키 기반의 위키 사이트를 서버에 올리기 위해서는 먼저 사이트에서 미디어위키를 내려받는 과정을 거쳐야 한다. 아래 두 가지 방법이 있다.

  • 압축파일 받기이곳에서 원하는 버전을 다운받자.
  • git clone해서 설치
    설치 시 약간의 수동 설치도 포함된다. 버전이 업그레이드 될 때마다 일일이 tar.gz를 받을 필요 없이 git 명령어로 쉽게 버전을 올릴 수 있다.

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

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

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

웹 서버 설치[편집 | 원본 편집]

위키 사이트 뿐만 아니라 모든 웹 사이트는 웹 서버가 필요하다. 대표적인 웹서버는 Apache, Nginx 등이 있는데 여기서는 Apache를 기준으로 설명한다.

이 문단은 시리즈:누구나 할 수 있는 리눅스 서버 여기에서 편집해 주세요.

LAMP는 LinuxApacheMysqlPhp의 약자입니다.

개인의 취향에 따라 사용하는 MySQL를 MariaDB, PostgreSQL, MS-SQL 등으로 바꾸거나 Apache를 Nginx로 바꾸는 등 다양한 변주가 가능합니다. 또한 거의 모든 리눅스 OS에서 정상 설치ㆍ작동이 가능한, 가장 범용성과 호환성이 높은 소프트웨어에요. 우리가 사용하는 리브레 위키가 LAMP[1]로 되어 있습니다.

기능을 설치하기에 앞서, 사용하는 OS를 최신 버전으로 업데이트하는 것이 중요해요. 구 버전의 운영체제는 프로그램 설치 명령이 작동하지 않거나, 엉뚱한 버전으로 설치 시킬 수 있기 때문입니다.

우선 Terminal이란 프로그램을 실행시킵니다. 바탕화면을 우클릭하면 나오는 선택 목록 중 있는 경우가 많지만, 없다면 프로그램 > 시스템 도구 > 터미널 에서 찾을 수 있어요.

Ttl.png
터미널은 다른 말로 이라고 해요. 윈도우의 명령 프롬프트같은, 까만 화면에 하얀 글씨를 써서 컴퓨터에게 직접 명령을 내리는 도구에요. 척 보면 복잡해 보이지만 전혀 어렵지 않답니다.

우선 업데이트를 위해선

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

를 각각 입력하면 됩니다.

sudo 명령어 입력했기 때문에 비밀번호를 입력하라는 창이 표시될 거에요. 이는 터미널에 내가 최고 사용자의 권리로 명령을 허가한다는 것을 증명하기 때문이에요.[2] 윈도우에서 권한 승인 창이 뜨는 것도 같은 겁니다. 이 권한 체제는 유닉스 기반 OS들의 가장 단순하면서 핵심적인 보안 장치의 역할을 합니다.

업데이트가 모두 완료됐다는 문구가 표시되면 바로 아래의 명령어를 입력해주세요.

$ sudo apt-get install apache2 mysql-server php php-mysql libapache2-mod-php php-xml

명령이 길어졌지만 단순히 설치를 원하는 프로그램들의 이름을 나열해놓은 것 뿐이에요. 한 글자 한 글자 입력해도 되지만, 오타가 나올 가능성이 있으니 이 사이트에서 바로 복사 + 붙여넣기를 하면 편합니다.

215550581.jpg
한번에 6개의 프로그램을 설치했기 때문에, 상당히 오랜 시간이 소모될 거에요. MySQL을 설치하는 과정에서 비밀번호를 생성하라고 요구할 때를 제외하곤 까만 화면에 하얀 글씨들이 정신 없이 올라가는 걸 지켜보고 있을 필요는 없어요. 모든 과정은 알아서 해결됩니다. 설치가 모두 완료됐으면 라즈베리파이에 설치된 웹브라우저를 통해 0.0.0.0이나 localhost를 입력하세요.
Apache-it-works.png
위와 같이 기본 apache의 페이지가 표시됐다면 계속 진행하고, 아니라 한다면 내가 설치한 OS가 PHP8.0을 비롯한 최신 LAMP스택의 설치를 지원하는지 확인해보세요. OS의 문제가 아니라면 모든 프로그램을 다시 설치해보세요.

명령어 창으로 들어가

$ 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 파일이 있네요 apache 기본 페이지가 바로 index.html입니다.

$ sudo rm index.html

굳이 필요 없으니 이 명령어로 삭제해주세요.

이번엔 php가 설치되었는지 확인해 봅시다.

$ sudo nano /var/www/html/info.php

를 입력해서 php 버전 확인 페이지를 만들어 봅시다.

<?php phpinfo(); ?>

를 복사해서 Ctrl+Shift+V로 붙여넣기해주시고 Ctrl+X로 나가기 y로 저장하기

브라우저에 localhost/info.php를 입력하고 들어가면 됩니다.

Info php.png

여기서 php 관련 프로그램, 웹 서버 정보들을 확인할 수 있습니다.

이제 mysql을 설정해 봅시다.

$ sudo mysql_secure_installation

를 입력해서 mariadb 기본 보안 설정을 해봅시다.

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] 
---

아직 끝난게 아닙니다! mariadb 서버에 한번 직접 접속해봅시다.

$ 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)]>

이런 새로운 CLI가 나옵니다.

여기서 직접 데이터베이스를 조작하거나 유저를 만들고 데이터베이스를 생성할 수 있어요.

하지만 대부분의 웹 서버는 자동으로 데이터베이스에 접근을 합니다. 취미로 웹 서버를 구축한다면 저 복잡한 SQL 구문을 외울 필요는 없는데 데이터베이스 관련 개발자를 꿈꾼다면 외워봐야 나쁠 것 없지요.

PHP는 아까 아파치랑 같이 설치해서 추가 과정이 필요 없습니다. 아래에는 필요한 추가 설정을 나열했습니다.

Yes check.svg 완료 LAMP 서버 스택의 설치가 끝났습니다.

아래는 워드프레스나 미디어위키에 사용되는 데이터베이스를 구축하는 방법입니다.

아까처럼 아래를 입력해 주세요.

$ sudo mysql -u root -p
MariaDB [(none)]> CREATE USER '유저'@'localhost' IDENTIFIED BY '비밀번호 입력';
--Mariadb 유저 생성
MariaDB [(none)]> CREATE DATABASE 데이터베이스_이름;
--데이터베이스 생성, 이 데이터베이스에 웹사이트 관련 중요한 데이터가 저장됩니다.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON 데이터베이스_이름.* TO '유저'@'localhost' WITH GRANT OPTION;
--유저가 방금 생성된 데이터베이스에 접근할 권한을 부여합니다.


본격 미디어위키 설치[편집 | 원본 편집]

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

일단 설치에 앞서 미디어위키에 필요한 추가 프로그램을 설치해주세요.

$ sudo apt install php-apcu php-curl php-intl php-mbstring php-gd php-cli php-zip php-xml

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

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

$ sudo GUI파일탐색기 (운영체제마다 기본 탐색기 프로그램이 다르다) nautilus, thunar, dolphins(sudo 유저 이용 불가) 등등

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

압축 해제한 mediawiki 디렉토리의 기본 명칭은 압축 파일명과 동일한데(mediawiki1.35~~) 그렇게 그대로 두면 사이트 접근성이 처참하게 떨어지니 'wiki','w' 등의 간단한 이름으로 바꿔주는 게 좋다. 그런 다음 '사이트 주소/설정한 디렉토리명'에 들어가보면 (참고로 여기서는 http://0.0.0.0/w 0.0.0.0이나 127.0.0.1(루프백)로 들어가서 설치하면 설정 파일의 ip를 0.0.0.0으로 설정한다. 그러면 위키를 설치한 컴퓨터(호스트)에서밖에 못 들어가고, 내부 ip로 접속, 설치하면 같은 네트워크의 클라이언트도 접속할 수 있고, 외부 ip로 접속, 설치하면 네트워크 외부의 클라이언트도 접속할 수 있게 된다. 리브레위키나 위키백과는 도메인(외부ip/공인ip)으로 되어있다.)


미디어위키 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와 같은 디렉토리에 넣는다. 다운받은 파일을 FTP로 전송할 필요없이 vim이나 nano로 내용을 복사해서 붙여넣어도 된다. 보통 처음 미디어위키를 넣으면서 생긴 폴더에 넣은 뒤 위키에 들어가면 된다.

관리[편집 | 원본 편집]

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

  1. 리브레 위키는 apache2가 아니라 nginx를 쓴다.
  2. SUperuserDO