Manuel:Famille de wikis
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 :
- 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 .
- 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.
- 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';
- Configure settings that must differ for all wikis. For example:
$wgCacheDirectory = "/tmp/mediawiki_cache/$wgDBname"; $wgUploadDirectory = "$IP/images/$wgDBname"; $wgUploadPath = "/w/images/$wgDBname";
- Configure per-wiki overrides. This should include at least
$wgServer
and$wgArticlePath
.Elles peuvent aussi être incluses depuis un fichier séparé, par exemple $code .$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' => .., .., ];
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.
- Install the first wiki as normal, via the web or CLI installer, which sets up your database and generates a LocalSettings.php file.
- After installation, rename the generated
LocalSettings.php
file to include the wiki ID (e.g. database name), likeLocalSettings_mywiki.php
.
- 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.)
- 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.' );
}
$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.
- Créez un répertoire de base pour contenir tous vos fichiers MediaWiki par exemple
mkdir /home/web/mediawiki
. - 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
). - 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
- Créez un répertoire sites pour contenir nos images et paramètres :
mkdir /home/web/mediawiki/sites
- Configurer le wiki comme d’habitude à partir du répertoire /code.
- 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. - 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. - 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
- Modifiez le fichier LocalSettings.php de chaque sous-site pour pointer vers les bons endroits :
- D'abord commentez le code contenant
$IP
(lignes 16-20 en 1.15.3) car cela défini le répertoire de "code" parindex.php
. - 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. - Faites les autres modifications comme nécessaire.
- D'abord commentez le code contenant
- Préparez votre installation Apache 2. Site d'exemple : wiki.mysite.com wiki.example.com
- 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
- Créez une configutation VHost appropriée :
- Créez un lien vers le répertoire code si nécessaire, par exemple
<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).
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 :
- Extension:MediaWikiFarm - beta.
- Extension:SkinCustomiser : For localisation issues of the Sidebar (barre latérale) and customising the Skins regarding the files
MediaWiki:Cologneblue.css
,MediaWiki:Modern.css
,MediaWiki:Monobook.css
,MediaWiki:Vector.css
,MediaWiki:Mobile.css
,MediaWiki:Common.css
respectively.
Voir aussi
- Base de données de configuration
- Extension:CentralAuth/fr
- Manuel:InitialiseSettings.php
- Manuel:Commonsettings.php
- Groupe MediaWiki des utilisateurs fermiers et courriel
- Manuel:$wgConf
- Central ID — le mécanisme par lequel les comptes utilisateur peuvent avoir un identificateur supplémentaire 'central'.