미디어위키도 워드프레스처럼 같은 소스 파일로 여러 사이트를 만들 수 있습니다.
워드프레스처럼 별도의 종합 설정 페이지가 없기 때문에 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_"; 코드에 변수를 추가하면 됩니다. 또는 하위 설정 파일에서 직접 값을 정의하면 됩니다.