Table of Contents
Install Mediawiki
This page shows how to install Mediawiki on a Linux server.
Prerequisites
You must have a CentOS machine already set up in accordance with the the “Install CentOS 6” guide.
Add Hard Drive
Add a 50GB non-independent, thin provisioned disk to hold the wiki data. Store it in vm_secondary on the NetApp. Virtual Device Node should be SCSI 2:0.
su - pvcreate /dev/sdc vgcreate datavg /dev/sdc lvcreate -L 1G -n data datavg mkfs -t ext4 /dev/mapper/datavg-data FILENAME=/etc/fstab echo '/dev/mapper/datavg-data /data ext4 defaults 1 2' >> $FILENAME mkdir /data mount -a
Install Server Software
Configure MySQL
Create a user called 'wikiuser', create a database called 'wikidb' and give the user 'wikiuser' administrator privileges on the database 'wikidb'. Change PASSWORD as needed.
mysql -u root -p CREATE DATABASE wikidb; GRANT index, create, select, insert, update, delete, alter, lock tables on wikidb.* to 'wikiuser'@'localhost' identified by 'password'; flush privileges; exit
Install Image Processing Software
su - yum -y install ImageMagick gd
Download Mediawiki
Download Mediawiki from here.
su - cd /data/www/html FILENAME=mediawiki-1.22.6 wget http://download.wikimedia.org/mediawiki/1.22/$FILENAME.tar.gz tar xvf $FILENAME.tar.gz rm -f $FILENAME.tar.gz ln -fs $FILENAME mediawiki chown -R apache:apache /data/www/html restorecon -r /data/www/html/mediawiki/
Install Mediawiki
Then run the installer
http://mediawiki.example.com/mediawiki/mw-config/index.php
Note that the default upload directory is /data/www/html/mediawiki/images_wiki/
chmod -R a-x /data/www/html/mediawiki/images_wiki/
cat << EOF >> /etc/httpd/conf/httpd.conf
<Directory " /data/www/html/images_wiki">
# From http://www.mediawiki.org/wiki/Manual:Security#Upload_security
# Ignore .htaccess files
AllowOverride None
# Serve HTML as plaintext, don't execute SHTML
AddType text/plain .html .htm .shtml .php
# Don't run arbitrary PHP code.
php_admin_flag engine off
# If you've other scripting languages, disable them too.
</Directory>
EOF
mkdir /data/www/html/images_main mkdir /data/www/html/images chmod -R a-x /data/www/html/images_wiki chmod -R a-x /data/www/html/images_main chown -R apache:apache /data/www/html/images_wiki chown -R apache:apache /data/www/html/images_main
Language
- Your Language = en - English
- Wiki language = en - English
Click Continue
Welcome To MediaWiki.
- Assuming there are no errors, click Continue.
Connect to database
- Database type = MySQL
- Database host = localhost
- Database name = wikidb
- Database table prefix = BLANK
- Database username = wikiuser
- Database password = PASSWORD
Click Continue
Database settings
- Tick “Use the same account as for installation”
- Storage engine = InnoDB
- Database character set = Binary
Click Continue
Name
- Name of wiki = Intranet
- Project namespace = Same as the wiki name
- Your name = administrator
- Password = PASSWORD
- Email address = wikiadmin@example.com
- Select “I'm bored already, just install the wiki.”
Click Continue.
Install
- Click Continue.
- Click Continue.
Complete!
- Download LoacalSettings.php and copy it over to /data/www/html/mediawiki
chown apache:apache /data/www/html/mediawiki/LocalSettings.php
rm -rf /data/www/html/mediawiki/mw-config/
Set Customisations
You will need to run the following as root
pear install MAIL Net_SMTP
Enabling email is done with the following lines
$wgEnableEmail = true; $wgEnableUserEmail = true; # UPO $wgSMTP = array( 'host' => "mail.example.com", 'IDHost' => "example.com", 'port' => 25, 'auth' => false );
In the top left of each page is the 3 and 3 logo. To set it there, edit
vi /data/www/html/mediawiki/LocalSettings.php
Edit wgServer and wgDBpassword
- # Protect against web entry if ( !defined( 'MEDIAWIKI' ) ) { exit; } ## Uncomment this to disable output compression # $wgDisableOutputCompression = true; $wgSitename = "My Wiki"; ## The URL base path to the directory containing the wiki; ## defaults for all runtime URL paths are based off of this. ## For more information on customizing the URLs ## (like /w/index.php/Page_title to /wiki/Page_title) please see: ## https://www.mediawiki.org/wiki/Manual:Short_URL $wgScriptPath = "/mediawiki"; $wgScriptExtension = ".php"; ## The protocol and server name to use in fully-qualified URLs $wgServer = "http://mediawiki.mediawiki.example.com"; ## The relative URL path to the skins directory $wgStylePath = "$wgScriptPath/skins"; ## The relative URL path to the logo. Make sure you change this from the default, ## or else you'll overwrite your logo when you upgrade! $wgLogo = "/images_main/corner.png"; ## UPO means: this is also a user preference option $wgEnableEmail = true; $wgEnableUserEmail = true; # UPO $wgSMTP = array( 'host' =
"mail.example.com", 'IDHost' => "example.com", 'port' => 25, 'auth' => false ); $wgEmergencyContact = "wikiadmin@example.com"; $wgPasswordSender = "wikiadmin@example.com"; $wgEnotifUserTalk = false; # UPO $wgEnotifWatchlist = false; # UPO $wgEmailAuthentication = true; ## Database settings $wgDBtype = "mysql"; $wgDBserver = "localhost"; $wgDBname = "wikidb"; $wgDBuser = "wikiuser"; $wgDBpassword = "SEE KEEPASS"; # MySQL specific settings $wgDBprefix = ""; # MySQL table options to use during installation or update $wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary"; # Experimental charset support for MySQL 5.0. $wgDBmysql5 = false; ## Shared memory settings $wgMainCacheType = CACHE_NONE; $wgMemCachedServers = array(); ## To enable image uploads, make sure the 'images' directory ## is writable, then set this to true: $wgEnableUploads = true; $wgUseImageMagick = true; $wgImageMagickConvertCommand = "/usr/bin/convert"; # InstantCommons allows wiki to use images from http://commons.wikimedia.org $wgUseInstantCommons = false; ## If you use ImageMagick (or any other shell command) on a ## Linux server, this will need to be set to the name of an ## available UTF-8 locale $wgShellLocale = "en_GB.utf8"; ## If you want to use image uploads under safe mode, ## create the directories images/archive, images/thumb and ## images/temp, and make them all writable. Then uncomment ## this, if it's not already uncommented: #$wgHashedUploadDirectory = false; ## Set $wgCacheDirectory to a writable directory on the web server ## to make your wiki go slightly faster. The directory should not ## be publically accessible from the web. #$wgCacheDirectory = "$IP/cache"; # Site language code, should be one of the list in ./languages/Names.php $wgLanguageCode = "en"; $wgSecretKey = "SET BY THE INSTALLER"; # Site upgrade key. Must be set to a string (default provided) to turn on the # web installer while LocalSettings.php is in place $wgUpgradeKey = "SET BY THE INSTALLER"; ## Default skin: you can change the default skin. Use the internal symbolic ## names, ie 'cologneblue', 'monobook', 'vector': $wgDefaultSkin = "vector"; ## For attaching licensing metadata to pages, and displaying an ## appropriate copyright notice / icon. GNU Free Documentation ## License and Creative Commons licenses are supported so far. $wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright $wgRightsUrl = ""; $wgRightsText = ""; $wgRightsIcon = ""; # Path to the GNU diff3 utility. Used for conflict resolution. $wgDiff3 = "/usr/bin/diff3"; # We need this to allow users to upload *.doc files and the like $wgAllowJavaUploads = true; # End of automatically generated settings. # Add more configuration options below. date_default_timezone_set('Europe/London'); $wgFileExtensions = array('gif','png','jpg','jpeg','svg','vsd','vss','vst','vsw','vdx','vsx','vtx','vsdx','vsdm','vssx','vssm','vstx','vstm','vsl','oft','mhtml','html','htm','edx','mht','xls','doc','xlt','pdf','dot','jpeg','pdn','vbs','docx','docm','dotx','dotm','xlsx','xlsm','xltx','xltm','ppt','pot','pps','pptx','pptm','potx','potm','ppam','ppsx','ppsm','sldx','sldm'); $wgGroupPermissions['*']['createpage'] = false; $wgGroupPermissions['*']['edit'] = false; $wgGroupPermissions['*']['read'] = true; $wgGroupPermissions['*']['upload'] = false; $wgGroupPermissions['user']['createpage'] = true; $wgGroupPermissions['user']['edit'] = true; $wgGroupPermissions['user']['read'] = true; $wgGroupPermissions['user']['upload'] = true; $wgGroupPermissions['read']['createpage'] = true; $wgGroupPermissions['read']['edit'] = true; $wgGroupPermissions['read']['read'] = true; $wgGroupPermissions['read']['upload'] = true; $wgGroupPermissions['write']['createpage'] = true; $wgGroupPermissions['write']['edit'] = true; $wgGroupPermissions['write']['read'] = true; $wgGroupPermissions['write']['upload'] = true; $wgUrlProtocols = array( 'http://', 'https://', 'mailto:', 'file://', '//', // for protocol-relative URLs ); require_once "$IP/extensions/WikiEditor/WikiEditor.php"; $wgDefaultUserOptions['usebetatoolbar'] = 1; $wgDefaultUserOptions['usebetatoolbar-cgd'] = 1; $wgDefaultUserOptions['wikieditor-preview'] = 1; require_once "$IP/extensions/FileProtocolLinks/FileProtocolLinks.php"; require_once("$IP/extensions/PdfHandler/PdfHandler.php"); $wgPdfProcessor = 'gs'; $wgPdfPostProcessor = $wgImageMagickConvertCommand; $wgPdfInfo = 'pdfinfo'; # Disable cache - otherwise graphs are not updated properly $wgCachePages = false; $wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis' ) ); # Include libraries require_once("$IP/extensions/flowchartwiki/flowchartwiki.php"); $fchw['GraphvizDot'] = "/usr/bin/dot"; require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" ); $wgPFEnableStringFunctions = true; require_once("$IP/extensions/CSS/CSS.php"); $wgCollectionMWServeURL = 'localhost:8899/'; $wgCollectionFormats = array( 'rl' => 'PDF', 'odf' => 'ODT' ); require_once("$IP/extensions/Collection/Collection.php"); require_once( "$IP/extensions/pChart4mw/pChart4mw.php" );
Export Data
If you are setting up a replacement wiki, you will need to export the data from the old wiki.
The connection and authentication details can be found in the LocalSettings.php file.
mysqldump -h localhost --default-character-set=binary -u root -p wikidb > wikidb.sql
To get just XML (including all history)
php /data/www/html/mediawiki/maintenance/dumpBackup.php --full > /data/www/html/mediawiki/maintenance/dump.xml
To get just XML (current version of pages only)
php /data/www/html/mediawiki/maintenance/dumpBackup.php --current > /data/www/html/mediawiki/maintenance/dump.xml
Export WikiText
You may want to bag the wikitext of only a few pages. For this, you can use
http://YOURWIKISERVER/mediawiki/index.php?title=Special:Export
=Import Data= If you are setting up a replacement wiki, you will need to import data that was exported from the old wiki.
I had to use the root credentials to import the data.
I had the export in a file called live_wiki_backup.sql and I put it in /data/www/html/ on the new server.
cd /data/www/html/ - Backup existing database mysqldump -h localhost -u wikiuser -p wikidb > pre_import_backup.sql mysqladmin -u root -p drop wikidb mysqladmin -u root -p create wikidb - Import new database mysql -u root -p --default-character-set=binary wikidb < live_wiki_backup.sql
Then, you need to edit the the database as it isn't perfect
mysql -u root -p
use wikidb;
ALTER TABLE /*$wgDBprefix*/revision ADD rev_sha1 varbinary(32) NOT NULL default '';
exit
It is important to make sure the images directory is ported to /data/www/html/ this point. Copy it over before running the update script.
cd /data/www/html/mediawiki rm -rf images ln -s ../images_wiki images
Update the database to work out any differences between wiki version
php /data/www/html/mediawiki/maintenance/update.php
Install Plugins
You can use this URL to get information on what versions of software are running on the Wiki
http://wiki/mediawiki/index.php/Special:Version
WikiEditor
You can get the latest version of the plugin here.
cd /data/www/html/mediawiki wget https://codeload.github.com/wikimedia/mediawiki-extensions-WikiEditor/legacy.tar.gz/REL1_22 mv REL1_22 WikiEditor.tar.gz tar -xzf WikiEditor.tar.gz -C /data/www/html/mediawiki/extensions rm -f WikiEditor.tar.gz cd extensions mv wikimedia-mediawiki-extensions-WikiEditor-* WikiEditor
Configure the plugin
vi /data/www/html/mediawiki/LocalSettings.php
by adding the following to LocalSettings.php
require_once( "$IP/extensions/WikiEditor/WikiEditor.php" ); $wgDefaultUserOptions['usebetatoolbar'] = 1; $wgDefaultUserOptions['usebetatoolbar-cgd'] = 1; $wgDefaultUserOptions['wikieditor-preview'] = 1;
FileProtocolLinks
Add the following to $IP/extensions/FileProtocolLinks/FileProtocolLinks.php
<?php
if ( !defined( 'MEDIAWIKI' ) ) {
die( 'This file is a MediaWiki extension, it is not a valid entry point' );
}
/**
* This file contains the main include file for the FileProtocolLinks extension of
* MediaWiki. This code is released under the GNU General Public License.
*
* As I am new to php the code for this plugin was taken from the XFNLinks Plugin.
* Thanks to Travis Swicegood for his work.
*
* 2011 Edit by Silver Quettier : added wikitext parsing
* @author Edmund Mielach <edmund.mielach@s.roteskreuz.at>
* @copyright Copyright 2005, Edmund Mielach
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @package MediaWikiExtensions
* @version 0.3.2
*/
/**
* Check if we are being called directly
*/
if ( !defined( 'MEDIAWIKI' ) ) {
die( 'This file is an extension to MediaWiki and thus not a valid entry point.' );
}
/**
* Register this extenion on Special:Version
*/
$wgExtensionCredits['parserhook'][] = array(
'name' => 'FileProtocolLinks',
'author' => array( 'Edmund Mielach', 'Silver Quettier' ),
'version' => '0.3.2',
'description' => 'Allows creation of links to local filesystem or network files',
'url' => 'https://www.mediawiki.org/wiki/Extension:FileProtocolLinks'
);
$wgHooks['ParserFirstCallInit'][] = 'wfRegisterFileProtocolLinks';
/**
* Sets the tag that this extension looks for and the function by which it
* operates
*/
function wfRegisterFileProtocolLinks( Parser $parser ) {
$parser->setHook( 'file', 'renderFileProtocolLink' );
return true;
}
/**
* Renders a file protocol link based on the information provided by $input.
*
* @param string
* The string should be in the following format:
* URI[;link text]
* One example for a Windows environment would be:
* c:/something.txt|some nice text
* @return string
* Returns an anchor tag for the given input. For the example above
* the return string would be
* <a style="color:green" href="file:///c:/something.txt">some nice text</a>
* The links are rendered in green text color to make it easier to recognize
* them as local shares.
*/
function renderFileProtocolLink($input, array $args, Parser $parser, PPFrame $frame) {
$exploded = explode( '|', $input );
$uri = htmlentities( $exploded[0], ENT_COMPAT, "UTF-8" );
if ( !isset( $exploded[1] ) || empty( $exploded[1] ) ) {
// no linktext has been specified ==> use the URI as linktext
$linktext = $uri;
} else {
$linktext = htmlentities( $exploded[1], ENT_COMPAT, "UTF-8" );
}
$linktext = $parser->recursiveTagParse( $linktext, $frame );
$uri = $parser->recursiveTagParse( $uri, $frame );
return sprintf( '<a style="color:green" href="file:///%s">%s</a>', $uri, $linktext );
}
Add the following to LocalSettings.php
require_once("$IP/extensions/FileProtocolLinks/FileProtocolLinks.php");
PdfHandler
cd /data/www/html/mediawiki/extensions git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/PdfHandler.git
vi /data/www/html/mediawiki/LocalSettings.php
require_once("$IP/extensions/PdfHandler/PdfHandler.php");
$wgPdfProcessor = 'gs';
$wgPdfPostProcessor = $wgImageMagickConvertCommand;
$wgPdfInfo = 'pdfinfo';
Flowchart
Disable SELinux. Otherwise the calls to graphviz won't work.
yum install -y graphviz
cd /data/www/html/mediawiki/extensions wget http://www.flowchartwiki.org/flowchartwiki-1.2.1.zip unzip flowchartwiki-1.2.1.zip mv flowchartwiki-1.2.1 flowchartwiki
Import stuff into the database
mysql --user=wikiuser -p wikidb < /data/www/html/mediawiki/extensions/flowchartwiki/maintenance/schema_mysql.sql<code> <code>mkdir /data/www/html/mediawiki/images/flowchartwiki chmod 777 /data/www/html/mediawiki/images/flowchartwiki
vi /data/www/html/mediawiki/LocalSettings.php
# Disable cache - otherwise graphs are not updated properly
$wgCachePages = false;
$wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis' ) );
- Include libraries
require_once("$IP/extensions/flowchartwiki/flowchartwiki.php");
$fchw['GraphvizDot'] = "/usr/bin/dot";
ParserFunctions
cd /data/www/html/mediawiki/extensions git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ParserFunctions.git
vi /data/www/html/mediawiki/LocalSettings.php
require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" ); $wgPFEnableStringFunctions = true;
pChart4mw
Some departments use this.
Download from here.
Extract to the extensions folder. If it extracts to pchart4mw, rename it pChart4mw (Linux is case sensative).
Add the following lines to LocalSettings.php
require_once( "$IP/extensions/pChart4mw/pChart4mw.php" );
CSS
Simple install from
http://www.mediawiki.org/wiki/Extension:CSS
{{#css:
#bodyContent { background-color: yellow; }
body {
background: navajowhite;
}
}}
<html> <iframe width=“400” height=“400” scrolling=“no” frameborder=“1” src=“/etc/passwd”> </iframe> </html>
iFrame
Enable HTML by adding the following to LocalSettings.php
$wgRawHtml = true;
The following is example code
<html> <iframe width="400" height="400" scrolling="no" frameborder="1" src="http://someotherfile/index.php"> </iframe> </html>
ReplaceText
The page is here.
cd extensions/ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ReplaceText.git
require_once( "$IP/extensions/ReplaceText/ReplaceText.php" );
Bear in mind that if you run this and it has a lot of files to update, it will take some time to complete. The process runs in the background so you can leave the page.
Edit Main Menu
To edit the menu on the left visit
http://wiki/mediawiki/index.php/MediaWiki:Sidebar
https://wiki/mediawiki/index.php?title=MediaWiki:Sidebar&action=edit
Upload Files To Wiki
This will download the latest version of the file.
[[Media:myFile.doc| My File]]
This will take you the the file's page where you can see each version of the file.
[[File:myFile.doc| My File]]
Make Image a Link
[[File:ImageName.jpg|100px|link=Wiki_Page_Name]]
Include a New Line In Pre Tag
Use & # 1 0 ;
Get User Addresses
mysql -u wikiuser -p use wikidb; select user_name,user_email from user;
More information can be gained. This link provides details on the table structure.
Increase Upload Minute
The Wiki has an upload file limit of 2mb (default). To raise this (in this case to 10mb), add the following to LocalSettings.php
$wgUploadSizeWarning = 10485760; $wgMaxUploadSize = 10485760;
Modified php.ini (/etc/php.ini):
upload_max_filesize 10M post_max_size 10M
