Manual:Wiki family/ru


 * Требуется помощь с переводом и правка, ибо справка на английском Manual:Wiki family не является достаточной.

Эта страница описывает установку и настройку малых wiki-family.

Сценарий 1: Использование виртуальных каталогов с общим-хостинг-провайдером для отображения нескольких вики
This approach takes advantage of symlinks on a Unix-based system. This technique can also be used on Windows systems by installing a program providing symbolic links.

How to use "virtual directories" to operate more than one wiki on a single server, using the same source code (i.e. single set of MediaWiki files), using the same database, on a Unix-based system on a shared host:

See the solution, including step-by-step, detailed instructions: http://www.steverumberg.com/wiki/WikiHelp_-_Method_One

Note that using a language subdomain similar to Wikipedia (en.example.com, fr.example.com and so on) will allow you to produce the capabilities of the above link's Method 2 while providing a simple differentiation of the two wikis through the use of a web server's virtual host capability.

Сценарий 2: Быстрая установка
Вы хотите установить более одного вики на одном сервере, используя тот же исходный код (т.е. один набор файлов MediaWiki), и используя одну базу данных?


 * 1) Install prerequisites.
 * 2) Upload MediaWiki files to web folder on the webserver.
 * 3) From browser, browse to the uploaded folder (for example, if your web server is running as   and MediaWiki files were uploaded to   folder, then the URL would be  ) which will lead to a page which gives a link to Please set up the wiki first. Click the link, fill-in the setup form, and install the first wiki (e.g., MyWiki). For details, see Manual:Config script.
 * 4) After successful installation, move LocalSettings.php into the root directory of your wiki and rename it in such a way to make it easy to track (e.g., myWikiLocalSettings.php)
 * 5) Repeat step three and four above for each wiki you wish to create, creating a new LocalSettings.php file for each wiki (e.g., anotherWikiLocalSettings.php, etc.)
 * 6) If two or more separately installed wikis are to be merged to operate out of files of the main wiki, then after renaming and moving each of your LocalSettings.php files to the main wiki folder, change the variable $wgScriptPath in the each of the LocalSettings.php files to point to the main wiki's folder.
 * 7) Create a LocalSettings.php file for your global settings, then select one from the two possibilities below:


 * 1: If you have different domains/subdomains that link to one directory on your server, use this:
 * To link your subdomains to one directory on your server, you may have to edit the configuration file for your server (can not be done with a  file, try changing   there in Apache web server setup) or, if your site has its own IP address, modify the DNS configuration for your site.


 * OR 2: If your wikis are in different directories (e.g.,   etc) linked to the main wiki directory on your server (say  ), use this:


 * If the function strpos finds the string you search for at the beginning of $callingurl, then the function returns 0 (i.e. it found the string starting at position zero) therefore, you need to change  to.


 * If you use Short URL with the second case (directory based wikis), you need to check the two directories:, to symlink the sources , and adapt.


 * You should use "strpos == 1" or similar instead of plain strpos to avoid redirecting to wrong wiki when the url contains the name after the beginning

You can use a different unique MySQL database for each wiki (see $wgDBname) OR you can use a different table prefix for each wiki (for Postgres, you can achieve a similar effect by using different schemas) (see $wgDBprefix).

It may also be useful to simply redirect any unrecognized wiki URL to the "main" url, instead of "This wiki (in blah) is not available. Check configuration."

Обновление wikifarm из командной строки
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 creating a simple php script, "update_subdomain.php" (All of this is done in the mediawiki base install directory): You can now run the code with:


 * It seems to not be possible to run the update script multiple times from the same php script (ie. in a loop), as the runs after the first don't recognise the changed $_SERVER['SERVER_NAME']. (Perhaps try setting the dependent variables directly, as in ?) This can be overcome by creating a bash script to run the php script multiple times (called "update_wikifarm.sh"):

Change the subdomain prefixes to suit your wikifarm, then Make the script executable, and run it:

Сценарий 3: Drupal-стиль сайтов
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.

 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 #  
 * 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:


 * 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.

Сценарий 4: Распределение общих ресурсов между несколькими вики
You want to have some wikis in different languages, sharing the same media-files in another, single wiki.

For example:


 * en.yourwiki.org - English language
 * fr.yourwiki.org - French language
 * de.yourwiki.org - German language
 * 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]] ).

Установка Install
On your filesystem, create a folder for each wiki. Run the install script for each wiki.

(This solution duplicates source code. You may wish to replace the include, skin, language and extension directories for non-pool installations with symbolic links to the pool's directories [rm -r include && ln -s pooldir/include etc.] to improve cache performance.)

Интервики 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 a link "Deutsch" (under the Navigation bar) which leads to the Main_Page of the German wiki (Hauptseite). For further information visit Help:Interwiki linking

Загрузка
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:

Использование общих файлов
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.

Описание изображения
In each languagewiki, open (as an admin) the message MediaWiki:Sharedupload.

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:

Общие настройки
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 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.

Сценарий 5: Несколько проектов Вики посредством Правил Подстановки
Этот подход основан на работе Мизэнура Рахмана (Mizanur Rahman) (см. Boolean Dreams Article и также есть элементы, указанные выше в . Следуйте за шагами 1-5 в чтобы установить отдельный Вики-проект. Затем модифицируйте файл LocalSettings.php для каждого Вики-проекта, внеся примерно следующие строки:

Wiki 1 Local Settings File:

Similarly for Wiki 2 Local Settings File:

Необходимо также создать главный файл настроек, с примерным содержанием, описанным в шаге 7 в, чтобы выбрать соответствующий файл локальных настроек (local settings file) для wiki1 или wiki2 лежащий в основе URL.

Наконец, в файл .htaccess необходимо внести Правило Подстановки (RewriteRules), чтобы URL статей отображались в виде стандартных URL Вики, а нестатейные URL указывали на директорию, с исходниками Вики. Если предположить, что исходники Вики физически установлены на сервере в директорию '/w/', то файл .htaccess должен содержать примерно следующие строки:

Fix для скриптов обслуживания
Скрипты обслуживания работают напрямую, не через URL, таким образом Правила Подстановки не будут обеспечивать соответствующий URL для главного файла настроек LocalSettings.php в $_SERVER["SERVER_NAME"] или $_SERVER['REQUEST_URI']. Чтобы работало окружение, используйте отдельную глобальную переменную, чтобы предложить альтернативный метод выбора (или выбор метода) и задать переменную после командной строки, вызывающей скрипты обслуживания. Правильный главный файл настроек LocalSettings.php должен выглядеть примерно так:

Затем, из командной строки запускается скрипт обслуживания, такой как importImages.php:

В данном случае параметр -d модифицирует настройку auto_prepend_file в php.ini, чтобы выполнить файл перед скриптом importImages.php. Этот файл задает глобальную переменную для выбора Вики-проекта:

Другими словами мы можем определить, какой Вики-проект мы обслуживаем, и выделяем необходимый файл AdminSettings.php. Можем радоваться (танец с бубном закончен)...

Итоговое минималистское решение
Итоговое минималистское решение состоит из символьных ссылок, $ 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 Посмотрим реальный пример. В реальной ситуации у вас будут, вероятно, незначительные отличия в именах сайтов и баз данных, которыми Вы управляете. Примечательно, что мы и поныне отдельно подготавливаем задачи, связанные с базой данных, например php update.php. (Вышеуказанный код должен определить к каким вики-проектам обращается update.php.) Обновление просто, если Вы используете SVN (download from SVN). (Надеюсь нет больше кода (code), который предполагает, что есть только один Вики-проект на диске...)

Изображения
Если вы не позволяете загрузку или позволяете только для вашего пула wiki, Вы должны создать отдельные каталоги изображений и указать их псевдонимы в вашей vhost конфигурации:, а также в aaa.example.org's vhost: . Таким же образом для bbb и ccc.

Однако вместо этого можно предпочесть альтернативную простую установку Manual:Image Administration, где *.example.org/images/ только указывает на ту же самую директорию. В качестве примера: *.example.org/$wgDBname/images/.

Добавление новых вики
Добавление новых wiki к существующему семейству wiki
 * 1) добавьте конфигурацию в свой web сервер
 * 2) временно закомментируйте  проверьте наличие config/index.php и затем выполните его
 * 3) merge the config/LocalSettings.php produced into LocalSettings.php
 * 4) add some pages

Удаление старых вики
Удаление wiki из семейства wiki-проектов
 * 1) удалите его конфигурацию из
 * 2) web server
 * 3) LocalSettings.php
 * 4) DROP DATABASE

Wiki использование расширений (Farmer Extension)
см. Extension:Farmer

Метод, используемый фондом Wikimedia
Еще возможно использовать метод, который использует фонд Wikimedia. Ниже упоминаются приблизительные шаги. Этот метод не для слабонервных, но он дает довольно хорошие результаты. Фонд Wikimedia добился успеха при использовании этого метода :-)  Сконфигурируйте шаблонную копию MediaWiki через онлайн мастер конфигурации. Отредактируйте Заглавную страницу если Вы хотите Заглавную страницу, которая будет использоваться по умолчанию, создать на своей ферме. После этого, экспортируйте свою базу данных с, phpMyAdmin, и т.д. Сохраните это на своем сервере в maintenance/ directory примерно как наподобие  . Теперь, напишите несколько быстрых сценариев, чтобы создать новую wiki. В сущности, Вы должны добавить это в список wiki-проектов, который может быть на основе простого неструктурированного файла или на базе MySQL/SQLite, затем импортировать дамп базы данных об эталонах назад в базу данных под именем новой wiki. Используйте стандартную приставку после нового имени базы данных (то есть, если wiki-проект называется например meta.yourdomain.net, то Вы могли бы выбрать metawiki в качестве имени базы данных). В Вашем файле конфигурации, добавьте что-то вроде нижеследующего, устанавливая префикс базы данных и Ваш домен в случае необходимости:  Сконфигурируйте свой DNS с подстановочным знаком А запись, и apache с псевдонимом сервера (like ), и можете вести бизнес. Configure your DNS with a wildcard A record, and apache with a server alias (like ) and you should be in business.</li> </ol>

Скрипт maintenance/update.php может быть запущен из другого php скрипта, например update_farm.php, и этот внешний скрипт установит различные параметры сервера, которые необходимы вашему LocalSettings.php чтобы установить корректный $wgDBname: и, чтобы обновить meta.yourdomain.net, запустите из вашего уникального mediawiki каталога следующую командную строку: php update_farm.php meta.yourdomain.net Ваш уникальный LocalSettings.php (который обычно состоит из нескольких строк, включающий в себя CommonSettings.php, не непосредственно доступный с сервера) декодирует переменную meta и установит $wgDBname в соответствии с этим.

The DOCUMENT ROOT directory (аналогичный набору значений в вашем httpd.conf) может также использоваться в вашем CommonSettings.php, чтобы иметь больше приспособляемости при использовании тестового сервера.

Вы должны также указать местоположение каталогов загрузки, если вы хотите (не хотите), чтобы каждая wiki использовала те же самые файлы. Как сказано выше, это - вероятно, один из самых трудных методов в выполнении и он требует большего технического опыта, но он может дать действительно хорошие, чистые результаты.

См. также

 * Configuration database
 * Extension:CentralAuth