Manuel:Famille de wikis

From mediawiki.org
This page is a translated version of the page Manual:Wiki family and the translation is 35% complete.
Outdated translations are marked like this.

Voici les instructions sur la façon de configurer MediaWiki pour héberger plus d'un wiki. Plusieurs wikis situés sur le même serveur sont appelés famille de wikis (wiki-family) ou ferme de wikis (wiki farm). Une liste des familles de wikis connues est disponible sur WikiApiary .

Methods

Principes de base

La configuration la plus courante d’une famille de wiki fonctionne avec une unique version de MediaWiki. Les grandes étapes suivantes sont nécessaires pour ce scénario :

  1. Installez un site MediaWiki classique et créez un modèle de base de données à partir de ce site. Il peut être complètement vide (avec aucune ligne dans aucune table) ou contenir des pages initiales, des utilisateurs, des liens interwikis, etc... ou n’importe quelle autre donnée que vous souhaitez pour chaque nouveau membre de la famille. Pour plus de détails, voir Guide d'installation .
  2. Installez votre serveur web pour acheminer le trafic de multiples origines vers l’installation du MediaWiki unique. Cela peut concerner plusieurs domaines, sous-domaines ou sous-répertoires, et peut être réalisé à l’aide des liens symboliques, des alias, de réécriture d’URL ou autres mécanismes.
  3. Add code to the top of LocalSettings.php, to detect the current wiki. For wikis by domain name:
    $wikis = [
        'example.org' => 'examplewiki',
        'one.example.org' => 'onewiki',
    ];
    if ( defined( 'MW_DB' ) ) {
        // Automatically set from --wiki option to maintenance scripts
        $wikiID = MW_DB;
    } else {
        // Use MW_DB environment variable or map the domain name
        $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. Configure settings that must differ for all wikis. For example:
    $wgCacheDirectory = "/tmp/mediawiki_cache/$wgDBname";
    $wgUploadDirectory = "$IP/images/$wgDBname";
    $wgUploadPath = "/w/images/$wgDBname";
    
  5. Configure per-wiki overrides. This should include at least $wgServer and $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  ) );
    
    Elles peuvent aussi être incluses depuis un fichier séparé, par exemple $code .
    # LocalSettings.php
    $wgConf->settings = require __DIR__ . '/LocalSettings_overrides.php';
    
    # LocalSettings_overrides.php
    return [
        'wgServer' => ..,
        ..,
    ];
    

To create a new wiki, create its database and add its settings first, and then run php maintenance/update.php --wiki=mywiki.

Separate settings files

Cela vous permettra d'installer plus d'un wiki sur un seul serveur, en utilisant la même copie du code source.

  1. Install the first wiki as normal, via the web or CLI installer, which sets up your database and generates a LocalSettings.php file.
  1. After installation, rename the generated LocalSettings.php file to include the wiki ID (e.g. database name), like LocalSettings_mywiki.php.
  1. Répétez les étapes deux et trois ci-dessus pour chaque wiki que vous souhaitez créer, générant un nouveau fichier LocalSettings.php pour chacun d’eux (par exemple, LocalSettings_anotherWiki.php, etc.)
  1. Create a new LocalSettings.php file that will load the correct one.
<?php
$wikis = [
    'example.org' => 'examplewiki',
    'one.example.org' => 'onewiki',
];
if ( defined( 'MW_DB' ) ) {
    // Automatically set from --wiki option to maintenance scripts
    $wikiID = MW_DB;
} else {
    // <span lang="en" dir="ltr" class="mw-content-ltr">Use MW_DB environment variable or map the domain name</span>
    $wikiID = $_SERVER['MW_DB'] ?? $wikis[ $_SERVER['SERVER_NAME'] ?? '' ] ?? null;
}

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

// Add any settings that should apply to all wikis below this line
// -------

Si vos wikis sont sur le même domaine, mais avec des chemins différents (par exemple yourdomain.com/wiki1, yourdomain.com/wiki2, etc.), vous pouvez utiliser un équivalent de ceci :

<?php
$wikis = [
    '/example' => 'examplewiki',
    '/w_example' => 'examplewiki',
    '/one' => 'onewiki',
    '/w_one' => 'onewiki',
];
if ( defined( 'MW_DB' ) ) {
    // Automatically set from --wiki option to maintenance scripts.
    $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.' );
}
If you use Short URL, you need to add both your $wgArticlePath and the $wgScriptPath.

Sites de style Drupal

Cette configuration présente l’avantage de demeurer totalement transparente pour les utilisateurs et d’être raisonnablement sécurisée en ce qui concerne les images de répertoire.

  1. Créez un répertoire de base pour contenir tous vos fichiers MediaWiki par exemple mkdir /home/web/mediawiki.
  2. Installez MediaWiki et les outils supplémentaires comme d’habitude, dans un sous-répertoire indiquant la version (par exemple /home/web/mediawiki/mediawiki-1.10.0).
  3. Liez le dossier indiquant la version, à un répertoire de code. Par exemple, ln -s /home/web/mediawiki/mediawiki-1.10.0 /home/web/mediawiki/code
  4. Créez un répertoire sites pour contenir nos images et paramètres : mkdir /home/web/mediawiki/sites
  5. Configurer le wiki comme d’habitude à partir du répertoire /code.
  6. Après une installation réussie, déplacez le fichier LocalSettings.php dans un répertoire sites qui sera la cible lorsque le site est vérifié. Par exemple, pour capturer http://mysite.com/mywiki, on pourrait créer le répertoire mysite.com.mywiki. par exemple, mkdir /home/web/mediawiki/sites/mysite.com.mywiki. Voir le fichier settings.php de Drupal pour plus d'informations à ce sujet.
  7. Si vous avez l’intention d’utiliser des fichiers multimédias, créez un répertoire d’images dans votre dossier de site. Par exemple, mkdir /home/web/mediawiki/sites/mysite.com.wiki/images. Rendez-le accessible en écriture si nécessaire.
  8. Placez le fichier LocalSettings.php de Drupal dans votre répertoire principal : cp DrupalLocalSettings.php /home/web/mediawiki/code/LocalSettings.php cp DrupalLocalSettings.php /home/web/mediawiki/code/LocalSettings.php
  9. Modifiez le fichier LocalSettings.php de chaque sous-site pour pointer vers les bons endroits :
    1. D'abord commentez le code contenant $IP (lignes 16-20 en 1.15.3) car cela défini le répertoire de "code" par index.php.
    2. Insérez ensuite les deux lignes suivantes pour vous assurer que les fichiers image sont accessibles, par exemple : $wgUploadDirectory = "/home/web/mediawiki/sites/wiki.example.com/images"; et $wgUploadPath = "/images";. Ceux-ci doivent être rangés quelque part après l'appel à DefaultSettings.php (ligne 25 dans 1.15.3), parce que sinon les variables seront réinitialisées.
    3. Faites les autres modifications comme nécessaire.
  10. Préparez votre installation Apache 2. Site d'exemple : wiki.mysite.com wiki.example.com
    1. Créez un lien vers le répertoire code si nécessaire, par exemple ln -s /home/web/mediawiki/code /home/web/wiki.mysite.com
    2. Créez une configutation VHost appropriée :
<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 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.example.com/images
    # If you want to password protect your site
    #  <Directory /home/web/wiki.example.com>
    #    AuthType Basic
    #    AuthName "My protected wiki"
    #    AuthUserFile /etc/apache2/htpasswd/users-mywiki
    #   require valid-user
    #  </Directory>
</VirtualHost>
11. Si vous configurez les sites localement, mettez à jour votre fichier hosts avec le nom des sites. Le site devrait maintenant fonctionner.

Dans mon cas, j'ai fait une autre copie du code à partir duquel j'ai installé et fait la mise à jour de mon LocalSettings.php et des bases de données. Notez que $_SERVER['HTTP_HOST'] dans le code du compagnon Drupal n'est pas défini lorsque l'on exécute les scripts de maintenance à partir de la ligne de commande, donc cette solution ne permet pas d'utiliser les scripts de maintenance sans quelques modifications.

Méthode modifiée style Drupal pour Ubuntu

Une méthode simplifiée pour des wikis et des sous-wikis multiples (ou imbriqués) sous Ubuntu/Kubuntu qui est largement basée sur la méthode ci-dessus se trouve sur :

Wikis multiples se partageant des ressources communes

Vous voulez sauvegarder certains wikis en différentes langues, en partageant les mêmes fichiers média dans un autre wiki séparé.

Par exemple :

  • en.example.org - anglais
  • fr.example.org - français
  • de.example.org - allemand
  • pool.example.org - les fichiers média pour tous ces wikis (comme Commons).
The above example uses the name "pool". Avoid using the name "commons" because this may conflict with the interwiki link also named commons for Wikimedia Commons.

Also avoid using the name "media" (e.g. media.example.org) as that may cause a conflict between your interwiki and the internal namespace Media: for accessing local media files, e.g. [[media:File.png]].

Tables partagées de la base de données

Voir le manuel des bases de données partagées pour la manière de configurer les tables partagées de la base de données.

Interwiki

Maintenant vous devez paramétrer les liens interwiki entre tous les wiki, en éditant leurs bases de données MySQL (si vous préférez, installez et utilisez Extension:Interwiki ) If the wikis are language editions, it is recommended to name the interwiki prefix after the exact language code. For example, "de" for the German wiki in your family. This way, you can connect pages about the same subject using language links.

Ajouter [[de:Hauptseite]] sur une page crée un lien interwiki "Deutsch" (sous la barre de navigation) vers la page Hauptseite du wiki en allemand. Pour plus d'informations, voir Help:Interwiki linking

If you have a central wiki for files, create a prefix for this as well. E.g. pool to https://pool.example.org/wiki/$1 and enable the "Forward" checkbox to recognise it as a local wiki in the same family.

Téléversements

Soyez sûr que le répertoire "images" du poolwiki est autorisé en écriture.

Il est pratique de changer le lien "Téléverser un fichier" des wikis de langue pour pointer vers le site de téléversement du wiki pool. Ouvrez le fichier LocalSettings.php de chaque wiki de langue et ajoutez :

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

En 1.17, vous devez également initialiser $wgUploadMissingFileUrl pour être redirigé vers le wiki 'pool' pour les liens rouges.

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

If you want to allow uploads only for your pool wiki, you may use something like this:

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

Utiliser des fichiers partagés

Pour utiliser les fichiers du poolwiki dans les wikis de langue, ouvrez le fichier LocalSettings.php de chaque wiki de langue et ajoutez :

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

Vous pouvez maintenant intégrer les fichiers du poolwiki avec par exemple [[Image:MyLogo.png]] dans les wikis de langue.

Description des images

Dans chaque wiki de langue, ouvrez (en tant qu'admin) le message MediaWiki:Sharedupload-desc-here.

Changez le texte en quelque chose comme :

Ce fichier est enregistré sur notre poolwiki.
Pour des informations sur l'image et la description, voir la

(Et notez le ':' au début de la ligne, qui empêche 'pool' d'être inclus dans la liste interwiki sur la gauche de la page ).

Si vous voulez afficher la description du média, enregistrée sur le poolwiki également, ajoutez au LocalSettings.php de chaque wiki de langue :

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

Extensions des familles de wikis

Plusieurs extensions MediaWiki essaient de simplifier l’hébergement de plusieurs wikis en utilisant une base unique de code, néanmoins une seule est actuellement remarquable :

Voir aussi

Références