MediaWiki
What is Mediawiki ?
Mediawiki is the powerful wiki software used by Wikipedia.
Installing Mediawiki
Download the software - a PHP application - so there is nothing to compile or make. Untar in any directory, for example /usr/local, and use a link from /var/www/htdocs/wiki.
# tar -C /usr/local -xvf mediawiki-x.y.z.tar.gz
Multiple instances
Instead of copying distribution files and directories under /var/www/htdocs for each wiki, it is possible to create directories of links pointing to the same original shared mediawiki installation, modifying only these files and directories differing across sites (obviously the databases will also have to differ) : /mw-config, /images, and LocalSettings.php.
# cd /var/www/htdocs # mkdir wiki # cd wiki # mkdir mw-config # mkdir images # cp -R /usr/local/mediawiki-x.y.z/mw-config . # cp -R /usr/local/mediawiki-x.y.z/images . # ln -s /usr/local/mediawiki-x.y.z/* . ln: failed to create symbolic link './images': File exists ln: failed to create symbolic link './mw-config': File exists # cd .. # chown -R apache:apache wiki
Configuring Mediawiki
Create an empty database wikidb and database user wikiuser on localhost. This can be done using phpMyAdmin on the User accounts tab. Keep % for the host name, choose "Create database with same name and grant all privileges" and click Go. Then point your browser to the newly created wiki directory to run the installation script. Click the “Install MediaWiki” button, make sure it worked, then move file LocalSettings.php to the wiki directory. Use your browser again to visit the newly configured wiki directory.
# chown -R apache:apache LocalSettings.php
Mediawiki Security
When releasing a free-write-access MediaWiki site, you might find that low-attention pages start to get filled with spam messages. To avoid that, you can restrict write-access to adminitrators by adding the lines below to LocalSettings.php. The login token is encrypted, so that would be hopefully enough to keep spammers out.
$wgGroupPermissions['*']['edit'] = false; $wgGroupPermissions['user']['edit'] = false; $wgGroupPermissions['sysop']['edit'] = true; $wgGroupPermissions['*']['createaccount'] = false;
Rendering Math
Mediawiki's extension:math affords rendering math. It requires compilation of texvc which requires installing ocaml, that you can download from http://caml.inria.fr. Install in the usual way then compile using the instructions in INSTALL :
# tar -C /usr/local -xvf ocaml-x.y.z.tar.gz # cd /usr/local # chown -R root:root ocaml-x.y.z # cd ocaml-x.y.z # ./configure -libdir /usr/local/lib64/ocaml # make world # make bootstrap # make opt # make opt.opt # umask 022 # make install # make clean
Download extension:math, run update.php so as to setup the math database files, compile texvc and texvccheck, then link in /usr/bin :
# tar -C /usr/local/mediawiki-x.y.z/extensions -xvf Math-RELx_y-ztttttt.tar.gz # su apache $ ln -s /var/www/htdocs/math/LocalSettings.php /usr/local/mediawiki-x.y.z $ cd /usr/local/mediawiki-x.y.z/maintenance $ php update.php $ rm /usr/local/mediawiki-x.y.z/LocalSettings.php <ctrl>-d # cd ../extensions/Math/math # make # ln -s /usr/local/mediawiki-x.y.z/extensions/Math/math/texvc /usr/bin # cd ../texvccheck # make # ln -s /usr/local/mediawiki-x.y.z/extensions/Math/texvccheck/texvccheck /usr/bin
Also link latex, dvips, and dvipng in /usr/bin (/usr/local/bin doesn't work because of environment questions when ran under apache) :
# ln -s /usr/share/texmf/bin/latex /usr/bin # ln -s /usr/share/texmf/bin/dvips /usr/bin # ln -s /usr/share/texmf/bin/dvipng /usr/bin
Latex needs math and tmp directories :
# cd ../../../images # mkdir math # mkdir tmp # chown apache:apache *
Last modify your LocalSettings.php file adding the lines below at the end of the file. Lines $wgShowDebug = true; $wgDebugComments = true; $wgEnableParserCache = false; $wgCachePages = false; will make troubleshooting easier. When testing, also use Firefox's « Tools » « Clear recent history... » « Cache » to reinitialize the cache before page reloads. Otherwise you can never be totally sure if your last change had no effect or was just not taken into account due to the cache.
################################################################################# # math changes ################################################################################# require_once("$IP/extensions/Math/Math.php"); $wgTexvc = '/usr/bin/texvc'; # $wgUseTeX = true; # $wgShowDebug = true; # $wgDebugComments = true; # $wgEnableParserCache = false; # $wgCachePages = false;
From this point, mathematical expressions such as <math>\sqrt{1-e^2}</math> will be correctly displayed in mediawiki. Not working ? su apache then try execuring commands such as texvc /home/wiki/tmp /home/wiki/math "y=x+2" to observe behaviour interactively.
Also check page http://www.mediawiki.org/wiki/Manual:Troubleshooting_math_display_errors.
Wiki Maintenance
Maintenance scripts are included in the maintenance subdirectory. To work, the maintenance scripts require a copy of the LocalSettings.php file in the parent directory. If the maintenance subdirectory is a link as described in the "Multiple instances" paragraph above, then the LocalSettings.php file must be copied or linked under the /usr/local/mediawiki-x.y.z first.
# cd /var/www/htdocs/wiki # ln -s LocalSettings.php /usr/local/mediawiki-x.y.z # cd maintenance # php deleteOldRevisions.php --help # rm /usr/local/mediawiki-x.y.z/LocalSettings.php
Here are a few useful scripts. Be sure to check /usr/local/mediawiki-x.y.z/maintenance directory and README file to find more maintenance scripts.
Script | Usage |
---|---|
changePassword.php | Reset the password of a specified user |
deleteOldRevisions.php | Erase old revisions of pages from the database |
edit.php | Edit a page to change its content |
importImages.php | Import images into the wiki |
importTextFile.php | Import the contents of a text file into a wiki page |
moveBatch.php | Move a batch of pages |
nukePage.php | Wipe a page and all revisions from the database |
undelete.php | Undelete all revisions of a page |
PhpMyAdmin | Main Page | RoundCube |