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

PHP 7.3 환경에서 미디어위키(Mediawiki) 1.31.1 LTS 설치하기 - XAMPP 7.3.4

씨실과 날실 2019. 5. 26. 09:00

전에 PHP 7.3 환경에서는 미디어위키(Mediawiki) 1.31.1 LTS를 설치할 수 없으므로 해당 버전 이하의 미디어위키를 설치하실 분들은 PHP를 7.3으로 업그레이드하지 마시라고 알려드린 적이 있습니다.

해당 버그가 알려진 이후 미디어위키 개발진들이 코드를 수정하여 문제를 해결하였습니다. 해당 이슈는 1.32 이후 버전에 반영되어 PHP 7.3 환경에서도 설치할 수 있게 되었습니다.

그러나 안정적인 서비스를 지원하기 위해 많은 이들이 LTS 버전을 사용하기 마련인데 아직 미디어위키의 최신 LTS 버전인 1.31.1은 PHP 7.3을 지원하지 않습니다. 따라서 미디어위키 1.31.1을 PHP 7.3 환경에서 설치하기 위해서는 일부 파일의 코드를 수정해주어야 합니다.

이번 연재는 미디어위키 1.31.1 LTS 버전을 PHP 7.3 환경에서 설치하는 방법에 대해 알아보도록 하겠습니다. 참고로 이번 연재의 작업 환경은 다음과 같습니다.

[작업환경]

OS : Windows 10

WAMP : XAMPP for Windows 7.3.4

Apache2 : Apache/2.4.39

PHP7 : PHP 7.3.4

MariaDB : 10.1.38

phpMyAdmin : phpMyAdmin 4.8.5

참고로 이글을 작성한 시점에서는 XAMPP 7.3.5가 공개되었습니다.

이번 연재는 작업환경 상자에서 보듯 서버 구축 꾸러미 프로그램인 XAMPP for Windows에서의 작업을 안내해드리고자 합니다. 이는 지난 워드프레스 5.2 설치 및 멀티사이트 구축 연재의 경우처럼 XAMPP 사용법 연재의 일환입니다.

XAMPP for Windows 실행

XAMPP for Windows 실행하여 웹서버를 구동해줍니다. 이때 Apache 모듈과 MariaDB 모듈(표시상 MySQL 모듈) 모두 구동되어야 합니다.

이에 대한 자세한 방법은 아래 링크를 참고하시기 바랍니다.

미디어위키 다운로드

미디어위키 공식 배포 사이트(https://www.mediawiki.org/)에 접속합니다. 위 화면에서 Set up and run MediaWiki 상자에서 Download 링크를 눌러 미디어위키 다운로드 페이지(https://www.mediawiki.org/wiki/Download)에 접속합니다.

참고로 위 메인 페이지의 구성은 얼마든지 바뀔 수 있습니다. 실제로 이 연재를 준비하느라 스크린샷을 땄을 당시에는 Set up and run MediaWiki 상자가 위 그림처럼 오른쪽에 위치했습니다만 이 글이 공개된 시점에서는 왼쪽으로 이동되었습니다.

위 페이지에서 자신이 사용하고자 하는 버전의 미디어위키를 다운받으시면 됩니다. 이번 연재에서는 안정적인 운영이 가능한 장기지원(LTS) 버전인 1.31.1을 다운받았습니다. 물론 이 이유 외에도 PHP 7.3 환경에서 설치 오류를 피해서 미디어위키 1.31.1버전을 설치하는 방법을 안내해드리기 위해서 해당 버전을 다운받았습니다.

1.32 이상의 버전은 오류 없이 설치할 수 있으므로 미디어위키 설치 오류 부분을 건너 뛰고 읽으시면 됩니다.

그리고 위 그림은 최신 버전이 1.32.0일 때 찍은 스크린샷입니다. 2019년 4월 30일에 미디어위키 1.32.1 버전이 공개되었습니다.

미디어위키 압축 파일 해제

주요 윈도용 압축 프로그램들은 '알아서 풀기' 기능을 지원하고 있습니다. 위 그림처럼 다운받은 미디어위키 압축 파일에 마우스를 올려놓고 마우스 오른쪽 버튼을 눌러 알아서 풀기 메뉴를 클릭해주시면 됩니다.

'알아서 풀기'란 압축된 파일 안에 하나의 폴더가 존재하여 그 안에 모든 하위 폴더 및 파일들이 포함되어 있는 경우 압축을 풀면 해당 최상위 폴더가 풀리고, 압축 파일 안에 여러 폴더와 파일들이 각기 존재하는 경우 압축 파일 이름으로 폴더를 생성되어 그 안에 압축된 폴더와 파일들이 풀리는 기능을 말합니다.

압축 풀기를 실행하면 대부분의 압축 프로그램들이 위 그림처럼 압축 해제가 진행됩니다. 참고로 이 연재를 위해 사용된 압축 프로그램은 반디집(https://www.bandisoft.com/bandizip/)이며 이 글이 공개된 시점에서 반디집의 최신 버전은 6.22입니다.

압축을 풀면 특별히 따로 설정을 해주지 않는 한 위 그림처럼 압축 파일과 같은 폴더에 압축이 해제됩니다.

미디어위키 폴더를 웹서버 root폴더에 복사

압축을 푼 미디어위키 폴더를 웹서버의 root 폴더에 복사해 넣어줍니다. XAMPP for Windows의 웹서버 root 폴더(= 디렉토리)는 위 그림처럼 일반적으로 C:\xampp\htdocs입니다.(XAMPP를 기본값으로 설치한 경우)

참고로 폴더 htdocs는 hypertext documents의 약자로 우리말로 이해하면 웹문서가 저장된 폴더라는 뜻입니다.

직접 LAMP 서버를 운영할 때 OS가 우분투의 경우 일반적으로 /var/www/html이 웹서버 root 디렉토리입니다.

미디어위키 폴더명 변경

미디어위키에 손십게 접속하고 편리하게 관리하기 위해  폴더명을 바꾸어 줍니다. 위키를 운영하는 많은 수의 사이트가 위키 폴더를 w로 설정하고 있습니다.

미디어위키 1.31.1 접속

구글 크롬, 인터넷 익스플로러 엣지, 파이어폭스 등 웹브라우저 주소창에 http://localhost/미디어위키 폴더명을 입력하여 접속하면 위 그림처럼 LOcalSettings.php 파일이 존재하지 않으니 위키를 셋업해달라고 나옵니다.

setup the wiki 링크를 클릭해줍니다.

미디어위키 설치 오류

set up the wiki를 누르면 위 그림과 같은 오류 메시지가 나타납니다. 이는 미디어위키 1.31 LTS가 PHP 7.3 환경에서 제대로 작동하지 않는 버그가 존재하여 발생하는 문제입니다. (1.32 이상 버전을 설치하면 위와 같은 오류가 발생하지 않고 다음 단계로 넘어갑니다.) 해당 버그 리포트를 요약하면 아래와 같습니다.

버그 리포트 요약

[PHP 7.3] Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"?

버그 리포트 번호 : Bug: T200595

오류 메시지 : Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"?

위 문구는 PHP 7.3 환경에서는 해당 코드에서 continue 문구가 break와 동일한 의미를 지님을 알려주는 메시지입니다.


compact(): Undefined variable in LocalisationCache on PHP 7.3

버그 리포트 번호 : Bug: T206979

오류 메시지 : PHP Notice:  compact(): Undefined variable: messages (후략)

이 메시지는 PHP 7.3 환경에서 정의되지 않은 변수의 존재로 문제가 야기되는 것입니다.

위 문제들을 해결하기 위해서는 총 3개의 미디어위키 파일의 코드를 수정해주어야 합니다. 수정 파일과 수정 내용은 아래를 참고하시기 바랍니다.

버그 해결 위한 코드 수정

버그들을 해결하기 위해서는 FormatJson.php, LanguageConverter.php, LocalisationCache.php 이렇게 총 3개의 파일을 수정해주어야 합니다. 각 파일의 위치는 따로 적어드립니다. 파일 경로에서 $는 미디어위키의 폴더를 뜻합니다. 만약 위의 예처럼 미디어위키의 폴더명을 w로 바꾸었다면 w가 미디어위키 폴더명입니다. 

Bug: T200595

$/includes/json/FormatJson.php

FormatJson.php 파일의 코드를 위 그림처럼 수정해주시기 바랍니다.

코드 원문 - 297번째 줄

                        continue;

코드 수정

                        break;

$/languages/LanguageConverter.php

LanguageConverter.php 파일의 코드를 위 그림처럼 수정해주시기 바랍니다.

코드 원문 - 773번째 줄

                        continue;

코드 수정

                        break;

Bug: T206979

$/includes/cache/localisation/LocalisationCache.php

LocalisationCache.php 파일의 코드를 위 그림처럼 수정해주시기 바랍니다.

코드 원문 - 530 ~ 533번째 줄

        if ( $_fileType == 'core' || $_fileType == 'extension' ) {
            $data = compact( self::$allKeys );
        } elseif ( $_fileType == 'aliases' ) {
            $data = compact( 'aliases' );

코드 수정 - 530 ~ 543번째 줄

        $data = [];
        if ( $_fileType == 'core' || $_fileType == 'extension' ) {
            foreach ( self::$allKeys as $key ) {
                // Not all keys are set in language files, so
                // check they exist first
                if ( isset( $$key ) ) {
                    $data[$key] = $$key;
                }
            }
        } elseif ( $_fileType == 'aliases' ) {
            if ( isset( $aliases ) ) {
                /** @suppress PhanUndeclaredVariable */
                $data['aliases'] = $aliases;
            }

버그 리포트와 해당 이슈 해결책의 원 게시물을 알려드리겠습니다.

위 링크를 참고하시면 보다 자세한 정보를 얻을 수 있습니다.

미디어위키 설치

언어 설정

사용하고자 하는 언어를 선택해줍니다. 1.31.1은 총 437개, 1.32.1은 총 444개의 언어를 지원합니다.

사용 환경 검사 / 저작권 및 약관

사용 환경 검사의 정보를 눈여겨 볼 필요가 있습니다. 사용 환경 검사 항목을 확인하고 항목 중 설치할 수 있는 것들은 설치해주시는 것이 위키를 보다 편리하게 이용할 수 있습니다.

이번 연재는 XAMPP for Windows에서 위키를 설치하는 과정을 안내해드리고 있습니다만 미디어위키의 제 기능과 성능을 모두 활용하기 위해서는 LAMP 서버에서 설치하는 것이 좋습니다. LAMP 서버에서 미디어위키를 설치하는 방법은 이미 연재하였으므로 해당 연재글을 참고하시기 바랍니다.

데이터베이스 정보 입력

DB 정보를 적절히 입력해줍니다. 이때 미디어위키가 다른 CMS와 차별되는 점은 다른 CMS는 해당 CMS가 사용할 DB를 미리 생성해 놓고 그에 맞춰 DB 정보를 입력해주어야 하는 반면, 미디어위키는 자동으로 DB를 생성합니다. 관리자 입장에서는 상당히 편한 기능입니다.

데이터베이스 테이블 접두어는 비워져 있는 것이 기본값이 굳이 해당 항목을 기입할 필요는 없다고 안내하고 있습니다만 개인적으로 추후 있을지도 모르는 미디어위키 추가 설치를 위해  테이블 접두어는 반드시 입력해주시는 것을 추천하며 접두어 입력 시 접두어 마지막 문자는 _(언더바)로 정하는 것을 권장합니다. _(언더바)가 없이 영숫자로만 정하면 한 DB에 설치되어 있는 다수의 미디어위키의 테이블을 구별하기가 쉽지 않을 수 있기 때문입니다.

이 항목에 대하여 보다 자세한 내용은 아래 링크를 참고하시기 바랍니다.

데이터베이스 계정 및 저장소 엔진 설정

데이터베이스 계정 및 저장소 엔진 설정은 위 그림이 기본값입니다. 특별한 이유가 없다면 이 기본값을 유지해주는 것이 미디어위키의 유지보수와 성능 측면에서 보다 유리합니다.

이 항목에 대하여 보다 자세한 내용은 아래 링크를 참고하시기 바랍니다.

위키 기본 정보 입력

위키 기본 정보 입력란 중에서 내 사용자 이름을 굳이 영숫자로만 정할 필요는 없습니다. 위 그림처럼 한글로 정하셔도 아무런 문제 없습니다. 워드프레스가 영숫자, 마침표, @ 심볼 등만을 사용할 수 있는 것에 반해 훨씬 자유롭습니다.

이 항목에 대하여 보다 자세한 내용은 아래 링크를 참고하시기 바랍니다.

설정 후 더 많은 질문을 물어보세요. 항목을 체크하고 계속 버튼을 눌러주시기 바랍니다. 만약 그러지 않으면 이후의 설정은 관리자가 LocalSettings.php 파일을 열어 코드 추가로 설정해주어야 합니다.

사용자 권한 / 저작권 및 라이선스 / 이메일 / 스킨 / 확장 기능 / 파일 업로드와 로고 / 개체 캐싱 설정

이 항목에 대한 내용은 아래 링크를 참고하시기 바랍니다.

미디어위키 설치 시작

계속 버튼을 눌러줍니다.

미디어위키 설치 진행

설정 작업이 진행됩니다. 완료 후 계속 버튼을 눌러줍니다.

설정 파일 LocalSettings.php를 다운로드하여 미디어위키 폴더에 넣기

LocalSettings.php 파일 다운로드 창이 자동으로 뜹니다. 혹여 자동으로 뜨지 않는다면 다운로드 링크를 눌러 파일을 다운받습니다.

다운받은 LocalSettings.php파일을 미디어위키 폴더 안에 집어 넣어 줍니다.

설치된 위키 접속

LocalSettings.php파일을 미디어위키 폴더 안에 넣은 후 미디어위키 주소에 접속해봅시다. (예 - http://localhost/w) 그러면 위 그림처럼 미디어위키의 대문이 나타날 것입니다.

버전 확인(특수:버전)

미디어위키 검색상자에서 '특수:버전'을 입력하여 검색합니다. 그러면 위 그림처럼 버전 페이지가 나타납니다. 그러면 무사히 설치된 것입니다.

이후 미디어위키 운영 방법은 아래 링크를 참고하시기 바랍니다.