Manual:Wiki family/ru

From mediawiki.org
This page is a translated version of the page Manual:Wiki family and the translation is 100% complete.

Ниже приведены инструкции по настройке MediaWiki для размещения более одного вики-сайта. Множественные вики, находящиеся на одном сервере, называются "Вики-семейство" или "Вики-ферма". Список некоторых вики-ферм доступен на сайте WikiApiary .

Методы

Вики-ферма

Следующие шаги предназначены для запуска нескольких вики-сайтов в одной и той же версии MediaWiki:

  1. Установите первую вики-страницу в обычном режиме. Подробности см. в Manual:Руководство по установке .
  2. Включите свой веб-сервер для совместного использования вашей установки MediaWiki со всеми вики. Для нескольких (поддоменов) вы можете использовать функцию прослушивания нескольких имен серверов. Для нескольких подкаталогов вы можете использовать правила перезаписи, псевдонимы или символические ссылки.
  3. Добавьте код в начало LocalSettings.php, чтобы определить текущую вики-страницу. Для вики-сайтов по доменному имени:
    $wikis = [
        'example.org' => 'examplewiki',
        'one.example.org' => 'onewiki',
    ];
    if ( defined( 'MW_DB' ) ) {
        // Автоматически устанавливается опция --wiki для сценариев обслуживания
        $wikiID = MW_DB;
    } else {
        // Используйте переменную окружения MW_DB или сопоставьте доменное имя
        $wikiID = $_SERVER['MW_DB'] ?? $wikis[ $_SERVER['SERVER_NAME'] ?? '' ] ?? null;
        if ( !$wikiID ) {
            die( 'Unknown wiki.' );
        }
    }
    
    $wgLocalDatabases = $wgConf->wikis = array_values( $wikis );
    $wgDBname = $wikiID;
    $wgDBuser = 'mediawiki';
    
  4. Настройте параметры, которые должны отличаться для всех вики-сайтов. Например:
    $wgCacheDirectory = "/tmp/mediawiki_cache/$wgDBname";
    $wgUploadDirectory = "$IP/images/$wgDBname";
    $wgUploadPath = "/w/images/$wgDBname";
    
  5. Настройте переопределения для каждой вики. Это должно включать, по крайней мере, $wgServer и $wgArticlePath.
    $wgConf->settings = [
        'wgServer' => [
            'examplewiki' => 'https://example.org',
            'onewiki' => 'https://one.example.org',
        ],
        'wgArticlePath' => [
            'default' => '/wiki',
        ],
        'wgSitename' => [
            'default' => 'Example',
            'onewiki' => 'One',
        ],
        'wgLogo' => [
            'default' => '/images/examplewiki/Example_logo.png',
        ],
        'wgLanguageCode' => [
            'default' => 'en',
            'onewiki' => 'pt',
        ],
    ];
    extract( $wgConf->getAll( $wgDBname  ) );
    
    Это можно было бы сделать из отдельного файла, например:
    # LocalSettings.php
    $wgConf->settings = require __DIR__ . '/LocalSettings_overrides.php';
    
    # LocalSettings_overrides.php
    return [
        'wgServer' => ..,
        ..,
    ];
    

Чтобы создать новую вики-страницу, сначала создайте ее базу данных и добавьте ее настройки, а затем запустите php maintenance/update.php --wiki=mywiki.

Индивидуальные файлы настроек

Этот подход предназначен для работы с полностью независимыми вики-сайтами, но при этом использующими один и тот же веб-сервер и исходный код MediaWiki.

  1. Установите первую вики-страницу как обычно, через веб- или CLI-установщик, который настроит вашу базу данных и сгенерирует файл LocalSettings.php .
  2. После установки переименуйте сгенерированный файл LocalSettings.php, чтобы включить идентификатор wiki (например, имя базы данных), например LocalSettings_mywiki.php.
  3. Повторите первый и второй шаги выше для каждой вики, которую вы хотите создать.
  4. Создайте новый файл LocalSettings.php, который загрузит правильный файл.
<?php
$wikis = [
    'example.org' => 'examplewiki',
    'one.example.org' => 'onewiki',
];
if ( defined( 'MW_DB' ) ) {
    // Автоматически устанавливается опция --wiki для сценариев обслуживания
    $wikiID = MW_DB;
} else {
    // Используйте переменную окружения MW_DB или сопоставьте доменное имя
    $wikiID = $_SERVER['MW_DB'] ?? $wikis[ $_SERVER['SERVER_NAME'] ?? '' ] ?? null;
}

if ( $wikiID ) {
    require_once "LocalSettings_$wikiID.php";
} else {
    die( 'Unknown wiki.' );
}

// Добавьте любые настройки, которые должны применяться ко всем вики-сайтам ниже этой строки
// -------

Если ваши вики находятся в одном домене, но по разным путям (например, $ 1, $ 2 и т.д.), Вы можете использовать что-то вроде этого:

<?php
$wikis = [
    '/example' => 'examplewiki',
    '/w_example' => 'examplewiki',
    '/one' => 'onewiki',
    '/w_one' => 'onewiki',
];
if ( defined( 'MW_DB' ) ) {
    // Автоматически устанавливается опция --wiki для сценариев обслуживания
    $wikiID = MW_DB;
} else {
    $path = explode( '/', $_SERVER['REQUEST_URI'] ? '', 3 )[1] ?? '';
    $wikiID = $_SERVER['MW_DB'] ?? $wikis[ $path ] ?? null;
}

if ( $wikiID ) {
    require_once "LocalSettings_$wikiID.php";
} else {
    die( 'Unknown wiki.' );
}
Если вы используете Короткий URL, вам нужно добавить как свои $wgArticlePath, так и $wgScriptPath.

Drupal -сайты в стиле

Преимущества этого метода в том, что он полностью прозрачен для пользователей и достаточно безопасен с точки зрения каталога изображений.

  1. Создайте базовый каталог, содержащий все ваши файлы MediaWiki "например" mkdir /home/web/mediawiki.
  2. Установите MediaWiki и дополнительные инструменты, как обычно, в подкаталог с объявлением версии ("например", /home/web/mediawiki/mediawiki-1.10.0).
  3. Свяжите каталог с объявлением версии с каталогом кода. "например", ln -s /home/web/mediawiki/mediawiki-1.10.0 /home/web/mediawiki/code
  4. Создайте каталог sites, содержащий наши изображения и настройки: mkdir /home/web/mediawiki/sites
  5. Настройте wiki как обычно из каталога "/code".
  6. После успешной установки "переместите" LocalSettings.php в каталог сайтов, который будет совпадать при проверке сайта. Например, чтобы захватить http://example.com/mywiki, можно было бы создать каталог example.com.mywiki. "например", mkdir /home/web/mediawiki/sites/example.com.mywiki Смотрите файл Drupal settings.php для получения дополнительной информации об этом.
  7. Если вы собираетесь использовать медиафайлы, создайте каталог images в каталоге вашего сайта. "например", mkdir /home/web/mediawiki/sites/example.com.wiki/images Пользователь, под которым работает Apache, должен иметь права на запись в эту папку.
  8. Поместите файл LocalSettings.php в стиле Drupal в свой основной каталог: cp DrupalLocalSettings.php /home/web/mediawiki/code/LocalSettings.php
  9. Измените LocalSettings.php каждого дочернего сайта, чтобы указать на нужные места:
    1. Сначала закомментируйте код, относящийся к $IP (строки 16-20 в 1.15.3), поскольку он устанавливается в каталог code на index.php.
    2. Сначала закомментируйте код, относящийся к $wgUploadDirectory = "/home/web/mediawiki/sites/wiki.example.com/images"; (строки 16-20 в 1.15.3), поскольку он установлен в каталоге $wgUploadPath = "/images"; на $3. Их необходимо поместить куда-нибудь после вызова DefaultSettings.php (строка 25 в 1.15.3), так как в противном случае переменные будут сброшены.
    3. При необходимости внесите дополнительные изменения.
  10. Подготовьте установку Apache 2. Пример сайта: wiki.example.com
    1. Создайте ссылку на каталог code, если требуется "например" ln -s /home/web/mediawiki/code /home/web/wiki.example.com
    2. Создайте соответствующую конфигурацию VHost:
<VirtualHost *:80>
    ServerAdmin me@example.com
    DocumentRoot /home/web/wiki.example.com
    ServerName wiki.example.com
    CustomLog /var/log/apache2/wiki.mysite.log common
    # Имя для сайта, который должно быть доступено
      Alias /mediawiki/code /home/web/mediawiki/code
    # Имя для вики, чтобы изображения работали
      Alias /images /home/web/mediawiki/sites/wiki.example.com/images
    # Если вы хотите защитить свой сайт паролем
    #  <Directory /home/web/wiki.example.com>
    #    AuthType Basic
    #    AuthName "Моя защищенная вики-страница"
    #    AuthUserFile /etc/apache2/htpasswd/users-mywiki
    #   require valid-user
    #  </Directory>
</VirtualHost>
11. Если вы настраиваете сайты локально, обновите свой файл hosts именами сайтов. Теперь ваш сайт должен работать.

В моем случае я сделал еще одну копию кода, с помощью которого можно было установить и обновить мои LocalSettings.php и базы данных. Обратите внимание, что $_SERVER['HTTP_HOST'] в сопутствующем коде Drupal не определен при запуске сценариев обслуживания из командной строки, поэтому это решение не разрешает использование сценариев обслуживания без некоторых изменений.

Модифицированный метод в стиле Drupal для Ubuntu

Упрощенный метод для нескольких вики и нескольких (или вложенных) вложенных вики в Ubuntu /Kubuntu, который в общих чертах основан на вышеупомянутом методе, можно найти по адресу:

Советы по обмену информацией между вики-сайтами

Вы можете использовать $wgForeignFileRepos для обмена загруженными медиафайлами между вики-сайтами. Это похоже на Викисклад для Википедии.

Например:

  • en.example.org - английский
  • fr.example.org - французский
  • de.example.org - немецкий
  • pool.example.org - Общие медиафайлы для всех вики.
В приведенном выше примере используется имя "pool". Избегайте использования имени "commons", поскольку это может противоречить ссылка на интервики, также названному commons для Викисклад. Также избегайте использования имени "media" (например, media.example.org), поскольку это может вызвать конфликт между вашим interwiki и внутренним пространством имен Media: для доступа к локальным медиафайлам, например [[media:File.png]].

Общие таблицы базы данных

Рассмотрите возможность использования общей базы данных для учетных записей пользователей. Инструкции по настройке общих таблиц базы данных см. в разделе Руководство:Общие базы данных .

Интервики

Вы можете создать ссылки на интервики между всеми вики, используя Extension:Interwiki . Если вики-сайты являются языковыми изданиями, рекомендуется указывать префикс интервики после точного кода языка. Например, "de" для немецкой вики в вашей семье. Таким образом, вы можете соединять страницы, посвященные одной и той же теме, используя языковые ссылки.

Добавление [[de:Hauptseite]] на вашу английскую "Главную страницу" создаст ссылку "Deutsch" на боковой панели языков. Для получения дополнительной информации см. Help:Interwiki linking .

Если у вас есть центральная вики-страница для файлов, создайте префикс и для нее. Например, от pool до https://pool.example.org/wiki/$1 и установите флажок "Переслать", чтобы распознать его как локальную вики в том же семействе.

Загрузка

Убедитесь, что папка "images" пула-wiki доступна для записи.

Полезно изменить ссылку "Загрузить файл" языковой вики, чтобы она указывала на сайт загрузки poolwiki. Откройте "LocalSettings.php" каждой языковой вики и добавьте:

$wgUploadNavigationUrl = "https://pool.example.org/index.php/Special:Upload";

В 1.17 вам также нужно будет установить $wgUploadMissingFileUrl для перенаправления на pool-wiki по красным ссылкам.

$wgUploadMissingFileUrl= "https://pool.example.org/index.php/Special:Upload";

Если вы хотите разрешить загрузку только для вашей вики-страницы пула, вы можете использовать что-то вроде этого:

if ( $wgDBname === 'pool' ) {
	$wgEnableUploads = true;
} else {
	$wgEnableUploads = false;
}

Использование общих файлов

Чтобы использовать файлы poolwiki в languagewiki, откройте "LocalSettings.php" для каждого languagewiki и добавьте:

$wgUseSharedUploads = true;
$wgSharedUploadPath = 'https://pool.example.org/images';
$wgSharedUploadDirectory = '/(LOCALPATH)/POOL-FOLDER/images/';
$wgHashedSharedUploadDirectory = true;

Теперь вы можете интегрировать файлы пула с помощью (например, [[File:MyLogo.png]]) в languagewikis.

Описание изображения

В каждом languagewiki откройте (как администратор) сообщение MediaWiki:Sharedupload-desc-here.

Измените текст на что-то вроде:

Этот файл хранится в нашем пуле данных.
Для получения информации и описания, пожалуйста, посетите [[:pool:File:{{PAGENAME}}|описание там]].

(И обратите внимание на ":" в начале строки, что останавливает включение "pool" в список интервики слева от страницы.)

Если вы хотите вывести медиа-описание, хранящееся в PoolWiki, тоже добавьте к "LocalSettings.php" languagewikis:

$wgFetchCommonsDescriptions = true;
$wgSharedUploadDBname = 'pool';  # DB-Name of PoolWiki
$wgSharedUploadDBprefix = 'wiki_'; # Table name prefix for PoolWiki
$wgRepositoryBaseUrl = "https://pool.example.org/index.php/Image:";

Расширения вики-фермы

Существует несколько расширений MediaWiki, которые пытаются упростить размещение нескольких вики-сайтов, используя только одну кодовую базу, однако в настоящее время заслуживает внимания только одно:

См. также

Примечания