Manual:Wiki family/ko

아래는 한 위키보다 많이 호스트하기 위해 어떻게 미디어위키를 설정하는지에 대한 지침입니다. 같은 서버에 위치한 여러 위키는 위키 패밀리라 부릅니다.

거대한 switch 문
이것은 같은 소스 코드 체크아웃을 사용해, 단일 서버에 한 위키보다 많이 설치할 수 있도록 해줍니다.


 * 1) 웹서버에 웹 폴더로 미디어위키 파일을 올립니다.
 * 2) 사용할 수 있도록 초기 위키를 설치한다. 자세한 사항은, Manual:Installation guide를 봅니다.
 * 3) 설치를 성공하고 나서, LocalSettings.php를 위키의 루트 디렉터리 안에 옮기고 추적하기 쉽게 하는 방법으로 이름을 바꿉니다 (예를 들어, LocalSettings_myFirstWiki.php)
 * 4) 만들고 싶은 각 위키만큼 2단계와 3단계를 반복하여, 각 위키를 위해 새 LocalSettings.php를 만듭니다 (예를 들어, LocalSettings_anotherWiki.php, 등등)
 * 5) 두 개 이상의 구분되어 설치된 위키일 경우 주 위키의 파일 밖으로 작동하도록 병합할 수 있으며, 이름을 바꾸고 나서 각 LocalSettings.php 파일을 주 위키 폴더로 옮긴 다음, 각 LocalSettings.php 파일을 주 위키의 폴더를 가리키도록 $wgScriptPath 변수를 바꿉니다.
 * 6) 전역 설정을 위해 LocalSettings.php 파일을 만든 다음 아래의 두 가지 가능성에서 하나를 선택합니다:


 * 서버의 한 디렉터리로 연결하는 다른 (하위)도메인이 있다면, 이것을 사용하세요:


 * 같은 미디어위키 코드를 가리키는 여러 도메인을 설정하려면, 웹 서버와 가능한 DNS 환경 설정을 수정해야 할 수도 있습니다.

그걸 하는 방법에 대한 정보는 웹 서버 및/또는 웹 호스트의 설명서를 보세요.


 * 위키가 같은 도메인에 있지만 다른 경로에 있으면 (예,   등), 이같은 것을 사용할 수 있습니다:


 * 두번째 경우로 (디렉터리 기반 위키) Short URL을 사용할 경우, 두 디렉터리를 확인하고:, 소스를 심볼릭 링크한 다음 ,  에 적용할 필요가 있습니다.

(각 위키에 $wgDBname을 설정하여) 각 위키에 다른 DB를 사용하는 것을 권장합니다. 하지만 단일 데이터베이스로 제한된다면, 다른 설치를 구분하려면 다른 접두어 ($wgDBprefix)를 사용할 수 있습니다.

"이 위키는 사용할 수 없습니다. 환경 설정을 확인하세요." 대신에, 간단히 아무 인식할 수 없는 위키 URL을 "주" url로 넘겨주기하는 것이 유용할 수도 있습니다.

Updating wikifarm from the commandline
This method requires the $_SERVER["SERVER_NAME"] to be present to run maintenance/update.php - which of course it isn't, from the commandline. This can be overcome by setting an environment variable:

If you were using the subdirectory method, you can use:

Drupal-style sites
As above, this setup allows you to install more than one wiki using different databases on a single server, using the same source code. This setup has the advantage of being completely transparent to users and reasonably secure in terms of the images directory.


 * Create a base directory to contain all your MediaWiki files e.g..
 * Install MediaWiki and additional tools as usual to a version-declaring subdirectory(e.g., ).
 * Link the version-declaring directory to a code directory. e.g.,
 * Create a sites directory to contain our images and settings:
 * Setup the wiki as normal from the /code directory.
 * After successful installation, move LocalSettings.php into a sites directory that will be a match when the site is checked. For example, to capture http://mysite.com/mywiki, one would create the directory mysite.com.mywiki. e.g., . See the Drupal's settings.php file for more information on this.
 * If you intend to use media files, create an images directory in your site directory. e.g., . Make it writable as necessary.
 * Place the Drupal-style LocalSettings.php file in your main directory:
 * Modify the LocalSettings.php of each subsite to point to the right places:
 * First comment out the code relating to, (lines 16-20 in 1.15.3) as this is set to the code directory by.
 * Next insert the following two lines to ensure that image files are accessible, e.g.:  and  . These need to be put somewhere after the call to   (line 25 in 1.15.3), as the variables will otherwise be reset.
 * Make further modifications as required.


 * Prepare your Apache 2 installation. Example site: wiki.mysite.com
 * Create a link to the code directory, if required e.g.
 * Create an appropriate VHost configuration:

 ServerAdmin me@myserver.com DocumentRoot /home/web/wiki.mysite.com ServerName wiki.mysite.com CustomLog /var/log/apache2/wiki.mysite.log common # Alias for the site to be accessible Alias /mediawiki/code /home/web/mediawiki/code # Alias for Wiki so images work Alias /images /home/web/mediawiki/sites/wiki.mysite.com/images # If you want to password protect your site #  #   AuthType Basic #   AuthName "My protected Wiki" #   AuthUserFile /etc/apache2/htpasswd/users-mywiki #  require valid-user #  


 * If you are setting the sites up locally, update your  file with the site names.

The site should now work. In my case, I made another copy of the code from which to install and update my LocalSettings.php and databases.

Note that  in the companion Drupal code is undefined when running maintenance scripts from the command line, so this solution does not permit the use of maintenance scripts without some modification.

Modified Drupal-style method for Ubuntu
A simplified method for multiple wikis and multiple (or nested) subwikis on Ubuntu/Kubuntu that is loosely based on the above method can be found at:


 * Ubuntuguide.org MediaWiki tips

Multiple wikis sharing common resources
You want to have some wikis in different languages, sharing the same media-files in another, single wiki.

For example:


 * en.yourwiki.org -
 * fr.yourwiki.org -
 * de.yourwiki.org -
 * pool.yourwiki.org - media-files for all of these wikis (like Commons).
 * As there is already an Interwikilink named commons for Wikimedia Commons, we name our media-files-wiki "pool".
 * Think before being creative; if you call your media-files-wiki something like "media" (e.g. media.example.com), it might collide with internal namespaces and nomenclature for embedded media files ( [[media:file.ext]] ).

On your file system, create a folder for each wiki. Run the install script for each wiki.

This solution duplicates source code. To reduce this duplication and improve cache performance, you may wish to replace the  (≤ MW 1.20.x), ,  ,  ,  ,  ,   (≤ MW 1.17.x),  ,  ,  ,   and   (≥ MW 1.22.x ) directories for non-pool installations with symbolic links to the pool's directories: For example, enter  and then enter''

To do the same in Windows, use

Wiki Configurations
It is imperative, that you modify LocalSettings.php of your different wiki installations right from the start (even before creating the symbolic links), or you will have  piling up in your server's memory. Include the line below into each LocalSettings.php. $wgJobRunRate = 0;

Interwiki
Now you have to set Interwikilinks between all wikis, by editing their MySQL-Databases (if you prefer, install and use Extension:Interwiki)
 * Table Interwiki
 *  iw_prefix - enter the language-code of the wikis, "de" for German, "en" for English, "fr" for French and "pool" for the mediapoolwiki
 *  iw_url - this is the place for the complete URL to the wikis, e.g. " http://de.yourwiki.org/index.php/$1 " for the German wiki (don't forget the "$1" !).

Now you can link an article to the same in another languages. Adding Hauptseite on your English Main_Page will create the link "Deutsch" (under the Navigation bar) which leads to the Main_Page of the German wiki (Hauptseite). For further information visit Help:Interwiki linking

Note to page Special:Interwiki: (you will see a long table) Add in the German wiki the prefix 'en' and the url http://en.yourwiki.org/index.php/$1 and set the checkbox 'Als lokales Wiki definiert'. Do it in the English wiki vice versa with checkbox 'Forward'. And in both wikis enter a second prefix 'pool' and http://pool.yourwiki.org/index.php/$1 and check the checkbox 'Forward'.

Upload
Make sure that folder "images" of the pool-wiki is writable.

It is useful to change the "Upload file"-Link of the language-wikis to point to poolwiki's upload-site. Open the "LocalSettings.php" of each language-wiki and add:

In 1.17, you'll also have to set $wgUploadMissingFileUrl to be redirected to the pool-wiki on red links.

Use shared files
To use poolwiki's files in the languagewikis, open "LocalSettings.php" for each languagewiki and add:

Now you can integrate pool's files with (e.g. ) in the languagewikis.

Image description
In each languagewiki, open (as an admin) the message MediaWiki:Sharedupload-desc-here.

Change the text to something like: This file is stored in our data-pool. For information and description, please visit the

description there. (And note the ':' at the beginning of the line, which stops 'pool' from being included in the interwiki list at the left of the page.)

If you want to output the media-description, stored in the PoolWiki, too, add to the "LocalSettings.php" of the languagewikis:

Shared Settings
If you have multiple wikis, you'll probably want to share similar settings across them all. Here is how to do that. We recommend that you separate your Extension settings into a different file than your other settings, as detailed below. They can be all put into one large file, but it's not as flexible depending upon your specific needs.

Here is an example directory structure if you do all of the following: en/ es/ pl/ ja/ pool/ ExtensionSettings.php WikiFamilySettings.php SharedMediaSettings.php

Extension Settings

 * Step 1
 * Create a file called ExtensionSettings.php with the following contents, and place it in a location similar to the example above.
 * Step 2
 * Edit the LocalSettings.php file of each wiki that you want to use the shared settings, and add the following.
 * Step 3
 * Now just add all the references to your various extensions

Wiki Family Settings
These are settings that you want to apply to the entire wiki family. For example, maybe you want to be able to easily put all the wikis into read-only mode at the same time. You can also store the username/password for the database(s), if they are all the same. Additionally, you could control user permissions across your entire wiki from this one file.

Note: If you use a Images/Media commons or pool, we recommend that you do not put these settings in the WikiFamilySettings.php file. That information only applies to every wiki in your wiki family other than your repository. We recommend putting it in a separate file.

Shared database tables
See Manual:Shared database for instructions on setting up shared database tables.

Ultimate minimalist solution
The "ultimate minimalist solution" consists of symlinks; $ ls -og lrwxrwxrwx 1 16 2008-11-03 06:29 aaa.example.org -> mediawiki lrwxrwxrwx 1 16 2008-11-03 06:29 bbb.example.org -> mediawiki lrwxrwxrwx 1 16 2008-11-03 06:29 ccc.example.org -> mediawiki Let's see a real example of. In real life we must deal with the slight differences in the names and databases of the sites we manage. Note we still individually do database related tasks, e.g.,  (The above code should detect which wiki's update.php you are referring to.) Upgrading is simple if you download from Git. (Hopefully there is no more code that assumes there is only one wiki on the disk...)

Images
Unless you do not allow uploads or allow them only for your pool wiki, you will need to create separate image directories and alias them in your vhost configuration:, and in aaa.example.org's vhost: . Same for bbb and ccc.

However you may instead just prefer , where *.example.org/images/ just point to the same single directory. Or one could use e.g., *.example.org/$wgDBname/images/.

Adding new wikis
To add a wiki to a production
 * 1) add its configuration to your web server
 * 2) temporarily comment out the  check of config/index.php and then run it
 * 3) merge the config/LocalSettings.php produced into LocalSettings.php
 * 4) add some pages

Removing old wikis
To remove a wiki from a production
 * 1) remove its configuration from
 * 2) web server
 * 3) LocalSettings.php
 * 4) DROP DATABASE

Wikimedia Method
Another option is using the method that the Wikimedia Foundation uses. The rough steps are listed below. This method isn't for the faint of heart, but it has fairly good results, as can be seen by the success the Wikimedia Foundation has had by using this :-)  Configure a template copy of MediaWiki through the online configuration wizard. Edit the Main Page if you want a default main page for every wiki you create on your farm. After that, export your database with mysqldump, phpMyAdmin, etc. Save this on your server in the maintenance/ directory as something like . Now, write up a few quick scripts to create a new wiki. In a gist, you'll need to add it to a list of wikis, which can be flat-file based or MySQL/SQLite based, and then import the template database dump back into the database under the name of a new wiki. Use a standard suffix after the new database name (i.e. if the wiki is meta.yourdomain.net, then you might choose metawiki as the database name). In your configuration file, add something like this, fixing the database prefix and your domain as necessary:  Configure your DNS with a wildcard A record, and apache with a server alias (like ) and you should be in business.</li> </ol>

The script maintenance/update.php can be included from a another php script, update_farm.php for example, and this outer script will set the various SERVER values that are needed by your LocalSettings.php to set the correct $wgDBname: and the command line for updating meta.yourdomain.net is, from your unique mediawiki directory: php update_farm.php meta.yourdomain.net Your unique LocalSettings.php (which usually consists in a few lines including a CommonSettings.php not directly accessible from the server) decodes the variable meta and will set the $wgDBname accordingly.

The DOCUMENT ROOT directory (similar to the value set in your httpd.conf) can also be used in your CommonSettings.php in order to have more flexibility, like using a test server.

You'll also need to fix the upload directories unless you want every wiki to use the same files. As said above, this is probably one of the hardest methods to do, and it requires more technical experience, but it can give really good, clean results.

Wiki Farm Extensions
There are several MediaWiki extensions that attempt to simplify hosting of several wikis by using just one code base:
 * Extension:Farmer
 * Extension:WikiFarm
 * Extension:Simple Farm