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

미디어위키(Mediawiki) Short URL(짧은 주소, 단축 주소, 간편 URL, 단축 URL 등) 구현

씨실과 날실 2019. 4. 1. 09:00


Short URL에 대하여

우리는 웹브라우저로 웹문서를 볼 때 그 문서가 가지는 웹상 주소를 확인할 수 있습니다. 그런데 그 문서들이 지니는 주소는 꽤 길고 심지어는 각종 특수 기호도 쓰여 우리가 그 주소를 외우거나 직접 주소를 입력하여 방문하기가 번거롭습니다. 만약 이 주소가 짧다면 우리가 웹문서를 이용하기가 수월해질 것입니다.

이러한 생각에서 고안된 것이 바로 Short URL입니다. 이것을 우리는 짧은 주소, 단축 주소, 간편 URL, 단축 URL 등으로 다양하게 부릅니다.

이 Short URL을 쉽게 확인할 수 있는 것이 한국어 위키백과입니다. 한국어 위키백과 대문이 가지는 본래 주소는 아래와 같습니다.

그러나 우리가 보통 접하는 주소는 아래와 같습니다.

주소 구성이 간소화되어 알아보기가 손쉬워지고 주소 길이 자체도 짧아졌습니다.

이 Short URL은 기술상 몇 가지 장점을 가지는데요.

첫 번째로 실제 주소를 숨김으로써 보안에 유리합니다.

두 번째로 서버를 구성하는 소프트웨어 등이 변경될 때 주소를 안정적으로 유지될 수 있습니다.

세 번째로 방문자들이 읽기 쉽고 기억하여 입력하기가 쉽습니다.

네 번째로 적절히 구성한다면 검색엔진 최적화(SEO)에도 유리합니다.

이러한 이유로 많은 사이트들이 Short URL을 구성합니다.

이제 미디어위키에 이 Short URL을 구성하는 방법에 대해 알아보도록 하겠습니다.

Short URL 구성

미디어위키 간편 URL 소스 자동 생성

이 미디어위키를 구축할 정도의 지식과 경험을 가지고 계시는 분은 손쉽게 Short URL 구성 코드를 얻을 수 있는 방법이 있습니다.

미디어위키 간편 URL 소스 자동 생성 도우미 사이트

https://shorturls.redwerks.org/

위 사이트를 방문하면 간단한 입력만으로 손쉽게 자신의 미디어위키 환경에 맞는 Short URL 구성 코드를 얻을 수 있습니다. 이 코드들을 위 사이트에서 알려주는 방법대로 복사해 붙여주시면 됩니다.

수동 작업

미디어위키는 문서 URL이 다음과 같은 형식을 가지게 됩니다.

http://example.org/w/index.php/Page_title

- 공용게이트웨이 인터페이스(CGI)를 지원하지 않는 경우)


http://example.org/w/index.php?title=Page_title

- 공용게이트웨이(CGI)를 지원하는 경우)

참고로 버추얼박스 설치부터 제 연재를 그대로 따라오신 분들은 첫 번째 주소 형식일 것입니다.

CGI에 대해 궁금하신 분들은 아래 링크를 참고하시기 바랍니다.

어쨌든 위의 기본적인 미디어위키 문서 주소를 한국어 위키백과의 Short URL 형식으로 구성해보도록 하겠습니다.

미디어위키 설치 환경

OS : Ubuntu 18.04.2

Apache2 : Apache/2.4.29 (Ubuntu)

PHP7 : PHP 7.2.15-0ubuntu0.18.04.1

MariaDB : mysql  Ver 15.1 Distrib 10.3.12-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

phpMyAdmin : phpMyAdmin 4.6.6deb5


Apache2 설치 디렉토리 : /etc/apache2

미디어위키 설치 디렉토리 : /var/www/html/w

서버 root 권한이 있는 경우 1

apache2.conf 편집

/etc/apache2

## 미디어위키 Short_URL ##
# http://www.mediawiki.org/wiki/Manual:Short_URL/Apache

# RedirectMatch
# RedirectMatch /mediawiki/index.php/(.*)$ http://localhost/wiki/$1
# RedirectMatch /mediawiki/index.php?(.*)$ http://localhost/w/index.php?$1
# RedirectMatch /mediawiki/images/(.*)$ http://localhost/w/images/$1

# Alias
Alias /wiki /var/www/html/w/index.php
Alias /index.php /var/www/html/w/index.php
Alias /w/skins/ /var/www/html/w/skins/
Alias /w/images/ /var/www/html/w/images/

# Rewrite 엔진을 활성화
RewriteEngine On

# 위키 페이지로 접근하는 주소를 짧게 만듬
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]

# '/'를 메인 페이지로 리다이렉션
RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]

apache2.conf 파일 하단에 위 코드를 그대로 복사해 붙이고 저장해주시면 됩니다.

RedirectMatch는 기존 주소를 새 주소로 포워딩해주는 역할을 합니다. 따라서 새 사이트를 구축하는 경우에는 필요하지 않습니다.

위의 예시 코드상,

기존 주소는 http://도메인/mediawiki/index.php/표제어

새 주소는 http://도메인/wiki/표제어입니다.

검색엔진에 등록된 기존 주소가 끊어지지 않도록 하려면 RedirectMatch 3줄의 주석을 해제해주시면 됩니다.


# RedirectMatch /mediawiki/index.php/(.*)$ http://localhost/wiki/$

# : 주석 처리

/mediawiki/index.php/(.*)$ : 기존 미디어위키 설치 주소가 웹 서버 root 디렉토리/mediawiki/

http://localhost/wiki/$ : localhost를 자신의 도메인으로, wiki를 원하는 임의의 문자로 변경

mod_rewrite 모듈 활성화 및 apache2 재시작

study@study-VirtualBox:~$ sudo a2enmod rewrite
Module rewrite already enabled
study@study-VirtualBox:~$ sudo service apache2 restart
study@study-VirtualBox:~$  
Short URL을 쓰기 위해서는 mod_rewrite 모듈을 반드시 활성화해주어야 합니다.

LocalSettings.php 편집

## 미디어위키 Short_URL ##

# https://www.mediawiki.org/wiki/Manual:Short_URL
# $wgScriptPath = "/w";        // 이 변숫값은 30번째 줄에 이미 정의되어 있어  주석처리 합니다.
$wgScript = "$wgScriptPath/index.php";
$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;

LocalSettings.php 파일 하단에 위 코드를 복사해 붙여 주시면 됩니다.

서버 root 권한이 있는 경우 2

.htaccess

웹서버 root 디렉토리 아래(/var/www/html)

<IfModule rewrite_module>
    RewriteEngine On
    RewriteBase /

    # RewriteRule ^$ w/ [R,L]

    # don't touch some reserved urls
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule . - [L]

    # wiki article
    RewriteRule ^wiki/(.+)$ w/index.php/$1 [QSA,L]
</IfModule>

웹브라우저 주소창에 도메인 주소만 입력하면 바로 위키 사이트로 자동 접속되게끔 하려면 다섯 번 째 줄의 주석처리를 해제해주시면 됩니다.

LocalSettings.php 편집

## 미디어위키 Short_URL ##

# https://www.mediawiki.org/wiki/Manual:Short_URL
# $wgScriptPath = "/w";        // 이 변숫값은 30번째 줄에 이미 정의되어 있어  주석처리 합니다.
$wgScript = "$wgScriptPath/index.php";
$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;
$wgScriptExtension  = ".php";

서버 root 권한이 있는 경우 3 - 추천

wiki.conf 생성

/etc/apache2/sites-available

<Directory /var/www/html/w/>

  Options +FollowSymlinks
  AllowOverride All

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /var/www/html/w
 SetEnv HTTP_HOME /var/www/html/w

</Directory>



## 미디어위키 Short_URL ##
# http://www.mediawiki.org/wiki/Manual:Short_URL/Apache

# RedirectMatch
# RedirectMatch /mediawiki/index.php/(.*)$ http://localhost/wiki/$1
# RedirectMatch /mediawiki/index.php?(.*)$ http://localhost/w/index.php?$1
# RedirectMatch /mediawiki/images/(.*)$ http://localhost/w/images/$1

# Alias
Alias /wiki /var/www/html/w/index.php
Alias /index.php /var/www/html/w/index.php
Alias /w/skins/ /var/www/html/w/skins/
Alias /w/images/ /var/www/html/w/images/

# Rewrite 엔진을 활성화
RewriteEngine On

# 위키 페이지로 접근하는 주소를 짧게 만듬
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]

# '/'를 메인 페이지로 리다이렉션
RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]

위 코드 그대로 파일을 생성해 주시면 됩니다.

가상 호스트 기능을 사용하고 있다면, Rewrite 규칙들을 가상 호스트 선언 안쪽에 위치시켜야 합니다.

a2ensite 명령어 실행 및 apache2 재로드

study@study-VirtualBox:/etc/apache2/sites-available$ sudo a2ensite wiki.conf Enabling site wiki. To activate the new configuration, you need to run: systemctl reload apache2 study@study-VirtualBox:/etc/apache2/sites-available$ sudo systemctl reload apache2

만약 a2ensite 명령을 비활성화 하려면 a2ensite 문구를 a2dissite로 바꿔 실행해주시면 됩니다.

LocalSettings.php 편집

## 미디어위키 Short_URL ##

# https://www.mediawiki.org/wiki/Manual:Short_URL
# $wgScriptPath = "/w";        // 이 변숫값은 30번째 줄에 이미 정의되어 있어  주석처리 합니다.
$wgScript = "$wgScriptPath/index.php";
$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;

LocalSettings.php 파일 하단에 위 코드를 복사해 붙여 주시면 됩니다.

서버 root 권한이 없는 경우

아래는 원 주소에서 index.php 문구만 삭제하는 방법입니다.

.htaccess 파일 작성

/var/www/html/w

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /w/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /w/index.php [L]
</IfModule>

LocalSettings.php 편집

## 미디어위키 Short_URL ##

# https://www.mediawiki.org/wiki/Manual:Short_URL
# $wgScriptPath = "/w";        // 이 변숫값은 30번째 줄에 이미 정의되어 있어  주석처리 합니다.
$wgScript = "$wgScriptPath/index.php";
$wgArticlePath = "/w/$1";
$wgUsePathInfo = true;
$wgScriptExtension  = ".php";

LocalSettings.php 파일 하단에 위 코드를 복사해 붙여 주시면 됩니다.

제 글이 여러분께 조금이나마 도움이 되기를 바랍니다.