Manuel:Famille de wikis

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Wiki family and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎polski • ‎português • ‎português do Brasil • ‎русский • ‎हिन्दी • ‎中文 • ‎日本語 • ‎한국어

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

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.
  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. Configurez la famille dans LocalSettings.php, dans quatre grosses sections :
    1. D’abord, utilisez $_SERVER['SERVER_NAME'] ou $_SERVER['REQUEST_URI'] (ou similaire), et la constante (et variable d’environnement) MW_DB pour identifier les différents wikis (par exemple comme une variable nommée $wikiId). Le précédent sert aux requêtes web, le dernier pour les scripts de maintenance (auxquels vous passerez le paramètre --wiki). N’oubliez pas d'arrêter proprement l’exécution à ce point si le wiki ne peut pas être identifié.
      if ( defined( 'MW_DB' ) ) {
          // Set $wikiId from the defined constant 'MW_DB' that is set by maintenance scripts.
          $wikiId = MW_DB;
      } elseif (isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME'] == 'wiki1.example.org') {
          // Add a value to the $wikiId variable for e.g. https://wiki1.example.org/
          $wikiId = 'wiki1';
      } elseif (isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME'] == 'example.org' && substr($_SERVER['REQUEST_URI'], 0, 6) == '/wiki2') {
          // Add a value to the $wikiId variable for e.g. https://example.org/wiki2
          $wikiId = 'wiki2';
      } else {
          // Fail gracefully if no value was set to the $wikiId variable, i.e. if no wiki was determined
          die( 'It was not possible to determine the wiki ID.' );
      }
      
    2. Ensuite, définissez les variables de configuration qui sont « basées » sur l’identification du wiki. Parmi celles-ci :
      $wgDBname = 'mediawiki_'.$wikiId;
      $wgDBuser = 'mediawiki_'.$wikiId;
      $wgCacheDirectory = "/tmp/mediawiki_".$wikiId."_cache";
      $wgUploadDirectory = "$IP/images_$wikiId";
      $wgUploadPath = "/images_$wikiId";
      
    3. Ensuite, définissez les variables de configuration qui sont différentes pour chaque wiki. Celles-ci incluent :
      if ($wikiId == 'wiki1') {
          $wgSitename = "Wiki name";
          $wgServer = "https://wiki1.example.org";
          $wgLogo = "ExampleWiki_logo.png";
          $wgDBpassword = "we39485f7ha34";
          $wgSecretKey = "9348vhas589ytas35aurhgao94aywrotuhapw94u";
          $wgLanguageCode = 'pt';
      }
      
      Elles peuvent aussi être incluses depuis un fichier séparé, par exemple LocalSettings_$wikiId.php .
    4. Enfin, le reste de LocalSettings.php configure tous les éléments courants, tels que les extensions, les habillages, etc.
  4. Les ressources partagés peuvent être configurées, telles que les utilisateurs, les sessions, les médias (téléversements), les liens interwikis, etc.
  5. Installer un nouveau wiki dans la famille se fait en créant la base de données et en important le modèle de base de données, et ensuite en exécutant php maintenance/update.php --wiki=wikiId. La mise à niveau et les autres tâches de maintenance se font similairement.

La suite de cette page développe (ou le fera [update required|mise à jour nécessaire]) les différentes parties évoquées ci-dessus.

Déclaration d'un long sélecteur

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

  1. Téléversez les fichiers MediaWiki dans le dossier web de votre serveur web.
  2. Initialisez le wiki initial comme d’habitude. Pour plus de détails, voir Manuel:Guide d'installation .
  3. Après l'installation réussie, déplacez le fichier LocalSettings.php dans le répertoire racine de votre wiki et renommez-le de manière à le retrouver facilement (par exemple LocalSettings_myFirstWiki.php)
  4. 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.)
  5. Si deux wikis (ou plus) installés séparément doivent être fusionnés pour fonctionner en dehors des fichiers du wiki principal, alors après avoir renommé et déplacé chacun de vos fichiers LocalSettings.php dans le dossier principal du wiki, modifiez la variable $wgScriptPath dans chacun des fichiers LocalSettings.php pour qu'elle pointe vers le répertoire du wiki principal.
  6. Créez un fichier LocalSettings.php pour vos paramètres globaux, puis sélectionnez l’une des deux possibilités suivantes :
  • Si vous possédez différents domaines (et/ou sous-domaines) pointant vers un répertoire de votre serveur, utilisez ceci :
<?php
// Incluez les paramètres communs à tous les wikis avant cette ligne (par exemple 'configuration de la base de données')

        switch ( $_SERVER['SERVER_NAME'] ) {
                case 'shoopz.com':
                        require_once 'LocalSettings_shoopz_com.php';
                        break;

                case 'help.shoopz.com':
                        require_once 'LocalSettings_help_shoopz_com.php';
                        break;

                case 'wiki.shoopz.net':
                        require_once 'LocalSettings_wiki_shoopz_net.php';
                        break;

                default:
                        header( 'HTTP/1.1 404 Not Found' );
                        echo 'This wiki is not available. Check configuration.';
                        exit( 0 );
        }
Pour paramétrer plusieurs domaines qui pointent vers le même code MediaWiki, vous devrez peut-être modifier votre serveur web et éventuellement la configuration DNS. Consultez la documentation de votre serveur web ou de votre hébergeur web pour obtenir des informations sur la façon de faire cela.
  • 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
// Inclure les paramètres communs à tous les wikis avant cette ligne (par exemple 'configuration d’une base de données')

$callingurl = strtolower( $_SERVER['REQUEST_URI'] ); // obtenir l'URL appelante
if ( strpos( $callingurl, '/wiki1' )  === 0 ) {
        require_once 'LocalSettings_wiki1.php';
} elseif ( strpos( $callingurl, '/wiki2' ) === 0 ) {
        require_once 'LocalSettings_wiki2.php';
} elseif ( strpos( $callingurl, '/wikiN' ) === 0 ) {
        require_once 'LocalSettings_wikiN.php';
} else {
        header( 'HTTP/1.1 404 Not Found' );
        echo "This wiki (\"" . htmlspecialchars( $callingurl ) . "\") is not available. Check configuration.";
        exit( 0 );
}
Si vous utilisezune URL courte avec le second cas (wikis basés sur des répertoires), vous devez vérifier les deux répertoires : strpos( $callingurl, 'wiki1', 0 ) || strpos( $callingurl, 'w1/', 0 ), créer un lien symbolique des sources (w1 -> w), et adapter $wgScriptPath.

Nous recommandons d’utiliser une base de données différente pour chaque wiki (en définissant un nom différent $wgDBname pour chacun d’eux). Toutefois, si vous êtes limité à une seule base de données, vous pouvez utiliser un préfixe différent ($wgDBprefix ) pour séparer les différentes installations.

Il peut également être utile de simplement rediriger toute URL de wiki non reconnu vers l’URL « principale » , à la place de « Ce wiki n’est pas disponible. Vérifiez la configuration. »

Mise à jour de la ferme de wikis à partir de la ligne de commande

Utiliser EXPORT

Cette méthode nécessite que $_SERVER["SERVER_NAME"] soit présent pour pour exécuter maintenance/update.php, ce qui, bien sûr, ne se fait pas à partir de la ligne de commande. Ceci peut être substitué en définissant une variable d’environnement :

SERVER_NAME=foo.subdomain.org
export SERVER_NAME
php update.php

Si vous employiez la méthode du sous-répertoire, vous pouvez utiliser :

REQUEST_URI="/wiki1"
export REQUEST_URI
php update.php

Utiliser les paramètres de configuration

Si vous utilisez un fichier LocalSettings.php séparé pour chaque wiki de la famille, comme suggéré dans la déclaration de sélecteur géant, alors vous pouvez utiliser le paramètre --conf pour dire à update.php quel fichier de configuration utiliser. Par exemple :

php update.php --conf ../LocalSettings_shoopz_com.php

Sites de style Drupal

Comme ci-dessus, cette configuration vous permet d’installer plusieurs wikis en utilisant différentes bases de données utilisant le même code source sur un seul serveur. 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.
  1. 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).
  2. 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
  3. Créez un répertoire sites pour contenir nos images et paramètres : mkdir /home/web/mediawiki/sites
  4. Configurer le wiki comme d’habitude à partir du répertoire /code.
  5. 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.
  6. 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.
  7. Placez le fichier LocalSettings.php de Drupal dans votre répertoire principal : cp DrupalLocalSettings.php /home/web/mediawiki/code/LocalSettings.php
  8. 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 ces deux lignes pour vous assurer que les fichiers d'images sont accessibles, par exemple : $wgUploadDirectory = "/home/web/mediawiki/sites/wiki.mysite.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.
  9. Préparez votre installation Apache 2. Site d'exemple : wiki.mysite.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@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
    #  <Directory /home/web/wiki.mysite.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 à paratir de la ligne de commande, donc cette solution ne pemet 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.yourwiki.org - anglais
  • fr.yourwiki.org - français
  • de.yourwiki.org - allemand
  • pool.yourwiki.org - les fihciers média pour tous ces wikis (comme Commons).
    • Comme il existe déjà un lien interwiki nommé commons pour Wikimedia Commons, nous nommons nos fichiers wiki de médias « pool ».
    • Pensez d'abord à être créatif; si vous appelez votre wiki de fichiers média avec « media » (par exemple media.example.com), cela pourrait créer un conflit avec les espaces de noms internes et la nomenclature des fichiers média inclus ([[media:file.ext]]).

Installer

Dans votre système de fichiers, créez un répertoire pour chaque wiki. Exécutez le script d'installation pour chauqe wiki.

Cette solution duplique le code source. Pour réduire cette duplication et pour améliorer les performances du cache, vous pouvez remplacer les répertoires bin (≤ MW 1.20.x), docs, extensions, includes, languages, maintenance, math (≤ MW 1.17.x), resources, serialized[1], skins, tests et vendor (≥ MW 1.22.x[2]) pour les installations qui ne sont pas des fermes, par des liens symboliques vers les répertoires de la famille :

Par exemple, entrez

rm -R extensions/

puis entrez

ln -s pathtopool/extensions/ extensions
N'oubliez pas de permettre à votre serveur Apache de Suivre les liens symboliques en modifiant votre httpd.conf en ajoutant les options FollowSymLinks
Néanmoins vous ne devez pas remplacer les répertoires cache, mw-config(config ≤ MW 1.16.x) et images .

Pour faire la même chose dans Windows, utilisez

mklink /D pathtolink pathtotarget

Configurer

Configurations du wiki

Il est impératif de modifier LocalSettings.php de vos différentes installations wiki depuis le début (même avant de créer les liens symboliques) , sinon /wiki/../maintenance/runJobs.php --maxjobs 1 bloquera la mémoire du serveur. Insérez la ligne ci-dessous dans chaque fichier LocalSettings.php.
$wgJobRunRate = 0;

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 )

  • Table Interwiki
    • iw_prefix - entrez le code de la langue des wikis, "de" pour l'allemand, "en" pour l'anglais, "fr" pour le français et "pool" pour le mediapoolwiki
    • iw_url - ceci est l'endroit où doit apparaître l'URL complète des wiki, par exemple http://de.votrewiki.org/index.php/$1 pour l'allemand (n'oubliez pas le "$1").

Entrez autant d'enregistrements dans la table Interwiki que vous avez de wikis différents (donc un enregistrement pour l'allemand, un pour l'anglais, et un pour les média par exemple).

Maintenant vous pouvez lier un article à son équivalent dans d'autres langues. 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

Notez la page Special:Interwiki : (vous verrez un long tableau)
Ajoutez dans le wiki allemand le préfixe 'en' et l'URL http://en.yourwiki.org/index.php/$1 et cochez la case 'Als lokales Wiki definiert'.
Faites le dans le wiki anglais de manière similaire avec la case à cocher 'Forward'. Et dans les deux wikis entrez un second préfixe 'pool' avec http://pool.yourwiki.org/index.php/$1 et cochez la case 'Forward'.

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 = "http://pool.yourwiki.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= "http://pool.yourwiki.org/index.php/Special:Upload";

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 = 'http://pool.yourwiki.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

[[:pool:Image:{{PAGENAME}}|description ici]]. 

(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 = "http://pool.yourwiki.org/index.php/Image:";

Paramètres partagés

Si vous avez plusieurs wikis, vous pouvez leur faire partager des paramètres similaires. Voici comment faire cela. Nous vous recommandons de séparer la configuration de votre extension dans un fichier différent de vos autres paramètres, comme détaillé ci-dessous. Ils peuvent être tous mis dans un grand fichier, mais cela n'est pas aussi pratique en fonction de vos besoins spécifiques.

Voici un exemple de structure de répertoire si vous réalisez tout ce qui suit :

en/
es/
pl/
ja/
pool/
ExtensionSettings.php
WikiFamilySettings.php
SharedMediaSettings.php
Configuration des extensions
  • Etape 1
    Créez un fichier appelé ExtensionSettings.php avec le contenu suivant, et placez-le à un endroit similaire à l'exemple ci-dessus.
<?php
#####
##### Extension Directory Variables
#####
##
## These variables allow you to specify a single, shared directory for each grouping of extensions.
## If the directory ever needs to be changed, it can be changed here rather than on every
## item below. DO NOT include a trailing "/".
##
## Extensions from gerrit.wikimedia.org
# $wgWikimediaExtensions = "/var/www/wikimediaextensions";
##
## Any third-party extensions
# $wgOtherExtensions = "/var/www/extensions";
#####
#####

### Add globalized extension settings below
#require_once "$wgWikimediaExtensions/ReallyCoolExtension/ReallyCoolExtension.php"; #An example Wikimedia Subversion extension entry

#require_once "$wgOtherExtensions/ReallyCoolExtension/ReallyCoolExtension.php"; #An example third-party extension entry
  • Etape 2
    Editez le fichier LocalSettings.php de chaque wiki qui utilise les paramètres partagés, et ajoutez ce qui suit.
require_once "/absolute/path/to/ExtensionSettings.php";
  • Etape 3
    Maintenant ajoutez simplement toutes les références vers vos diverses extensions
Paramètres de la famille de wikis

Ce sont des paramètres que vous voulez appliquer à toute la famille de wikis. Par exemple, vous pouvez vouloir simplement basculer tous les wikis en mode lecture en même temps. Vous pouvez aussi enregistrer le nom d'utilisateur et le mot de passe pour la/les base(s) de données, s'ils sont les mêmes. Vous pouvez en plus contrôler les droits des utilisateurs sur le wiki entier à partir de ce seul fichier.

Note : si vous utilisez un fichier image/média de Communs ou de pool, nous recommandons de ne pas mettre ces paramètres dans le fichier WikiFamilySettings.php . Cette information ne s'applique qu'à chaque wiki de votre famille de wikis autre que votre propre dépôt. Il est recommandé de le placer dans un fichier séparé.

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.

Solution minimaliste ultime

La « solution minimaliste ultime » consiste à utiliser les liens symboliques (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

Voyons un exemple réel de mediawiki/LocalSettings.php. Dans la vie réelle nous devons nous accomoder des petites différences dans les noms et les bases de données des sites que nous gérons.

if ( !defined( 'MEDIAWIKI' ) ) { 
exit; 
}    #Protect against web entry
$mysites = array(
    array( '台掃', 'radioscanningtw.jidanni.org', 'radioscanningtw' ),
    array( '蝶園', 'transgender-taiwan.org',      'transgender' ),
    array( 'ABJ',    'abj.jidanni.org',             'mwabj' )
);
$mystrings = array( $_SERVER['SCRIPT_FILENAME'] );
if ($wgCommandLineMode) { $mystrings[] = $_SERVER['PWD']; }
$mystrings[] = $IP;
foreach ( $mysites as $site ) {
    foreach ( $mystrings as $string ) {
        if ( strpos( $string, $site[1] ) !== false ) {
            $wgSitename = $site[0];
            putenv( "MW_INSTALL_PATH=/home/jidanni/" . $site[1] );
            $wgDBname = $site[2];
            break 2;
        }
    }
}
if ( $wgSitename == 'MediaWiki' ){
  trigger_error('Oh no, I still have not set $wgSitename. Somebody tell me. TEL +886-963-114343',E_USER_ERROR);}

## For maintenance scripts, https://bugzilla.wikimedia.org/show_bug.cgi?id=19593 :
if ( $wgServer == 'http://localhost' ) {
    $wgServer = $wgInternalServer = 'http://' . $site[1];
}
$wgUsePathInfo = false; 
$wgScriptPath = ''; 
$wgDBserver = 'mysql.transgender-taiwan.org';
$wgLogo = "/images/$wgDBname/$wgDBname.png";
switch ( $wgSitename ) {
  #any per-wiki customizations
}

Notez que nous devons encore faire les tâches spécifiques à chaque base de données, comme par exemple php update.php. (le code ci-dessus doit détecter à quel fichier update.php vous vous rapportez). La mise à jour est simple si vous faite un téléchargement à partir de Git. (Heureusement il n'existe plus de code qui suppose qu'il n'y a qu'un seul wiki sur le disque...)

Images

A moins que vous n'autorisiez pas les téléchargements ou que vous les autorisiez seulement pour un ensemble de wikis, vous aurez besoin de créer des répertoires d'images séparés (avec leurs alias), dans votre configuration 'vhost'. for i in aaa bbb ccc; do mkdir -p /home/user/images/$i; done, et dans le vhost de aaa.example.org : Alias /w/images /home/user/images/aaa. Et la ême chose pour bbb et ccc.

Néanmoins pous pouvez préferrer à la place simplement Manuel:Gestion des images , où *.example.org/images/ pointe simplement vers le même répertoire unique. Ou on peut utiliser par exemple, *.example.org/$wgDBname/images/.

Ajouter de nouveaux wikis

Pour ajouter un wiki à une Wiki family/fr de production

  1. ajoutez sa configuration à votre serveur web
  2. mettez en commentaire temporairement le contrôle de file_exists("../LocalSettings.php") dans config/index.php puis exécutez-le
  3. fusionner le config/LocalSettings.php produit, dans LocalSettings.php
  4. ajoutez quelques pages

Supprimer les anciens wikis

Pour supprimer un wiki d'une Wiki family/fr de production

  1. supprimer sa configuration du
    1. serveur web
    2. LocalSettings.php
  2. DROP DATABASE

Méthode Wikimedia

Une autre option est d'utiliser la méthode dont se sert la Fondation Wikimedia. Les grandes étapes sont données ci-dessous. Cette méthode n'est pas pour le premier venu, mais elle donne de bons résultats, comme on peut le voir par le succès qu'en a la Fondation Wikimedia de son utilisation.

  1. Configurez une copie du modèle de MediaWiki via l'assistant de configuration en ligne. Modifiez la page d'accueil si vous voulez une page d'accueil différente pour chaque wiki que vous avez créé dans votre ferme.
  2. Après cela, exportez votre base de données avec mysqldump, phpMyAdmin, etc. Cet export de base de données peut aussi être une structure (par exemple mysqldump -uroot -p --no-data dbname > template.sql), auquel cas vous devrez créer le premier utilisateur avec createAndPromote.php. Enregistrez ceci sur votre serveur dans le répertoire maintenance/ en tant que par exemple : template.sql.
  3. Maintenant, écrivez quelques scripts rapides pour créer un nouveau wiki. En résumé, vous devrez dupliquer la bade de données pour une liste de wikis (la liste peut être basées sur un fichier à plat ou basée sur MySQL/SQLite). D'abord exportez le wiki du modèle, puis importez de nouveau le dump de la base de données du modèle dans la base de données, sous le nom de chaque nouveau wiki. Utilisez un suffixe standard après le nouveau nom de la base de données (par exemple si le wiki est cat.example-farm.org, vous pouvez choisir catwiki pour le nom de la base de données).
  4. Dans votre fichier de configuration, ajoutez quelque chhose comme ceci, en adaptant le préfixe de la base de données ainsi que votre domaine si nécessaire :
    if ( defined( 'MW_DB' ) ) {
        // Command-line mode and maintenance scripts (e.g. update.php) 
        $wgDBname = MW_DB;
    } else {
        // Web server
        $server = $_SERVER['SERVER_NAME'];
        if ( preg_match( '/^(.*)\.example-farm.org$/', $server, $matches ) ) {
            $wikiname = $matches[1];
        } else {
            die( "Invalid host name, can't determine wiki name" );
            // Optional: Redirect to a "No such wiki" page.
        }
        if ( $wikiname === "www" ) {
            // Optional: Override database name of your "main" wiki (otherwise "wwwwiki")
            $wikiname = "meta";
        }
        $wgDBname = $wikiname . "wiki";
    }
    
  5. Configurez votre DNS avec un joker, un enregistrement, et Apache avec un alias de serveur (comme ServerAlias *.example-farm.org) et ça devrait fonctionner.

Le script maintenance/update.php utilise un paramètre --wiki qui est exporté comme constante MW_DB . Votre fichier LocalSettings.php a besoin de le définir comme le $wgDBname correct (sur la ligne de commande il n'y a pas de requête HTTP, ni de « SERVER_NAME » :

php maintenance/update.php --wiki catwiki

Votre LocalSettings.php unique (habituellement formé de quelques lignes incluant un fichier CommonSettings.php qui n'est pas directement accessible à partir du serveur) utilise la variable $wgDBname pour initialiser les paramètres spécifiques du wiki. Voir Manuel:$wgConf pour plus de détails.

Vous devrez aussi corriger les répertoires de téléversement à moins que vous voulez que chaque wiki utilise les mêmes fichiers. Comme dit précédemment, c'est probablement la méthode la plus difficile à faire, et elle nécessite davantage d'expérience technique, mais elle peut réellement donner de bons et propres résultats.

Extensions des familles de wikis

Plusieurs extensions MediaWiki essaient de simplifier l’hébergement de plusieurs wikis en utilisant une base unique de code :


Voir aussi

Références

  1. voir ce fil concernant le répertoire « sérialisé »
  2. Dans le cas où vous utilisez Composer pour installer certaines de vos extensions (ou toutes), if supported