MediaWiki:Installation et configuration
Contents
- 1 Introduction
- 2 Installation
- 3 Upgrade
- 4 Configuration
- 4.1 Serveur Web
- 4.2 Menu de gauche (Sidebar)
- 4.3 Une instance, plusieurs wiki (multi-tenant / wiki-family)
- 4.4 Changement d'url
- 4.5 Rafraichir son cache
- 4.6 Flux RSS
- 4.7 Autoriser les recherches à partir de 2 caractères
- 4.8 Suppression du titre sur la page principale
- 4.9 Limitation de création d'utilisateurs
- 4.10 Importation de fichiers
- 4.11 Améliorer la facilité de recherche
- 4.12 Ajouter du texte sur la partie login
- 4.13 Rester en SSL
- 4.14 Modifier le header de tous les articles
- 4.15 Cacher les informations de versions
- 4.16 Cacher la sidebar lors des modifications
- 4.17 URL plus courte
- 4.18 Supprimer les pages de discussion
- 4.19 Activer le mode Debug
- 4.20 Ouvrir un lien dans une nouvelle fenêtre
- 5 Utiliser des fenêtres d'informations
- 6 Affichage Monobook
- 7 Désactiver des skins
- 8 FAQ
- 9 Ressources
1 Introduction
Un wiki est un système de gestion de contenu de site Web qui rend les pages Web librement et également modifiables par tous les visiteurs autorisés. Les wikis sont utilisés pour faciliter l'écriture collaborative de documents avec un minimum de contrainte. Le wiki a été inventé par Ward Cunningham en 1995, pour une section d'un site sur la programmation informatique qu'il a appelée WikiWikiWeb. Le mot « wiki » vient du terme hawaiien wiki wiki, qui signifie « rapide » ou « informel ». Au milieu des années 2000, les wikis ont atteint un bon niveau de maturité et sont associés au Web 2.0. Créée en 2001, l'encyclopédie Wikipédia est devenue le wiki le plus visité au monde.
MediaWiki est un moteur de Wiki écrit en PHP et créé par Magnus Manske. Initialement développé pour Wikipédia (qui l'utilise depuis 2002), il sert également de base pour d'autres projets de la fondation WikiMedia (Wiktionnaire, Wikisource, Wikilivres ou Wikiquote). D'autres associations l'ont adopté (par exemple Wikitravel, Mozilla ou Ekopedia).
2 Installation
I'm describing here 2 ways to install Mediawiki. Choose the best for your needs, but I recommend the manual method.
2.1 Manual Method
First of all, download the current version with git :
git |
git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git |
Then list all versions :
git |
git tag -l | sort -V |
And choose the wished version you want to use. Example, I want to use 1.21 :
git |
git checkout 1.21.0 |
2.1.1 Extentions install
I strongly recommend as well to use git to get all your extensions. You don't need to download all available as it takes some disk space, but you can choose them one by one like that :
cd extensions git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/<extension_name>.git |
You can see the names here : https://gerrit.wikimedia.org/r/#/admin/projects/
2.2 Debian Method
Pour l'installer depuis les repository Debian :
aptitude |
aptitude install mediawiki |
Sinon vous pouvez l'installer à la main depuis le site principale.
2.2.1 PostgreSQL
Si à la suite de l'installation, vous ne souhaitez pas utiliser MySQL mais Postgres comme base de donnée, vous allez rencontrer certainement des soucis. Reportez vous donc à ce lien et regardez la FAQ. Si ca ne fonctionne toujours pas, que vous rencontrez d'autres types d'erreurs, alors testez ceci :
If you are using Postgres, you will need to either have a database and user created for you, or simply supply the name of a Postgres user with "superuser" privileges to the configuration form. Often, this is the database user named postgres.
The database that MediaWiki will use needs to have both plpgsql and tsearch2 installed. The installer script will try and install plpgsql, but you may need to install tsearch2 yourself. (tsearch2 is used for searching the text of your wiki). Here's one way to do most of the setup. This is for a Unix-like system, and assumes that you have already installed the plpgsql and tsearch2 modules. In this example, we'll create a database named wikidb, owned by a user named wikiuser. From the command-line, as the postgres user, perform the following steps.
createuser -S -D -R -P -E wikiuser (then enter the password) createdb -O wikiuser wikidb createlang plpgsql wikidb
Adding tsearch2 to the database is not a simple step, but hopefully it will already be done for you by whatever packaging process installed the tsearch2 module. In any case, the installer will let you know right away if it cannot find tsearch2.
The above steps are not all necessary, as the installer will try and do some of them for you if supplied with a superuser name and password.
For installing tsearch2 to the wikidb database under Windows, do the following steps:
- Find tsearch2.sql (probably under .\PostgreSQL\8.x\share\contrib) and copy it to the postgresql\8.x\bin directory;
- From a command prompt at the postgresql\8.x\bin directory, type :
psql wikidb < tsearch2.sql -U wikiuser
- It will prompt you for the password for wikiuser;
That's it!
Point (2) seems only to work on windows, cause on debian linux 4.0 (etch) only user postgres is allowed to use language c. so there it must be called by:
su - postgres -c psql wikidb < tsearch2.sql
afterwards you must grant select rights to wikiuser to the tsearch tables and insert the correct locale.
su - postgres psql -d wikidb -c "grant select on pg_ts_cfg to wikiuser;" psql -d wikidb -c "grant select on pg_ts_cfgmap to wikiuser;" psql -d wikidb -c "grant select on pg_ts_dict to wikiuser;" psql -d wikidb -c "grant select on pg_ts_parser to wikiuser;" psql -d wikidb -c "update pg_ts_cfg set locale = current_setting('lc_collate') where ts_name = 'default' and prs_name='default';"
If you receive an error similar to "ERROR: relation "pg_ts_cfg" does not exist" when executing the above statements, try installing tsearch2 to the wikidb database again, but instead use these two separate steps (and then try the grant statements again):
su - postgres psql wikidb -f tsearch2.sql
3 Upgrade
To upgrade Mediawiki with git, go into your Mediawiki folder instance and check the version you're running on :
git |
> cd /var/www/mediawiki > git describe --tags 1.21.0 |
Then get the latest version of Mediawiki :
git |
git fetch |
Change your version to the desired version :
git |
git checkout 1.21.1 |
and upgrade your instance with the database :
php |
php maintenance/update.php |
That's all, your MediaWiki core is now up to date. You now need look at extensions.
3.1 Extensions upgrade
To upgrade you extensions, you've used git, that's why it will be easy. Anyway, some of them may not be managed with git, but the old repository version (SVN). I've wrote a little script to handle that :
Simply copy it in your extension directory and launch it from there :
Everything is up to date now :-)
4 Configuration
4.1 Serveur Web
4.1.1 Nginx
Pour une mise en place de Mediawiki avec Nginx et les URL courtes, voici la configuration à adopter. J'ai également mis du SSL et forcé les redirections de la page de login vers du SSL :
4.2 Menu de gauche (Sidebar)
- Pour éditer votre menu à gauche :
Accédez aux modifications via ce lien :
https://wiki.deimos.fr/index.php?title=MediaWiki:Sidebar
Ensuite, vous pourrez l'éditez en mettant "le lien|le nom"
Voici un exemple :
* navigation ** mainpage|mainpage ** portal-url|portal ** currentevents-url|currentevents ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help ** sitesupport-url|sitesupport * navigation rapide ** linux|Linux ** unix|Unix ** Mac OS X|Mac OS X ** windows|Windows ** serveurs|Serveurs ** réseaux|Réseaux ** divers|Divers
- Pour créer un lien interwiki :
[[Monlien#Interwiki|Le nom que je veux donner]]
4.3 Une instance, plusieurs wiki (multi-tenant / wiki-family)
4.3.1 Méthode 1
Si par exemple vous voulez faire du multi languages ou tout simplement avoir plusieurs bases de données et ne pas faire n mises à jours pour chacune de vos bases, alors optez pour cette solution.
Le but est de modifier le code du fichier LocalSettings.php, afin de pouvoir détecter dans l'entete http (URL), une succession de cacatère pouvant faire référence à une base ou à une autre.
Procédez comme ceci :
- Lancez un setup du wiki. Une fois le fichier LocalSettings.php créer, renommez le en fr.php par exemple.
- Relancez un setup du wiki. Une fois le fichier LocalSettings.php créer, renommez le en en.php par exemple.
- Créez le fichier LocalSettings.php, puis insérez et adaptez ce qui suit :
<?php $callingurl = strtolower($_SERVER['SERVER_NAME']); // identify the asking url if ( $callingurl == "fr.deimos.fr" ) { require_once( 'fr.php' ); } if ( $callingurl == "en.deimos.fr" ) { require_once( 'en.php' ); } ?>
Dans cette configuration, si l'url correspond par exemple à http://fr.deimos.fr/mediawiki/index.php, alors ce sera le fichier fr.php qui sera pris en compte.
4.3.2 Méthode 2
Voici une autre méthode qui permet de choisir un fichier de configuration différent en fonction du premier paramètre suivant l'url. Exemple :
- http://www.deimos.fr/wiki1
- http://www.deimos.fr/wiki2
- http://www.deimos.fr/wiki3
- ...
Modifiez le fichier LocalSettings.php :
Il ne vous reste plus qu'à créer vos configurations de ce type :
- LocalSettings-wiki1.php
- LocalSettings-wiki2.php
- LocalSettings-wiki3.php
4.4 Changement d'url
Vous avez peut etre voulu commencer un wiki avec un certain nom et vouloir changer le nom du dossier ensuite. Ce qui fait que l'url a changer. Je m'explique :
J'ai installé media wiki et ca pointe sur :
http://www.deimos.fr/mediawiki
J'ai déjà créer des articles. Je souhaiterais maintenant renommer ceci en :
http://www.deimos.fr/blocnotesinfo
Le problème c'est que les anciens articles ont gardé en mémoire la première url. Pour mettre a jour tout ceci faites :
cd /usr/share/mediawiki/maintenance php clear_interwiki_cache.php php alltrans.php php refreshLinks.php
Essayez maintenant et ca devrait aller beaucoup mieux :-)
4.5 Rafraichir son cache
Pour rafraichir son cache, il suffit de rajouter ?action=purge à la fin de l'url du wiki. Ex :
https://wiki.deimos.fr/index.php?action=purge
4.6 Flux RSS
Pour avoir un lien avec ces flux RSS, c'est assez simple, je vous laisse juger par vous même :
- Changements récents :
https://wiki.deimos.fr/index.php?title=Special:Recentchanges&feed=rss https://wiki.deimos.fr/index.php?title=Special:Recentchanges&feed=atom
- Nouvelles Pages :
https://wiki.deimos.fr/index.php?title=Special:Newpages&feed=rss https://wiki.deimos.fr/index.php?title=Special:Newpages&feed=atom
- Historique des pages (MW1.7+) :
https://wiki.deimos.fr/index.php?title=MediaWiki:Installation_et_configuration&action=history&feed=atom
4.7 Autoriser les recherches à partir de 2 caractères
Par défaut, la recherche de terme dans mediawiki ne prend pas en compte les mot de 3 lettres et moins. Or en informatique, des mots comme XEN, VNC, etc. sont très fréquent.
Mediawiki utilise pour ses recherche la fonctionnalité de recherche en texte intégral (fulltext) de mysql. Cette option permet d'indexer certains champs texte pour y faire des recherches évolué respectant certaines contraintes de la langue. Pour que les indexes ne prennent pas trop de place, la configuration par défaut ignore les mots de moins de 4 lettres. C'est le paramètre ft_min_word_len
- Modifier le fichier /etc/mysql/my.cnf pour modifier le paramètre ft_min_word_len
[mysqld] ft_min_word_len=3
- relancer mysql
- se connecter sur la base et lancer une réparation des index :
mysql -u root -p wikidb mysql> REPAIR TABLE searchindex;
Voilà, c'est fait, maintenant vous pouvez chercher des mots de 2 lettres dans votre wiki.
4.8 Suppression du titre sur la page principale
Après avoir longuement cherché, j'ai fini par trouver un petit javascript qui supprime le titre "Accueil" de la page de démarrage :-).
4.8.1 Version < 1.12.0
Insérez ces lignes dans votre fichier MediaWiki:Common.js (https://wiki.deimos.fr/MediaWiki:Common.js) et insérez ces lignes :
/* hide heading on [[Main_Page]] */ var mpTitle = "Accueil"; var isMainPage = (document.title.substr(0, document.title.lastIndexOf(" - ")) == mpTitle); var isDiff = (document.location.search && (document.location.search.indexOf("diff=") != -1 || document.location.search.indexOf("oldid=") != -1)); if (isMainPage && !isDiff) { document.write('<style type="text/css">/*<![CDATA[*/ #lastmod, #siteSub, #contentSub, h1.firstHeading { display: none !important; } /*]]>*/</style>'); } /*
4.8.2 Version >= 1.12.0
Editez votre fichier https://wiki.deimos.fr/MediaWiki:Common.css et insérez ceci :
Common.css |
/** Le CSS placé ici sera appliqué à toutes les apparences. */ .page-Accueil * .firstHeading, .page-Accueil * h3#siteSub, .page-Accueil * #contentSub { display:none; } |
4.9 Limitation de création d'utilisateurs
Ceci va interdire la création des utilisateurs, et l'édition depuis lesp ostes anonymes. A mettre dans votre fichier LocalSettings.php :
# This snippet prevents new registrations from anonymous users # (Sysops can still create user accounts) $wgGroupPermissions['*']['createaccount'] = false; # This snippet prevents editing from anonymous users $wgGroupPermissions['*']['edit'] = false; require_once( "includes/DefaultSettings.php" );
4.10 Importation de fichiers
Pour autoriser certaines extentions, editez ces quelques lignes dans votre fichier LocalSettings.php :
4.11 Améliorer la facilité de recherche
Ajoutez ces lignes dans votre fichier LocalSettings pour avoir des options de recherche avancée. Pour avoir la recherche à la google suggestion :
LocalSettings |
# Drop-down AJAX search suggestions $wgEnableMWSuggest = true; |
Et pour que les recherches soient plus pertinantes :
LocalSettings |
# More relevant search snippets $wgAdvancedSearchHighlighting = true; |
4.12 Ajouter du texte sur la partie login
Je souhaites par exemple ajouter du texte pour proposer une connexion en SSL. Il aut éditer la Page Loginend :
https://wiki.deimos.fr/blocnotesinfo/index.php?title=MediaWiki:Loginend
Et nous pouvons mettre du texte comme celui ci par exemple :
<div style="clear:both; font-size:.85em; line-height:1.4em; margin-left:2em"><u>Note</u> : Les informations envoyées lors de cette connexion ne seront pas chiffrées.<br/> Pour plus de sécurité, il est possible de se connecter via le [https://{{SERVERNAME}}/blocnotesinfo/index.php?title=Sp%C3%A9cial:Connexion&returnto=Accueil serveur sécurisé]. --- <u>Note</u> : The information sent during this connection will not be encrypted.<br /> For more security, it is possible to connect through the [https://{{SERVERNAME}}/blocnotesinfo/index.php?title=Sp%C3%A9cial:Connexion&returnto=Accueil secure server]. </div>
4.13 Rester en SSL
La valeur $wgServer permet de définir l'adresse du wiki, qui va être régulièrement utilisée pour accéder à certaines pages. Si comme moi, vous avez forcé l'authentification en SSL, vous remarquerez que vous repassez en non chiffré juste après la connexion. Et ce n'est pas forcément le cas souhaité. Si vous souhaitez rester en SSL lorsque vous commencez à l'utiliser, éditez votre configuration sur la partie $wgServer et remplacez là par ceci :
LocalSettings.php |
if ( !empty( $_SERVER['HTTPS'] ) ) { $wgServer = "https://wiki.deimos.fr"; }else{ $wgServer = "http://wiki.deimos.fr"; } |
4.14 Modifier le header de tous les articles
Si vous avez besoin de modifier toutes les pages de votre wiki pour que le header soit identique partout, il faut alors utiliser des hooks. Pour ce hook (ArticlePageDataBefore), il suffit d'ajouter ceci à la fin du fichier LocalSettings.php :
Ici j'ai donc un modèle ArticleHeader qui s'affichera dans tous les articles.
4.15 Cacher les informations de versions
4.15.1 Pour les utilisateurs non connectés
Vous n'avez pas forcément envie que tout le monde puisse obtenir des informations sur la plateforme sur laquelle tourne MediaWiki, ou bien des informations sur la version de MediaWiki en lui même. Voici comment supprimer la page Version pour les personnes non connectées :
4.15.2 Pour les utilisateurs non admin
Si vous souhaitez que seul les administrateurs aient accès à la page Version :
4.16 Cacher la sidebar lors des modifications
Il est possible de cacher la sidebar lorsqu'un utilisateur connecté fait des modifications. J'ai trouvé cette solution là utilisant JavaScript qui me plaisait bien. Le soucis c'est que c'est pour chaque utilisateur, il faut éditer un fichier qui leur est propre. J'ai donc quelque peu modifié ce JavaScript pour qu'il fonctionne pour tous les utilisateurs une fois installé. J'ai également rajouté un onglet (tab) pour permettre l'upload de fichiers. Pour le mettre en place, c'est assez simple et je vous rappelle que ça n'est compatible qu'avec le thème Vector. Éditez cette page https://wiki.deimos.fr/MediaWiki:Vector.js et insérez ceci :
https://wiki.deimos.fr/MediaWiki:Vector.js |
/* hide-vector-sidebar.js: Adds a button to toggle visibility of the Vector sidebar. Written by PleaseStand. Public domain; all copyright claims waived as described in http://en.wikipedia.org/wiki/Template:PD-self Modified by Deimosfr <deimos@deimos.fr> */ /*global document, window, addOnloadHook, addPortletLink, skin*/ var sidebarSwitch; function sidebarHide() { document.getElementById("mw-panel").style.visibility = "hidden"; document.getElementById("mw-head-base").style.marginLeft = "0"; document.getElementById("content").style.marginLeft = "0"; document.getElementById("left-navigation").style.left = "0"; document.getElementById("footer").style.marginLeft = "0"; if(typeof sidebarSwitch == "object") { sidebarSwitch.parentNode.removeChild(sidebarSwitch); } sidebarSwitch = addPortletLink("p-cactions", "javascript:sidebarShow()", "Show sidebar", "ca-sidebar", "Show the navigation links", "a"); } function sidebarShow() { document.getElementById("mw-panel").style.visibility = ""; document.getElementById("mw-head-base").style.marginLeft = ""; document.getElementById("content").style.marginLeft = ""; document.getElementById("left-navigation").style.left = ""; document.getElementById("footer").style.marginLeft = ""; if(typeof sidebarSwitch == "object") { sidebarSwitch.parentNode.removeChild(sidebarSwitch); } sidebarSwitch = addPortletLink("p-cactions", "javascript:sidebarHide()", "Hide sidebar", "ca-sidebar", "Hide the navigation links", "a"); } function createTab() { addPortletLink( 'p-cactions', wgArticlePath.replace( '$1', 'Special:Upload' ), 'Importer un fichier'); } // Only activate on Vector skin if(skin == "vector") { addOnloadHook(function() { if ( document.getElementById( 'editform' ) ) { // Change this if you want to show the sidebar by default sidebarHide(); // Add custom tab addOnloadHook( createTab ); } }); } |
Et voilà :-). Éditez une page pour voir le résultat ! Vous avez la possibilité d'afficher et cacher simplement la sidebar depuis les onglets.
4.17 URL plus courte
Il est possible de faire des URL plus courte pour passer par exemple de http://www.domainname.com/wiki/index.php?title=Accueil à http://wiki.domainname.com/Accueil. C'est mieux non ? Vous allez voir que ce n'est pas très compliqué. Tout d'abord dans votre fichier de configuration de Mediawiki, veillez à avoir ces lignes :
LocalSettings.php |
[...] $wgMetaNamespace = "Nom de mon wiki"; $wgScriptPath = ""; $wgArticlePath = "/$1"; $wgScriptExtension = ".php"; [...] |
Et ensuite, pour la partie Apache, ajoutez ceci à votre VirtualHost pour votre wiki :
Redémarrez votre Apache et c'est bon :-)
4.18 Supprimer les pages de discussion
Il est possible de supprimer les pages de discussion (Talk pages) en ajoutant ce Hook dans votre configuration :
4.19 Activer le mode Debug
Il est possible de galérer quelque peu pour la mise en place de certaines extensions. Pour palier à ceci, il faut activer le superbe mode debug en ajoutant ces lignes dans votre LocalSettings.php :
LocalSettings.php |
# Debug mode error_reporting( -1 ); ini_set( 'display_errors', 1 ); $wbDebugLogFile = '/tmp/debug.log'; $wgDebugComments = true; $wgDebugToolbar = true; |
4.20 Ouvrir un lien dans une nouvelle fenêtre
Si vous souhaitez ouvrir de manière permanente les liens externe dans une nouvelle fenêtre/nouvel onglet, placez ceci dans votre configuration :
LocalSettings.php |
[...] $wgExternalLinkTarget = '_blank'; [...] |
Sinon, si vous souhaitez uniquement ouvrir un lien particulier dans une nouvelle fenêtre/nouvel onglet, il va falloir ajouter un JavaScript dans la page MediaWiki:Common.js :
Puis ajouter votre nouveau lien dans une page comme ceci :
<span class="pops">http://www.deimos.fr</span>
5 Utiliser des fenêtres d'informations
Vous avez certainement vu sur Wikipedia ou autre mediawiki des fenêtres en haut à gauche des articles présentants certaines informations. Ceci s'appelle une infobox. En parcourant le web, j'ai pu voir des infobox plus compliquées les unes que les autres nécessitant des plugins alors qu'en fait il est possible d'en créer de très belles sans plugins.
Pour ceux que ça intéresse, voici la mienne : http://www.deimos.fr/blocnotesinfo/index.php?title=Template:Infobox
Et voici comment l'utiliser. insérez ceci dans une page :
{{Infobox | infobox_image = [[Image:logo.png|220px|Name]] | infobox_softversion = x.x | infobox_os = OS | infobox_website = [http://www.deimos.fr/ Deimos Website] | infobox_others = }}
6 Affichage Monobook
Pour changer le CSS de Monobook pour tous les utilisateurs, ajoutez ceci à votre url :
https://wiki.deimos.fr/blocnotesinfo/index.php/MediaWiki:Monobook.css
Ensuite, niveau CSS, voici ce que j'ai mis :
https://wiki.deimos.fr/blocnotesinfo/index.php/MediaWiki:Monobook.css |
/* Le CSS placé ici sera appliqué à toutes les apparences. */ /* Hide Acceuil page on the main page */ .page-Accueil * .firstHeading, .page-Accueil * h3#siteSub, .page-Accueil * #contentSub { display:none; } /* Set default colors for geshi addon */ div.mw-geshi { background-color: #f9f9f9; padding: 1em; margin:1em 0; border: 1px dashed #2f6fab; } /* Change default background image */ body { background: white url("images/a/a6/Headbg.jpg") 0px 0px no-repeat; } /* Rounding corners for Firefox and Mozilla browser. Warning : This could make your website slower */ .pBody { padding: 0.3em 0.3em; -moz-border-radius-topright: 0.5em; -moz-border-radius-bottomright: 0.5em; } .portlet h5 { -moz-border-radius-topright: 0.5em; } #p-cactions ul li, #p-cactions ul li a { -moz-border-radius-topright: 0.5em; -moz-border-radius-topleft: 0.5em; } #content { -moz-border-radius-topleft: 0.5em; -moz-border-radius-bottomleft: 0.5em; } /* Changing background opacity */ .ns-0 * #content, .ns-0 * #p-cactions li, .ns-0 * #p-cactions li a { filter:alpha(opacity=90); } |
7 Désactiver des skins
Pour désactiver des skins, c'est très simple, il suffit par exemple d'ajouter ceci dans votre LocalSettings :
LocalSettings.php |
# To remove various skins from the User Preferences choices $wgSkipSkins = array("standard", "cologneblue", "modern", "monobook", "myskin", "nostalgia", "simple"); |
8 FAQ
Voici les infos du site : Consultez le Guide de l'utilisateur pour plus d'informations sur l'utilisation de ce logiciel.
Please see documentation on customizing the interface and the User's Guide for usage and configuration help.
8.1 Connaitre sa version
Pour connaitre sa version, il suffit de rajouter Special:version après "title=" dans votre URL :
https://wiki.deimos.fr/index.php?title=Special:version
8.2 Problème divers après une mise à jour
Vous rencontrez des soucis suite à une mise à jour de MediaWiki ? Essayer ceci, ça règle pas mal de problèmes :
php |
php maintenance/update.php |