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

Git으로 미디어위키(Mediawiki) 1.35 LTS 설치 - 특정 안정 브랜치(예시 : 1.35.2)

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

 

미디어위키 설치 사전 작업

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

지난 시간에는 미디어위키를 설치하기 위한 조건과 서버의 터미널 환경(CLI)에서 미디어위키를 설치하는 방법에 대해 알아보았습니다.

위 링크의 글과 앞으로 연재할 웹브라우저(GUI) 환경에서 인스톨하는 방법이 미디어위키를 설치하는 일반적인 방법이라면 이번에 연재할 Git으로 미디어위키를 설치하는 방법은 좀더 개발자스럽게 설치하고 유지보수하는 방법이라 할 수 있겠습니다.

사실 이 방법은 미디어위키를 처음 설치하거나 리눅스 또는 분산 버전 관리 개념에 대한 이해와 제반지식이 부족하신 분들에게는 그다지 권장하지 않습니다.

그러나 Git 사용법을 실습을 통해 공부한다거나 Git을 어느정도 사용할 줄 알아 미디어위키를 정말로 Git으로 유지보수하시고자 하는 분들에게 도움이 될 것입니다.

 

Git으로 미디어위키를 설치 및 버전 관리(유지보수)하기 위해서는 먼저 위 링크의 글들을 숙지하고 사전 작업을 마쳐야 합니다.

 

Composer

study@study-VirtualBox:~$ composer -V
Composer 1.10.1 2020-03-13 20:34:27
study@study-VirtualBox:~$ 

가장 먼저 시스템에 설치되어 있는 Composer의 버전을 확인합니다.

이 글이 작성되어 공개된 시점에 우분투 20.04 공식저장소에는 위처럼 1.10.x 버전이 올라가 있습니다.

그러나 현재 Composer의 메이저 업그레이드 판인 Composer2가 릴리즈되었습니다.

Cmposer를 이용해 미디어위키의 외부 라이브러리를 다운받을 때 Composer2가 아닌 구 버전을 사용하게 되면 아래와 같은 경고문구가 출력됩니다.

Warning from https://repo.packagist.org: You are using an outdated version of Composer. Composer 2 is now available and you should upgrade. See https://getcomposer.org/2

물론 구 버전을 사용한다 하더라도 정상적으로 작동하므로 Composer를 최신 버전으로 업그레이드해야 하는 것은 아닙니다. 개인적으로 굳이 바로 Composer2로 판올림할 필요는 없다고 생각합니다. 실제로 구 버전의 Composer도 여전히 버전 업그레이드 유지보수가 활발히 이루어지고 있기 때문입니다.

 

그럼에도 불구하고 Composer2를 설치하고자 하시는 분들은 Composer 공식 사이트의 Download 페이지를 참고하시기 바랍니다.

 

study@study-VirtualBox:~$ cd /var/www/html
study@study-VirtualBox:/var/www/html$ 

작업 디렉터리를 웹서버의 문서 루트 디렉터리(Document Root Drectory)로 이동해줍니다.

/var/www/html

우분투 공식 저장소에서 Apache2를 설치한 경우 해당 디렉터리는 위와 같습니다.

 

미디어위키가 이미 설치되어 있는 경우

기존 설치 미디어위키 디렉터리  삭제

study@study-VirtualBox:/var/www/html$ ls -F -1
index.html
phpinfo.php
virtualhost01.net/
w/
study@study-VirtualBox:/var/www/html$ 

웹서버 문서 루트 디렉터리 안의 하위 디렉터리와 파일을 확인해봅시시다.

저의 경우 위 링크의 연재를 위해 만든 미디어위키 디렉터리 w가 있습니다.

미디어위키 디렉터리를 삭제하기 전에 미디어위키 디렉터리에서 LocalSettings.php  파일을 다른 곳에 따로 복사해 보관해둡니다.

 

study@study-VirtualBox:/var/www/html$ sudo rm -rf w
[sudo] study의 암호: 
study@study-VirtualBox:/var/www/html$ ls -F -1
index.html
phpinfo.php
virtualhost01.net/
study@study-VirtualBox:/var/www/html$ 

이 연재에서는 GIt으로 미디어위키를 새로 설치할 것이므로 기존 미디어위키 디렉터리는 지워주도록 하겠습니다.

 

기존 설치 미디어위키가 사용한 DB 계정과 DB  삭제

미디어위키를 설치했다면 미디어위키를 위한 DB 계정과 DB도 만들어졌을 것이므로 기존 DB 계정과 DB 역시 제거해줍니다.

 

먼저 DB 계정을 확인해줍니다.

study@study-VirtualBox:~$ sudo mysql
[sudo] study의 암호: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.5.9-MariaDB-1:10.5.9+maria~focal mariadb.org binary distribution

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)]> SELECT User, Host FROM mysql.user;
+-------------+-----------------------+
| User        | Host                  |
+-------------+-----------------------+
| study       | %                     |
| wikiuser    | %                     |
| mariadb.sys | localhost             |
| mysql       | localhost             |
| phpmyadmin  | localhost             |
| root        | localhost             |
| study       | localhost             |
| wikiuser    | localhost             |
| wikiuser    | localhost.localdomain |
+-------------+-----------------------+
9 rows in set (0.001 sec)

MariaDB [(none)]> 

 

DB 계정이 보입니다. 확인해보니 미디어위키용 DB 계정으로 사용한 wikiuser 셋이 보입니다. 모두 삭제하도록 합시다.

DB에서는 DROP USER가 계정 삭제 명령입니다.

MariaDB [(none)]> DROP USER 'wikiuser'@'%','wikiuser'@'localhost','wikiuser'@'localhost.localdomain';
Query OK, 0 rows affected (0.063 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> SELECT User, Host FROM mysql.user;
+-------------+-----------+
| User        | Host      |
+-------------+-----------+
| study       | %         |
| mariadb.sys | localhost |
| mysql       | localhost |
| phpmyadmin  | localhost |
| root        | localhost |
| study       | localhost |
+-------------+-----------+
6 rows in set (0.001 sec)

MariaDB [(none)]> 

 

이제 DB를 제거합시다. 먼저 기존 DB를 확인해봅시다.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| phpmyadmin         |
| wikidb             |
+--------------------+
5 rows in set (0.000 sec)

MariaDB [(none)]>

미디어위키용으로 생성한 DB인 wikidb가 보입니다. 이 DB를 삭제합시다.

 

MariaDB [(none)]> DROP DATABASE wikidb;
Query OK, 58 rows affected (0.854 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| phpmyadmin         |
+--------------------+
4 rows in set (0.000 sec)

MariaDB [(none)]> 

DB를 삭제하고 DB 목록을 확인해보면 정상적으로 삭제된 것을 확인할 수 있습니다.

 

MariaDB [(none)]> exit;
Bye
study@study-VirtualBox:~$ 

작업을 마치고 MariaDB 콘솔에서 빠져나와주면 됩니다.


미디어위키 Core 저장소 복제

미디어위키는 Gerrit에 호스팅된 미디어위키의 Core와 각종 Skin 및 Extension 그리고 그외 미디어위키 구동에 필요한 외부 라이브러리들을 Git을 통해 내려받을 수 있습니다.

 

가장 먼저 할 일은 미디어위키의 Core 저장소를 서버에 복제하는 것입니다.

미디어위키는 여러 저장소 복제 방식을 지원하는데 하나는 개발자들을 위한 최신 브랜치 master를 복제하는 것이고, 다른 하나는 안정 브랜치만을 복제하는 것입니다.

물론 전제 저장소를 활용하는 방법도 있습니다만 해당 방법은 따로 연재하도록 하겠습니다.

링크

 

개발자들을 위한 master 브랜치를 복제(clone)해 사용하기 위해서는 미디어위키 개발자 계정을 가지고 있어야 합니다.

그러나 이 개발자 계정 사용자 전용의 master 브랜치는미디어위키의 최신 기술 및 기능을 적용할 수 있는 이점이 있지만 충분히 검증되지 못한 코드가 적용되어 각종 오류를 발생시킬 수 있습니다. 노련한 개발자라면 빠른 시간 내에 능숙하게 대처하고 문제점을 해결할 수 있는 코드를 커밋함으로써 보다 안정적이고 유용한 미디어위키 개발 및 유지보수에 일익을 담당할 수 있을 것입니다. 그러나 미숙한 개발자 또는 비개발자의 경우 대처가 쉽지 않을 수 있습니다.

 

더구나 위키 서비스를 실제로 외부 사용자에게 제공할 경우 서비스의 가장 중요한 덕목은 안정적인 서비스 제공입니다. 서비스를 이용하는 일반 사용자에게 빠르게 적용되긴 하지만 아직 불안정한 최신 기술은 피로감과 불안감을 유발합니다. 이것은 위키 서비스에도 적용됩니다.

따라서 상주해 유지보수를 전담할 숙련 개발자가 없는 경우 master 브랜치를 적용하기보다는 안정 브랜치 특히 LTS 브랜치를 사용하는 것이 좋습니다.

 

여기서는 2021년 4월 현재 미디어위키의 최신 안정 브랜치이자 LTS 브랜치인 1.35 브랜치 그것도 가장 최신 브랜치인 1.35.2 브랜치를 Git으로 설치하고 유지보수 하는 방법에 대해 연재하도록 하겠습니다.

 

study@study-VirtualBox:/var/www/html$ sudo  git clone https://gerrit.wikimedia.org/r/mediawiki/core.git --branch REL1_35 w

웹서버의 문서 루트 디렉터리에서 위의 git의 clone 명령을 그대로 적어 실행해줍니다.

초심자들을 위해 위 명령을 해석하면 다음과 같습니다.

git clone 명령 사용법

명령: $ sudo git clone https://gerrit.wikimedia.org/r/mediawiki/core.git --branch REL1_35 w

sudo : 관리자 권한으로 실행

git clone : Git의 저장소 복제(clone) 명령 실행

https://gerrit.wikimedia.org/r/mediawiki/core.git : 복제할 저장소 주소

--branch REL1_35 : 지정 저장소의 데이터들 중에서 복제할 특정 브랜치 지정

w : 복제할 데이터를 저장할 디렉터리의 이름 지정 (여기서는 w라는 이름의 디렉터리를 생성)

 

study@study-VirtualBox:/var/www/html$ sudo  git clone https://gerrit.wikimedia.org/r/mediawiki/core.git --branch REL1_35 w
'w'에 복제합니다...
remote: Counting objects: 20170, done
remote: Finding sources: 100% (1255/1255)
remote: Getting sizes: 100% (746/746)
remote: Compressing objects:  99% (40561/40562)
remote: Total 917093 (delta 617), reused 916505 (delta 360)
오브젝트를 받는 중: 100% (917093/917093), 294.22 MiB | 8.64 MiB/s, 완료.
델타를 알아내는 중: 100% (780740/780740), 완료.
파일을 갱신합니다: 100% (9027/9027), 완료.
study@study-VirtualBox:/var/www/html$ 

Git의 클론 명령을 실행하면 위와 같이 진행됩니다.

 

복제한 저장소의 내용물 확인

study@study-VirtualBox:/var/www/html$ ls -F -1
index.html
phpinfo.php
virtualhost01.net/
w/
study@study-VirtualBox:/var/www/html$ 

 

study@study-VirtualBox:/var/www/html$ tree -F -L 1 w
w
├── CODE_OF_CONDUCT.md
├── COPYING
├── CREDITS
├── DEVELOPERS.md
├── FAQ
├── Gruntfile.js
├── HISTORY
├── INSTALL
├── README.md
├── RELEASE-NOTES-1.35
├── SECURITY
├── UPGRADE
├── api.php
├── autoload.php
├── cache/
├── composer.json
├── composer.local.json-sample
├── docker-compose.yml
├── docs/
├── extensions/
├── images/
├── img_auth.php
├── includes/
├── index.php
├── jsduck.json
├── languages/
├── load.php
├── maintenance/
├── mw-config/
├── opensearch_desc.php
├── package-lock.json
├── package.json
├── phpunit.xml.dist
├── resources/
├── rest.php
├── skins/
├── tests/
├── thumb.php
├── thumb_handler.php
└── vendor/

12 directories, 28 files
study@study-VirtualBox:/var/www/html$ 

ls 명령과 tree 명령을 사용해 저장소 복제가 정상적으로 이루어졌는지 확인합니다.

참고로 tree 명령은 tree 패키지를 따로 설치해야만 사용할 수 있습니다.

tree 사용법은 위 링크를 참고하시기 바랍니다.

 

study@study-VirtualBox:/var/www/html$ cd w
study@study-VirtualBox:/var/www/html/w$ 

cd 명령을 이용해 복제한 미디어위키 디렉터리로 이동합니다.

 

미디어위키 태그 확인

study@study-VirtualBox:/var/www/html/w$ git tag -l | sort -V

미디어위키의 특정 안정판들은 태그(tag)를 통해 추적 가능합니다.

위 명령은 사용 가능한 모든 태그들을 확인할 수 있습니다.

 

study@study-VirtualBox:/var/www/html/w$ git tag -l | sort -V
1.1.0
1.2.0
1.2.0rc1
1.2.0rc2
1.2.0rc3
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.3.0
1.3.0beta1
1.3.0beta2
1.3.0beta3
1.3.0beta4
1.3.0beta4a
1.3.0beta5
1.3.0beta6
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
1.3.7
1.3.8
1.3.9
1.3.10
1.3.11
1.3.12
1.3.13
1.3.14
1.3.15
1.3.16
1.3.17
1.3.18
1.4.0
1.4.0beta
1.4.0beta1
1.4.0beta2
1.4.0beta4
1.4.0beta5
1.4.0beta6
1.4.0rc1
1.4.1
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.5.0
1.5.0alpha1
1.5.0alpha2
1.5.0beta1
1.5.0beta2
1.5.0beta3
1.5.0beta4
1.5.0rc1
1.5.0rc2
1.5.1
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.6.0
1.6.1
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.6.10
1.6.11
1.6.12
1.7.0
1.7.1
1.7.2
1.7.3
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.9.0
1.9.0rc1
1.9.0rc2
1.9.1
1.9.2
1.9.3
1.9.4
1.9.5
1.9.6
1.10.0
1.10.0rc1
1.10.0rc2
1.10.1
1.10.2
1.10.3
1.10.4
1.11.0
1.11.0rc1
1.11.1
1.11.2
1.12.0
1.12.0rc1
1.12.1
1.12.2
1.12.3
1.12.4
1.13.0
1.13.0rc1
1.13.0rc2
1.13.1
1.13.2
1.13.3
1.13.4
1.13.5
1.14.0
1.14.0rc1
1.14.1
1.15.0
1.15.0rc1
1.15.1
1.15.2
1.15.3
1.15.4
1.15.5
1.16.0
1.16.0beta1
1.16.0beta2
1.16.0beta3
1.16.1
1.16.2
1.16.3
1.16.4
1.16.5
1.17.0
1.17.0beta1
1.17.0rc1
1.17.1
1.17.2
1.17.3
1.17.4
1.17.5
1.18.0
1.18.0beta1
1.18.0rc1
1.18.1
1.18.2
1.18.3
1.18.4
1.18.5
1.18.6
1.19.0
1.19.0beta1
1.19.0beta2
1.19.0rc1
1.19.1
1.19.2
1.19.3
1.19.4
1.19.5
1.19.6
1.19.7
1.19.8
1.19.9
1.19.10
1.19.11
1.19.12
1.19.13
1.19.14
1.19.15
1.19.16
1.19.17
1.19.18
1.19.19
1.19.20
1.19.21
1.19.22
1.19.23
1.19.24
1.20.0
1.20.0rc1
1.20.0rc2
1.20.1
1.20.2
1.20.3
1.20.4
1.20.5
1.20.6
1.20.7
1.20.8
1.21.0
1.21.1
1.21.2
1.21.3
1.21.4
1.21.5
1.21.6
1.21.7
1.21.8
1.21.9
1.21.10
1.21.11
1.22.0
1.22.0rc0
1.22.0rc1
1.22.0rc2
1.22.0rc3
1.22.0rc-FINAL
1.22.1
1.22.2
1.22.3
1.22.4
1.22.5
1.22.6
1.22.7
1.22.8
1.22.9
1.22.10
1.22.11
1.22.12
1.22.13
1.22.14
1.22.15
1.23.0
1.23.0rc0
1.23.0-rc.1
1.23.0-rc.2
1.23.0-rc.3
1.23.1
1.23.2
1.23.3
1.23.4
1.23.5
1.23.6
1.23.7
1.23.8
1.23.9
1.23.10
1.23.11
1.23.12
1.23.13
1.23.14
1.23.15
1.23.16
1.23.17
1.24.0
1.24.0-rc.0
1.24.0-rc.1
1.24.0-rc.2
1.24.0-rc.3
1.24.1
1.24.2
1.24.3
1.24.4
1.24.5
1.24.6
1.25.0
1.25.0-rc.0
1.25.1
1.25.2
1.25.3
1.25.4
1.25.5
1.25.6
1.26.0
1.26.1
1.26.2
1.26.3
1.26.4
1.27.0
1.27.0-rc.0
1.27.0-rc.1
1.27.1
1.27.2
1.27.3
1.27.4
1.27.5
1.27.6
1.27.7
1.28.0
1.28.0-rc.0
1.28.0-rc.1
1.28.1
1.28.2
1.28.3
1.29.0
1.29.0-rc.0
1.29.0-rc.1
1.29.1
1.29.2
1.29.3
1.30.0
1.30.0-rc.0
1.30.1
1.30.2
1.31.0
1.31.0-rc.0
1.31.0-rc.1
1.31.0-rc.2
1.31.1
1.31.2
1.31.3
1.31.4
1.31.5
1.31.6
1.31.7
1.31.8
1.31.9
1.31.10
1.31.11
1.31.12
1.31.13
1.31.14
1.32.0
1.32.0-rc.0
1.32.0-rc.1
1.32.0-rc.2
1.32.1
1.32.2
1.32.3
1.32.4
1.32.5
1.32.6
1.33.0
1.33.0-rc.0
1.33.1
1.33.2
1.33.3
1.33.4
1.34.0
1.34.0-rc.0
1.34.0-rc.1
1.34.1
1.34.2
1.34.3
1.34.4
1.35.0
1.35.0-rc.0
1.35.0-rc.1
1.35.0-rc.2
1.35.0-rc.3
1.35.1
1.35.2
study@study-VirtualBox:/var/www/html/w$ 

이렇게 수많은 태그들을 추적, 적용할 수 있다고 표시됩니다.

그러나 이 모든 태그들이 의미를 가지기 위해서는 미디어위키의 저장소 전체를 복제해야 합니다.

여기서는 1.35 브랜치만 복제한 것이므로 위의 태그는 의미가 없습니다.

미디어위키 Core 전체 저장소를 온전히 활용하여 버전을 손쉽게 바꾸고자 하는 분들은 아래 링크의 연재를 참고하시기 바랍니다.

링크

 

사용할 브랜치의 태그 지정

study@study-VirtualBox:/var/www/html/w$ sudo git checkout 1.35.2

사용할 브랜치의 태그를 지정(checkout)합니다.

 

study@study-VirtualBox:/var/www/html/w$ sudo git checkout 1.35.2
[sudo] study의 암호: 
Note: switching to '1.35.2'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD의 현재 위치는 e5823c068a Prep 1.35.2
study@study-VirtualBox:/var/www/html/w$ 

사용하고자 하는 브랜치의 태그를 체크아웃하면 위와 같이 진행됩니다.

이것으로 사용할 버전이 설정됩니다.

 

스킨, 익스텐션, 외부 라이브러리의 미복제 상태 확인

Git을 통한 저장소 복제가 아니라 미디어위키 공식 사이트를 통해 배포되는 압축 아카이브 파일에는 미디어위키의 Core 부분 뿐만 아니라 몇 개의 기본 스킨과 십 수개에 달하는 기본 익스텐션 그리고 필수 외부 라이브러리들이 함께 포함되어 있기 때문에 해당 파일만으로 미디어위키를 설치할 있습니다.

 

그러나 위 과정 같이 Git을 통해 저장소 복제한 것은 미디어위키의 Core 부분입니다. 스킨이나 익스텐션 그외 필수 외부 라이브러리는 포함되어 있지 않습니다.

해당 부분을 확인해봅시다.

 

study@study-VirtualBox:/var/www/html/w$ ls -F -1 skins
MonoBook/
README
Timeless/
Vector/
study@study-VirtualBox:/var/www/html/w$ ls -F -1 extensions
CategoryTree/
Cite/
CiteThisPage/
CodeEditor/
ConfirmEdit/
Gadgets/
ImageMap/
InputBox/
Interwiki/
LocalisationUpdate/
MultimediaViewer/
Nuke/
OATHAuth/
PageImages/
ParserFunctions/
PdfHandler/
Poem/
README
Renameuser/
ReplaceText/
Scribunto/
SecureLinkFixer/
SpamBlacklist/
SyntaxHighlight_GeSHi/
TemplateData/
TextExtracts/
TitleBlacklist/
VisualEditor/
WikiEditor/
study@study-VirtualBox:/var/www/html/w$ 

ls 명령으로 스킨과 익스텐션 디렉터리의 내용을 확인해보면 각 스킨과 익스텐션별 디렉터리가 존재합니다. 따라서 주의 깊게 확인하지 않으면 스킨과 익스텐션에 필요한 하위 디렉터리와 파일들도 다운된 것처럼 착각할 수 있습니다.

 

study@study-VirtualBox:/var/www/html/w$ tree -h skins
skins
├── [4.0K]  MonoBook
├── [1.2K]  README
├── [4.0K]  Timeless
└── [4.0K]  Vector

3 directories, 1 file
study@study-VirtualBox:/var/www/html/w$ tree -h extensions
extensions
├── [4.0K]  CategoryTree
├── [4.0K]  Cite
├── [4.0K]  CiteThisPage
├── [4.0K]  CodeEditor
├── [4.0K]  ConfirmEdit
├── [4.0K]  Gadgets
├── [4.0K]  ImageMap
├── [4.0K]  InputBox
├── [4.0K]  Interwiki
├── [4.0K]  LocalisationUpdate
├── [4.0K]  MultimediaViewer
├── [4.0K]  Nuke
├── [4.0K]  OATHAuth
├── [4.0K]  PageImages
├── [4.0K]  ParserFunctions
├── [4.0K]  PdfHandler
├── [4.0K]  Poem
├── [1.0K]  README
├── [4.0K]  Renameuser
├── [4.0K]  ReplaceText
├── [4.0K]  Scribunto
├── [4.0K]  SecureLinkFixer
├── [4.0K]  SpamBlacklist
├── [4.0K]  SyntaxHighlight_GeSHi
├── [4.0K]  TemplateData
├── [4.0K]  TextExtracts
├── [4.0K]  TitleBlacklist
├── [4.0K]  VisualEditor
└── [4.0K]  WikiEditor

28 directories, 1 file
study@study-VirtualBox:/var/www/html/w$ 

그러나 tree 명령을 실행해 확인해보면 스킨과 익스텐션별 최상위 디렉터리만 존재하고 그 안에는 아무런 디렉터리나 파일도 없는 것는 것을 확인할 수 있습니다. 

 

디렉터리 내 데이터 부재를 보다 확실히 하기 위해 ls 명령으로 각 스킨이나 익스텐션의 내용물을 확인해봅시다.

study@study-VirtualBox:/var/www/html/w$ ls -al extensions/Cite
합계 8
drwxr-xr-x  2 root root 4096  4월 23 14:55 .
drwxr-xr-x 30 root root 4096  4월 23 14:55 ..
study@study-VirtualBox:/var/www/html/w$

위는 미디어위키 디렉터리의 기본 제공 익스텐션들 중 하나인 Cite입니다.

git clone을 통해 미디어위키 Core 저장소를 복제한 후 extensions 디렉터리 안의 Cite 디렉터리를 확인해보면 상위 디렉터리인 Cite만 존재할 뿐 그 안에는 아무런 파일도 존재하지 않습니다.

Cite 익스텐션 뿐만 아니라 다른 익스텐션과 스킨도 마찬가지 입니다.

 

 

study@study-VirtualBox:/var/www/html/w$ ls vendor
study@study-VirtualBox:/var/www/html/w$ 

vendor 디렉터리는 미디어위키를 위한 외부 PHP 라이브러리들이 설치되는 장소입니다.

 

study@study-VirtualBox:/var/www/html/w$ ls -al vendor
합계 8
drwxr-xr-x  2 root root 4096  4월 23 14:55 .
drwxr-xr-x 17 root root 4096  4월 23 14:58 ..
study@study-VirtualBox:/var/www/html/w$ 

그러나 스킨및 익스텐션 디렉터리와 마찬가지로 이 vendor 디렉터리도 텅텅 비어 있습니다.

 

study@study-VirtualBox:/var/www/html/w$ tree -h vendor
vendor

0 directories, 0 files
study@study-VirtualBox:/var/www/html/w$ 

 

기본 스킨과 익스텐션 그리고 외부 라이브러리 설치 위한 하위 모듈 설치

이제 미디어위키에서 공식적으로 제공되는 압축 아카이브 파일(Tarball 등)의 경우 함께 제공되는 기본 스킨과 익스텐션 그리고 외부 라이브러리들을 설치하기 위해서 미디어위키용 각종 Git 하위 모듈들을 설치, 업데이트해주어야 합니다.

study@study-VirtualBox:/var/www/html/w$ sudo git submodule update --init --recursive

미디어위키용 각종 Git 하위 모듈들을 설치, 업데이트 명령은 위와 같습니다.

 

study@study-VirtualBox:/var/www/html/w$ sudo git submodule update --init --recursive
'extensions/CategoryTree' 경로에 대해 'extensions/CategoryTree' (https://gerrit.wikimedia.org/r/mediawiki/extensions/CategoryTree) 하위 모듈 등록
'extensions/Cite' 경로에 대해 'extensions/Cite' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Cite) 하위 모듈 등록
'extensions/CiteThisPage' 경로에 대해 'extensions/CiteThisPage' (https://gerrit.wikimedia.org/r/mediawiki/extensions/CiteThisPage) 하위 모듈 등록
'extensions/CodeEditor' 경로에 대해 'extensions/CodeEditor' (https://gerrit.wikimedia.org/r/mediawiki/extensions/CodeEditor) 하위 모듈 등록
'extensions/ConfirmEdit' 경로에 대해 'extensions/ConfirmEdit' (https://gerrit.wikimedia.org/r/mediawiki/extensions/ConfirmEdit) 하위 모듈 등록
'extensions/Gadgets' 경로에 대해 'extensions/Gadgets' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Gadgets) 하위 모듈 등록
'extensions/ImageMap' 경로에 대해 'extensions/ImageMap' (https://gerrit.wikimedia.org/r/mediawiki/extensions/ImageMap) 하위 모듈 등록
'extensions/InputBox' 경로에 대해 'extensions/InputBox' (https://gerrit.wikimedia.org/r/mediawiki/extensions/InputBox) 하위 모듈 등록
'extensions/Interwiki' 경로에 대해 'extensions/Interwiki' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Interwiki) 하위 모듈 등록
'extensions/LocalisationUpdate' 경로에 대해 'extensions/LocalisationUpdate' (https://gerrit.wikimedia.org/r/mediawiki/extensions/LocalisationUpdate) 하위 모듈 등록
'extensions/MultimediaViewer' 경로에 대해 'extensions/MultimediaViewer' (https://gerrit.wikimedia.org/r/mediawiki/extensions/MultimediaViewer) 하위 모듈 등록
'extensions/Nuke' 경로에 대해 'extensions/Nuke' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Nuke) 하위 모듈 등록
'extensions/OATHAuth' 경로에 대해 'extensions/OATHAuth' (https://gerrit.wikimedia.org/r/mediawiki/extensions/OATHAuth) 하위 모듈 등록
'extensions/PageImages' 경로에 대해 'extensions/PageImages' (https://gerrit.wikimedia.org/r/mediawiki/extensions/PageImages) 하위 모듈 등록
'extensions/ParserFunctions' 경로에 대해 'extensions/ParserFunctions' (https://gerrit.wikimedia.org/r/mediawiki/extensions/ParserFunctions) 하위 모듈 등록
'extensions/PdfHandler' 경로에 대해 'extensions/PdfHandler' (https://gerrit.wikimedia.org/r/mediawiki/extensions/PdfHandler) 하위 모듈 등록
'extensions/Poem' 경로에 대해 'extensions/Poem' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Poem) 하위 모듈 등록
'extensions/Renameuser' 경로에 대해 'extensions/Renameuser' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Renameuser) 하위 모듈 등록
'extensions/ReplaceText' 경로에 대해 'extensions/ReplaceText' (https://gerrit.wikimedia.org/r/mediawiki/extensions/ReplaceText) 하위 모듈 등록
'extensions/Scribunto' 경로에 대해 'extensions/Scribunto' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Scribunto) 하위 모듈 등록
'extensions/SecureLinkFixer' 경로에 대해 'extensions/SecureLinkFixer' (https://gerrit.wikimedia.org/r/mediawiki/extensions/SecureLinkFixer) 하위 모듈 등록
'extensions/SpamBlacklist' 경로에 대해 'extensions/SpamBlacklist' (https://gerrit.wikimedia.org/r/mediawiki/extensions/SpamBlacklist) 하위 모듈 등록
'extensions/SyntaxHighlight_GeSHi' 경로에 대해 'extensions/SyntaxHighlight_GeSHi' (https://gerrit.wikimedia.org/r/mediawiki/extensions/SyntaxHighlight_GeSHi) 하위 모듈 등록
'extensions/TemplateData' 경로에 대해 'extensions/TemplateData' (https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateData) 하위 모듈 등록
'extensions/TextExtracts' 경로에 대해 'extensions/TextExtracts' (https://gerrit.wikimedia.org/r/mediawiki/extensions/TextExtracts) 하위 모듈 등록
'extensions/TitleBlacklist' 경로에 대해 'extensions/TitleBlacklist' (https://gerrit.wikimedia.org/r/mediawiki/extensions/TitleBlacklist) 하위 모듈 등록
'extensions/VisualEditor' 경로에 대해 'extensions/VisualEditor' (https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor) 하위 모듈 등록
'extensions/WikiEditor' 경로에 대해 'extensions/WikiEditor' (https://gerrit.wikimedia.org/r/mediawiki/extensions/WikiEditor) 하위 모듈 등록
'skins/MonoBook' 경로에 대해 'skins/MonoBook' (https://gerrit.wikimedia.org/r/mediawiki/skins/MonoBook) 하위 모듈 등록
'skins/Timeless' 경로에 대해 'skins/Timeless' (https://gerrit.wikimedia.org/r/mediawiki/skins/Timeless) 하위 모듈 등록
'skins/Vector' 경로에 대해 'skins/Vector' (https://gerrit.wikimedia.org/r/mediawiki/skins/Vector) 하위 모듈 등록
'vendor' 경로에 대해 'vendor' (https://gerrit.wikimedia.org/r/mediawiki/vendor) 하위 모듈 등록
'/var/www/html/w/extensions/CategoryTree'에 복제합니다...
'/var/www/html/w/extensions/Cite'에 복제합니다...
'/var/www/html/w/extensions/CiteThisPage'에 복제합니다...
'/var/www/html/w/extensions/CodeEditor'에 복제합니다...
'/var/www/html/w/extensions/ConfirmEdit'에 복제합니다...
'/var/www/html/w/extensions/Gadgets'에 복제합니다...
'/var/www/html/w/extensions/ImageMap'에 복제합니다...
'/var/www/html/w/extensions/InputBox'에 복제합니다...
'/var/www/html/w/extensions/Interwiki'에 복제합니다...
'/var/www/html/w/extensions/LocalisationUpdate'에 복제합니다...
'/var/www/html/w/extensions/MultimediaViewer'에 복제합니다...
'/var/www/html/w/extensions/Nuke'에 복제합니다...
'/var/www/html/w/extensions/OATHAuth'에 복제합니다...
'/var/www/html/w/extensions/PageImages'에 복제합니다...
'/var/www/html/w/extensions/ParserFunctions'에 복제합니다...
'/var/www/html/w/extensions/PdfHandler'에 복제합니다...
'/var/www/html/w/extensions/Poem'에 복제합니다...
'/var/www/html/w/extensions/Renameuser'에 복제합니다...
'/var/www/html/w/extensions/ReplaceText'에 복제합니다...
'/var/www/html/w/extensions/Scribunto'에 복제합니다...
'/var/www/html/w/extensions/SecureLinkFixer'에 복제합니다...
'/var/www/html/w/extensions/SpamBlacklist'에 복제합니다...
'/var/www/html/w/extensions/SyntaxHighlight_GeSHi'에 복제합니다...
'/var/www/html/w/extensions/TemplateData'에 복제합니다...
'/var/www/html/w/extensions/TextExtracts'에 복제합니다...
'/var/www/html/w/extensions/TitleBlacklist'에 복제합니다...
'/var/www/html/w/extensions/VisualEditor'에 복제합니다...
'/var/www/html/w/extensions/WikiEditor'에 복제합니다...
'/var/www/html/w/skins/MonoBook'에 복제합니다...
'/var/www/html/w/skins/Timeless'에 복제합니다...
'/var/www/html/w/skins/Vector'에 복제합니다...
'/var/www/html/w/vendor'에 복제합니다...
하위 모듈 경로 'extensions/CategoryTree': '6a69f1ade607add20b119bd91fd34525edf1049c' 체크아웃
하위 모듈 경로 'extensions/Cite': 'bc16b0527f34f002d327154092cc05a5d2dcb0b9' 체크아웃
하위 모듈 경로 'extensions/CiteThisPage': '8726d121cd942abc94aa7b4621132b87f26714e5' 체크아웃
하위 모듈 경로 'extensions/CodeEditor': '1fafe27dc395ba1bc636f69fca15e1bb5a59caae' 체크아웃
하위 모듈 경로 'extensions/ConfirmEdit': 'eceeda60d620499a6f6990b08b0d5a264606c2de' 체크아웃
하위 모듈 경로 'extensions/Gadgets': '03b8b5d8b6299c3fe95e8a792dee9304a79692f3' 체크아웃
하위 모듈 경로 'extensions/ImageMap': '7c250466b476c62ac80d797f107760981b980f9f' 체크아웃
하위 모듈 경로 'extensions/InputBox': '68d995badf9c28bbb706d263257d63a18e5fb800' 체크아웃
하위 모듈 경로 'extensions/Interwiki': '224d4befa00fa980523ab921368a14dc0230f468' 체크아웃
하위 모듈 경로 'extensions/LocalisationUpdate': '49cb2803c5e07e72c5eb65714aa4f4a6bae0e3c3' 체크아웃
하위 모듈 경로 'extensions/MultimediaViewer': '4b3219b60eb6c3b9718ff18887610e29cb88cc69' 체크아웃
하위 모듈 경로 'extensions/Nuke': '0a74305a9a35fb5411ab0668cea167a53f0657fc' 체크아웃
하위 모듈 경로 'extensions/OATHAuth': '2479f52deaff2efd8b556bf9d81c67b769c6a7f1' 체크아웃
하위 모듈 경로 'extensions/PageImages': '20909a1c3c26465c2999235d6b37970a045a1126' 체크아웃
하위 모듈 경로 'extensions/ParserFunctions': '5c84940834662a74b5b3f18fadeb5df133f1e8dc' 체크아웃
하위 모듈 경로 'extensions/PdfHandler': 'a2ab93f4f3096d8da91f9ca9866b26ad692c7850' 체크아웃
하위 모듈 경로 'extensions/Poem': '23bd68e266f5a39eff31de31a80701f2b49e09d5' 체크아웃
하위 모듈 경로 'extensions/Renameuser': '3bcbd8d2d17ae3c01506066e91ab0206f05fdcfc' 체크아웃
하위 모듈 경로 'extensions/ReplaceText': 'feb8a9ce7fc3f809067142a438242de5f9211599' 체크아웃
하위 모듈 경로 'extensions/Scribunto': 'd21b655d99b60ee678538125c3f323f30b748bf6' 체크아웃
하위 모듈 경로 'extensions/SecureLinkFixer': '47f12670b23b5a59e7fdd1a2bd9b5a49693940c8' 체크아웃
하위 모듈 경로 'extensions/SpamBlacklist': '092e4881d136f68b455cb87217b045fa1e8b28fa' 체크아웃
하위 모듈 경로 'extensions/SyntaxHighlight_GeSHi': '0e4cce61224b64b2eced7b6ba6d3830e88ad1c2b' 체크아웃
하위 모듈 경로 'extensions/TemplateData': 'ba41c7d0b1b803167d0f33a615733310132133a0' 체크아웃
하위 모듈 경로 'extensions/TextExtracts': 'f225c911a70832bf370e457fe5cee2702faa95b1' 체크아웃
하위 모듈 경로 'extensions/TitleBlacklist': '84c647d9151ce9328b06f8b66784d49db097e894' 체크아웃
하위 모듈 경로 'extensions/VisualEditor': '07ed2531f268c14d05e8de5d0b91a241b45d9534' 체크아웃
'extensions/VisualEditor/lib/ve' 경로에 대해 'lib/ve' (https://gerrit.wikimedia.org/r/VisualEditor/VisualEditor.git) 하위 모듈 등록
'/var/www/html/w/extensions/VisualEditor/lib/ve'에 복제합니다...
하위 모듈 경로 'extensions/VisualEditor/lib/ve': '504e7d258fd402ddd9fe1d3fe80aced2120cf439' 체크아웃
하위 모듈 경로 'extensions/WikiEditor': '9bc2d0b806a33777fd66afb5e272203f735567e8' 체크아웃
하위 모듈 경로 'skins/MonoBook': '3a638f64e703cc13c7c3162c1ef4726663fbe92a' 체크아웃
하위 모듈 경로 'skins/Timeless': 'c2b39e7b08ffa210c6cda09ee4da89a0b3e64345' 체크아웃
하위 모듈 경로 'skins/Vector': '57326a0290555d8f70d9cbbf819c2494d15d5957' 체크아웃
하위 모듈 경로 'vendor': '327fc312540fd77b35651e4a167dd9645888a3a0' 체크아웃
study@study-VirtualBox:/var/www/html/w$ 

하위 모듈 설치 명령ㅇㄹ 실행하면 위와 같이 진행됩니다.

이제 스킨과 익스텐션 그리고 외부 라이브러리들이 설치되었는지 확인해봅시다.

 

study@study-VirtualBox:/var/www/html/w$ ls -F -1 skins/Vector
CODE_OF_CONDUCT.md
COPYING
Doxyfile
README.md
bundlesize.config.json
composer.json
dev-scripts/
hooks.txt
i18n/
includes/
jsdoc.json
package-lock.json
package.json
resources/
screenshots/
skin.json
skinStyles/
stories/
tests/
tsconfig.json
variables.less
study@study-VirtualBox:/var/www/html/w$ 

Vector 스킨의 디렉터리 안에 필요한 디렉터리와 파일들이 다운된 것을 확인할 수 있습니다.

 

study@study-VirtualBox:/var/www/html/w$ ls -F -1 extensions/Cite
AUTHORS.txt
CODE_OF_CONDUCT.md
COPYING.txt
Gruntfile.js
MIT-LICENSE.txt
README.md
composer.json
extension.json
i18n/
modules/
package-lock.json
package.json
src/
tests/
study@study-VirtualBox:/var/www/html/w$ 

Cite 익스텐션의 디렉터리 안에 필요한 디렉터리와 파일들이 다운된 것을 확인할 수 있습니다.

 

study@study-VirtualBox:/var/www/html/w$ ls -F -1 vendor
README.md
autoload.php
christian-riesen/
composer/
composer.json
composer.lock
cssjanus/
guzzlehttp/
jakobo/
liuggio/
oojs/
pear/
pleonasm/
psr/
ralouphie/
symfony/
wikimedia/
wip-requires.sh*
zordius/
study@study-VirtualBox:/var/www/html/w$ 

외부 라이브러리 디렉터리인 vendor 디렉터리 안에 필요한 디렉터리와 파일들이 다운된 것을 확인할 수 있습니다.

 

이제 미디어위키 인스톨을 위한 사전 준비 작업은 마무리되었습니다.

 

아래 링크의 미디어위키의 공식 문서는

외부 라이브러리 가져오기 파트가 있어 해당 방법에 대하여 자세히 설명하고 있습니다만 이것은 진행하지 마시기 바랍니다.

미디어위키의 하위 디렉터리 vendor는 외부 PHP 라이브러리들이 위치하는 곳입니다. 위에서 볼 수 있듯 Git으로 하위 모듈을 설치할 때 함께 설치됩니다.

 

그런데 미디어위키는 Composer를 사용하여 외부 PHP 라이브러리들을 관리할 수 있는데 만약 그렇게 되면 일반적인 방법으로 Git을 통한 버전 관리를 할 수 없게 됩니다.

따라서 개발자아 아닌 이상 추가적인 외부 라이브러리 관리 작업은 진행하지 마시기 바랍니다.

 

이제 미디어위키의 인스톨 작업을 진행하시면 됩니다.

 

인스톨 과정은 CLI 즉, 터미널 환경에서 진행하는 방법과 GUI 환경 즉, 웹브라우저 환경에서 진행하는 방법이 있습니다.

각 방법은 위 링크들을 참고하시기 바랍니다.

 

이제 미디어위키 인스톨을 위한 사전 준비 작업은 마무리되었습니다.

이제 미디어위키의 인스톨 작업을 진행하시면 됩니다.

 

인스톨 과정은 CLI 즉, 터미널 환경에서 진행하는 방법과 GUI 환경 즉, 웹브라우저 환경에서 진행하는 방법이 있습니다.

각 방법은 위 링크들을 참고하시기 바랍니다.

 

이것으로 미디어위키의 기본 설치는 완료됩니다. 그러나 설치하는 것으로 관리자 끝나는 것은 아닙니다. 말 그대로 미디어위키를 구동하기 위한 최소한의 설정만 완료된 것입니다.

이제 앞으로 무수한 세부 설정을 통한 최적화 작업과 위키 사용자를 위한 최선의 UI 및 UX를 제공하기 위한 각종 스킨 및 익스텐션들의 설치 및 이들을 위한 추가 설정 작업들이 기다리고 있습니다.

 

미디어위키 세부 설정과 관련해서는 아래 링크들을 참고하시기 바랍니다.