Installing MediaWiki Guide

From Elvanör's Technical Wiki
Revision as of 10:22, 26 November 2007 by Elvanor (talk | contribs)
Jump to navigation Jump to search

MediaWiki, the Wiki engine powering this site, is fully open-source and free. It seems to be robust, and reasonably fast. Configuring and installing it, however, is not so easy. This guide is a tutorial for MediaWiki administrators.


Prerequisites

  • Apache
  • PHP
  • MySQL with InnoDB support! The tables created by MediaWiki will use the InnoDB engine. I don't think it is possible to use MyISAM tables.

Optional Software

  • APC. This is a PHP accelerator.
  • memcached. This a daemon caching SQL requests in memory. If you run two Wikis on the same machine, beware that it can cause serious problems. If there is a single memcached daemon running, and both Wikis use it, they will interfere and one Wiki will end up serving the contents of the other. A solution can be to run memcached on several machines, or maybe on the same machine but with different ports. However, this last option on Mac OS X seems to be tricky.
  • ImageMagick, in order to generate the images thumbnails. This can also be done via PHP if GD support is included; however ImageMagick is recommended since it produces better quality thumbnails. Don't forget to set $wgImageMagickConvertCommand to the correct location:
$wgImageMagickConvertCommand = "/usr/local/bin/convert";

Installation

  • Installation is easy, just download MediaWiki from Sourceforge and uncompress the tarball in a directory that Apache can serve. Then follow the instructions on the README to perform the initial configuration. It involves running a PHP script that will configure the Wiki for you.
  • Warning: the initial administrator account is named "WikiSysop", and is case sensitive. If you forget it, search it on the MySQL database directly.
  • It is also recommended to increase your PHP memory_limit variable in php.ini. Else sometimes MediaWiki will fail with a message such as:
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 80629 bytes) in /var/www/wikistuff/includes/Parser.php on line 206

I set this variable to 30 MB. Note that with PHP 5.2.4+ it should be set at least to 128MB.

Multiple installations

  • It is possible to serve multiple wikis (different databases and/or themes) from the same MediaWiki installation. Just create as many configuration files as you need (LocalSettings.php, which obviously needs to be renamed for each wiki), and then create a LocalSettings.php file with code discriminating based on the SERVER_NAME. Example:
<?php
	switch ($_SERVER["SERVER_NAME"])
	{
		case "wiki.shoopz.net":
			require_once "wiki_shoopz_net_settings.php";
			break;
	
		case "help.shoopz.com":
			require_once "help_shoopz_com_settings.php";
			break;
			
		default:
			echo "This wiki is not available. Check configuration.";
			exit(0);
	}
?>
  • In order to add a new wiki, temporarily move your custom LocalSettings.php file. The wiki then believes it is not installed yet. Then point a browser at the wiki and follow the normal installation procedure. Once the installation script created your DB and your configuration file, move it from config/LocalSettings.php to a new file and modify the switch in LocalSettings.php accordingly. Also don't forget to move back LocalSettings.php.


Configuration

  • Using an accelerator. I am not sure how it exactly works. This seems to be needed for using APC (at least as the "main" accelerator):
$wgMainCacheType = CACHE_ACCEL;
$wgMemCachedServers = array();

And this would setup support for a memcached server running on the local machine on port 11212:

$wgMainCacheType = CACHE_MEMCACHED;
$wgMemCachedServers = array (
 0 => '127.0.0.1:11212',
);
  • Obtaining nice URLs: A guide to remove "index.php" from the URL is available online. However I don't find it very clear. The important steps are:
    • Unpack the MediaWiki in a directory NOT named "wiki", for example "wikistuff" will do.
    • In LocalSettings.php, set $wgScriptPath = "/wikistuff"; and $wgArticlePath = "/wiki/$1";
    • Write an Alias rule for Apache: add the line
Alias /wiki /filesystem/path/to/wikistuff/index.php

in the Apache configuration file. Note: don't add the second line as mentionned in the guide!

  • Disabling automatic account creation and anonymous edits. Add the following lines to LocalSettings.php:
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createaccount'] = false;
  • Disabling anonymous reading. Add the following lines to LocalSettings.php:
# Pages anonymous (not-logged-in) users may see
$wgWhitelistRead = array( "Main Page", "Special:Userlogin", "-", "MediaWiki:Monobook.css" );

$wgGroupPermissions['*']['read'] = false;
  • Customizing logo (note that it should start with the name of the wiki directory, eg /wiki here):
$wgLogo = "/wiki/path/to/logo.png";
  • Allowing images uploads (set $wgUseImageMagick to false if you want to use GD instead of ImageMagick to create the thumbnails):
$wgEnableUploads = true;
$wgUseImageResize = true;
$wgUseImageMagick = true;
$wgImageMagickConvertCommand = "/usr/bin/convert";

Administration

  • Deleting/removing an user is not possible with MediaWiki. You can, however, change the password with the following SQL request:
UPDATE user SET user_password = MD5(CONCAT(user_id, '-', 
  MD5('somepass'))) WHERE user_name = 'someuser';

Usage

Customization with styles / CSS

  • Link to the official skins tutorial
  • There is a site wide CSS style page, accessible at MediaWiki:Common.css. There is also a corresponding page for each user. Note that this CSS page can be modified directly, this is very nice. Of course you could also edit directly the CSS files present in the software distribution of MediaWiki.