Руководство:Расширения/Инсталляция и обновление

From mediawiki.org
This page is a translated version of the page Manual:Extensions/Installation and upgrade and the translation is 86% complete.
Outdated translations are marked like this.

После установки MediaWiki готова принять расширения. Чтобы добавить расширение, выполните следующие шаги:

Прежде чем начать

  • Некоторые расширения предоставляют инструкции, предназначенные для установки с помощью команд Unix. Вам потребуется доступ в режиме командной строки (SSH) для использования команд и инструкций, содержащихся в руководствах по установке этих дополнений.
  • На этой странице предполагается, что настройки вашего сайта находятся в файле с именем LocalSettings.php, но если вы используете другой файл, например, в вики-ферме, инструкции должны быть одинаково актуальными.

Скачать расширение

Получите файловый пакет

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

  1. ExtensionDistributor поможет вам выбрать и загрузить большинство популярных расширений, хотя не все разработчики расширений обязательно рекомендуют это.
  2. A list of extensions stored in the Wikimedia Git repository is located at git:mediawiki/extensions.
  3. Некоторые расширения также доступны через:
    1. пакет
    2. Composer , менеджер зависимостей для библиотек PHP. Многие расширения можно или нужно устанавливать с помощью Composer. Перейдите к Composer/For extensions для получения дополнительной информации.
    3. пакетное хранилище
  4. Некоторые расширения не используют систему контроля версий и не рекомендуются.

Add the package to the /extensions folder

Расширения обычно распространяются как модульные пакеты. Обычно они располагаются в собственном подкаталоге каталога $IP.

Вы можете добавить папку файлов вручную или перевести ее автоматически, если вы используете что-то вроде Git или Composer.

Установка расширения

  1. Всегда проверяйте требования и инструкции, которые приходят с каждым расширением. Следующее резюме относится к большинству расширений, но многие расширения требуют принятия различных и/или дополнительных мер.
  2. Убедитесь, что требуемые разрешения CHMOD установлены.
  3. В конце файла LocalSettings.php добавьте:
    wfLoadExtension( 'ExtensionName' );
    
    Эта строка заставляет интерпретатора PHP читать файл расширения, и тем самым сделать его доступным для MediaWiki. Для более раннего метода установки с использованием require_once и для перемещения см. инструкции ниже.
  4. Настройте так, как вам требуется. Configuration settings should typically be added after including the extension. Еще раз, ознакомьтесь с инструкциями расширения для получения подробной информации.
  5. Возможно, вам потребуется запустить сценарий обслуживания, например, для добавления необходимых таблиц базы данных.
  6. Готово!

Возможные ошибки

  • Некоторые расширения могут конфликтовать со сценариями обслуживания, например, если они напрямую обращаются к $_SERVER (не рекомендуется). В этом случае они могут быть обёрнуты при условии, что сценарии обслуживания могут продолжить работу.
    if ( !$wgCommandLineMode ) {
    wfLoadExtension ( 'ExtensionName' );
    }
    
  • The maintenance script importDump.php will fail for any extension which requires customised namespaces which is included inside the conditional above such as Расширение:Semantic MediaWiki , Расширение:Page Forms .

Добавляете несколько расширений сразу wfLoadExtensions()

Особенно, если у вас большое количество расширений, может быть полезно добавить их в виде массива к wfLoadExtensions() (с множественным числом -s) вместо того, чтобы добавлять их к отдельным экземплярам wfLoadExtension() (в единственном числе). Например, чтобы установить Cite, ParserFunctions и SpamBlacklist, вы могли бы написать:

wfLoadExtensions( [ 'Cite', 'ParserFunctions', 'SpamBlacklist' ] );

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

Обновление расширения

Некоторые расширения требуют обновления всякий раз, когда вы обновляете MediaWiki, в то время как другие работают с несколькими версиями.

Чтобы обновить новую версию расширения нужно:

  1. Загрузить новую версию расширения
  2. Заменить все файлы расширения в каталоге расширения / <extensionname> новыми файлами.</extensionname> Не удаляйте конфигурацию расширения, представленную в LocalSettings.php
  3. Если расширение требует изменений в базе данных MediaWiki, вам нужно будет запустить скрипт обслуживания update.php . В большинстве расширений будет указано, нужно ли запускать этот скрипт или нет. (Выполните резервное копирование ваших данных перед выполнением сценария). Если у вас нет доступа к командной строке, вы также можете использовать web updater.
  4. Документация для расширения обычно сообщает вам, что еще вам нужно сделать.

Установка

  1. Чтобы удалить расширение, удалите соответствующие строки из LocalSettings.php (wfLoadExtension с именем расширения, а также любые возможные строки для соответствующих настроек конфигурации).
  2. При необходимости удалите пакет файлов из папки /extensions.

Продвинутый уровень

Используйте пользовательские местоположения

Это необходимо сделать, прежде чем загрузить любые расширения или обёртки из нестандартных мест каталога:

Если вы храните свои расширения в расположении, отличном от $IP/extensions, вам нужно переопределить $wgExtensionDirectory "или использовать второй параметр, равный wfLoadExtension()", чтобы указать каталог, в котором нужно найти расширение.
If one or more of your extensions are stored in additional locations, use the second parameter of wfLoadExtension() to specify the location of the .json file for each of those extensions.
wfLoadExtensions() (plural) always uses $wgExtensionDirectory and cannot be overridden.
$wgExtensionDirectory = '/some/path';
wfLoadExtension( 'FooBar' ); // Видит в $wgExtensionDirectory за /some/path/FooBar/extension.json
wfLoadExtension( 'Hello', '/some/other/path/HelloV2/Hello.json' ); // Смотреть для /some/other/path/HelloV2/Hello.json
If your skins are not in $IP/skins, you need to override the poorly named $wgStyleDirectory , or use the second parameter of wfLoadSkin(), to specify the directory in which to find the skin.
If one or more of your skins are stored in additional locations, use the second parameter of wfLoadSkin() to specify the location of the .json file for each of those skins.
wfLoadSkins() (plural) always uses $wgStyleDirectory and cannot be overridden.
$wgStyleDirectory = '/my/skins';
wfLoadSkins( [ 'BarBaz', 'BazBar' ] ); // Выглядит в $wgStyleDirectory как за /my/skins/BarBaz/skin.json, так и за /my/skins/BazBar/skin.json
wfLoadSkin( 'BamBam', '/yet/another/path/BamBam/skin.json' ); // Смотреть для /yet/another/path/BamBam/skin.json

Миграция для require_once

До MediaWiki 1.35, конфигурация для расширений и обёрток была сделана в файле PHP с использованием имени расширения или обёрток, например MyExtension.php или MySkin.php. Чтобы установить расширение с LocalSettings.php, вы используете require_once для вызова этого файла PHP:

require_once "$IP/extensions/Hello/Hello.php";
require_once "$IP/extensions/FooBar/FooBar.php";
$wgFooBarEnable = true;
require_once "$IP/skins/Baz/Baz.php";
require_once "/tmp/extension/some/where/else/BarFoo/BarFoo.php";

Если расширения достаточно новые, чтобы поддерживать существующую систему регистрации, вы преобразуете это в:

wfLoadExtensions( [ 'Hello', 'FooBar' ] );
$wgFooBarEnable = true;
wfLoadSkin( 'Baz' );
wfLoadExtension( 'BarFoo', '/tmp/extension/some/where/else/BarFoo/extension.json' );