반응형

미디어위키도 워드프레스처럼 같은 소스 파일로 여러 사이트를 만들 수 있습니다.

워드프레스처럼 별도의 종합 설정 페이지가 없기 때문에 LocalSettings.php 파일을 직접 수정해야 합니다.

멀티 위키 사이트 만들기

1. 첫 번째 위키 설치

첫 위키를 설치 완료합니다. 이미 설치되어 있다면 다음 과정으로 넘어갑니다.

설정 파일명 변경

LocalSettings.php 파일명 뒤에 DB명이나 Table 접두어를 붙여서 파일을 구분합니다.

워드프레스는 사이트를 생성할 때마다 wp_ 접두어 뒤에 숫자가 붙습니다.
같은 데이터베이스를 사용하려면 mw_2_와 같은 접두어를 사용하면 됩니다.

예) LocalSettings_wiki1.php

2. 가상 호스팅 설정

wiki2.mydomain.com처럼 서브 도메인을 설정합니다. 또는 mydomain.com/wiki2와 같이 가상의 경로를 설정합니다.

3. DB 설정

새 위키에서 사용할 데이터베이스를 준비합니다. 기존의 데이터베이스를 사용하려면 다음 과정으로 넘어갑니다.

4. 두 번째 위키 설치

새로 생성된 주소로 접속하면 설정 파일이 존재하지 않으므로 설치화면이 나타납니다. 또는 /mw-config 경로로 접속합니다.

설치 과정 중 새로 만든 데이터베이스명이나 기존 데이터베이스에서 사용할 새 테이블 접두어를 입력합니다.

설정 파일명 변경

설치를 완료하여 생성된 LocalSettings.php 파일의 이름을 변경합니다.

예) LocalSettings_wiki2.php

위키를 더 추가하려면 2번 항목부터 반복합니다.

LocalSettings.php 설정

LocalSettings.php 파일을 새로 만들고 아래 코드를 추가합니다. 서브 도메인과 새 데이터베이스를 사용할 때의 코드입니다.

<?php
# Protect against web entry
if ( !defined( 'MEDIAWIKI' ) ) {
	exit;
}

$wikis = [
    'wiki1.xxx.com' => 'wiki1',
    'wiki2.xxx.com' => 'wiki2',
];

$wikiID = $wikis[ $_SERVER['SERVER_NAME']];

## Database settings
$wgDBtype = 'mysql';
$wgDBserver = 'localhost';
$wgDBname = $wikiID;
$wgDBuser = 'xxxxxxxx';
$wgDBpassword = 'xxxxxxxx';

## MySQL specific settings
$wgDBprefix = "mw_";
$wgDBssl = false;

# MySQL table options to use during installation or update
$wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";

# Shared database table
# This has no effect unless $wgSharedDB is also set.
$wgSharedTables[] = "actor";

## Set $wgCacheDirectory to a writable directory on the web server
## to make your wiki go slightly faster. The directory should not
## be publicly accessible from the web.
#$wgCacheDirectory = "$IP/cache";
$wgCacheDirectory = "$IP/cache/$wgDBname";
$wgUploadDirectory = "$IP/images/$wgDBname";
$wgUploadPath = "/images/$wgDBname";

## Shared memory settings
$wgMainCacheType = CACHE_ACCEL;
$wgMemCachedServers = [];
$wgEnableSidebarCache = true;

## To enable image uploads, make sure the 'images' directory
## is writable, then set this to true:
$wgEnableUploads = true;
$wgUseImageMagick = true;
$wgImageMagickConvertCommand = '/usr/bin/convert';

# InstantCommons allows wiki to use images from https://commons.wikimedia.org
$wgUseInstantCommons = true;

# Periodically send a pingback to https://www.mediawiki.org/ with basic data
# about this MediaWiki instance. The Wikimedia Foundation shares this data
# with MediaWiki developers to help guide future development efforts.
$wgPingback = false;

# Site language code, should be one of the list in ./includes/languages/data/Names.php
$wgLanguageCode = 'ko';

# Time zone
$wgLocaltimezone = 'Asia/Seoul';

## Include
require_once 'LocalSettings_'.$wikis[$_SERVER['SERVER_NAME']].'.php';
?>

이전에 만들어진 LocalSettings_wiki?.php 파일들의 코드를 보면서 모든 위키에서 공통으로 사용할 코드를 LocalSettings.php로 이동합니다. 중복되는 코드는 삭제합니다.

세부 설정

$wgCacheDirectory, $wgUploadDirectory, $wgUploadPath 경로 값을 DB명으로 지정하면 사이트명을 변경하여도 혼란을 줄일 수 있습니다. 기존의 파일들은 해당 경로로 옮겨야 위키 페이지에 정상적으로 표시됩니다.

같은 데이터베이스를 사용하고 테이블명으로 구분하려면 $wgDBprefix = "mw_"; 코드에 변수를 추가하면 됩니다. 또는 하위 설정 파일에서 직접 값을 정의하면 됩니다.

반응형

관련글