MediaWiki

From Server Knowledge Base
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Useful areas for customisation are: /wiki/Special:AllMessages and Built-in system messages. You can normally just click the link from the list to edit the text.

Asynchronous snippet

From here

cd extensions/googleAnalytics
cp googleAnalytics.php googleAnalytics.php.backup
vim googleAnalytics.php

Enter the below text into the file and replace the UA- value below with your own.

<?php
if ( !defined( 'MEDIAWIKI' ) ) {
        die( 'This file is a MediaWiki extension, it is not a valid entry point' );
}

$wgExtensionCredits['other'][] = array(
        'path'           => __FILE__,
        'name'           => 'Google Analytics Integration',
        'version'        => '2.0.2',
        'author'         => 'Tim Laqua',
        'descriptionmsg' => 'googleanalytics-desc',
        'url'            => 'http://www.mediawiki.org/wiki/Extension:Google_Analytics_Integration',
);

$wgExtensionMessagesFiles['googleAnalytics'] = dirname(__FILE__) . '/googleAnalytics.i18n.php';

$wgHooks['BeforePageDisplay'][]  = 'efGoogleAnalyticsHookText';
$wgHooks['ParserAfterTidy'][] = 'efGoogleAnalyticsASAC';

# registered account
$wgGoogleAnalyticsAccount = "UA-XXXXX-X";

# to be used in case we had AdSense as well and have linked accounts, to enable tracking set this to true
$wgGoogleAnalyticsAddASAC = false;
$wgGoogleAnalyticsIgnoreSysops = true;
$wgGoogleAnalyticsIgnoreBots = true;

function efGoogleAnalyticsASAC( &$parser, &$text ) {
        global $wgOut, $wgGoogleAnalyticsAccount, $wgGoogleAnalyticsAddASAC;

        if( !empty($wgGoogleAnalyticsAccount) && $wgGoogleAnalyticsAddASAC ) {
                $wgOut->addScript('<script type="text/javascript">window.google_analytics_uacct = "' . $wgGoogleAnalyticsAccount . '";</script>');
        }

        return true;
}

function efGoogleAnalyticsHookText( $out ) {
        $out->addScript( efAddGoogleAnalytics() );
        return true;
}

function efAddGoogleAnalytics() {
        global $wgGoogleAnalyticsAccount, $wgGoogleAnalyticsIgnoreSysops, $wgGoogleAnalyticsIgnoreBots, $wgUser;
        if (!$wgUser->isAllowed('bot') || !$wgGoogleAnalyticsIgnoreBots) {
                if (!$wgUser->isAllowed('protect') || !$wgGoogleAnalyticsIgnoreSysops) {
                        if ( !empty($wgGoogleAnalyticsAccount) ) {
                                $funcOutput = <<<GASCRIPT
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '$wgGoogleAnalyticsAccount']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
GASCRIPT;
                        } else {
                                $funcOutput = "\n<!-- Set \$wgGoogleAnalyticsAccount to your account # provided by Google Analytics. -->";
                        }
                } else {
                        $funcOutput = "\n<!-- Google Analytics tracking is disabled for users with 'protect' rights (I.E. sysops) -->";
                }
        } else {
                $funcOutput = "\n<!-- Google Analytics tracking is disabled for bots -->";
        }

        return $funcOutput;
}

///Alias for efAddGoogleAnalytics - backwards compatibility.
function addGoogleAnalytics() { return efAddGoogleAnalytics(); }

Installation

On Unix Debian based (so Ubuntu as well), do the following:

mkdir /var/www/sites/domain.co.uk
cd /var/www/sites/domain.co.uk
wget http://download.wikimedia.org/mediawiki/1.20/mediawiki-1.20.2.tar.gz
tar xvzf mediawiki-*.tar.gz
cd mediawiki-1.20.2
mv mediawiki-1.20.2/* .
mv .gitreview .jshintignore .jshintrc ..
apt-get install mysql-server build-essential
apt-get install php5-mysql php-pear php5-dev php5-gd php5-imagick php5-intl libcurl3-openssl-dev libicu-dev gobjc++
pecl install intl
apt-get install memcached libmemcached-dev php-auth php-mail php-mail-mime
pecl install Memcache
pear install net_smtp
vim /etc/php5/apache2/php.ini # you need Apache installed first)
# as well as
vim /etc/php5/cli/php.ini
/Dynamic

Add in the following lines:

extension=intl.so
extension=memcache.so
memcache.hash_strategy="consistent"

Choose a caching software between APC and xcache. If you want APC, use this. If you want xcache, do:

apt-get install php5-xcache
memcached -u root -d -m 2048 -l 10.0.0.40 -p 11211
/etc/init.d/apache2 restart
cd /var/www/sites
chown root:root domain.co.uk/ -R
cd /var/www/sites/domain.co.uk
chmod 700 LocalSettings.php
apt-get install qmail

It will state:

qmail will refuse to accept SMTP messages except to `hostname`.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!

Then check this: http://www.mediawiki.org/wiki/Manual:Config_script

And go to domain.co.uk/index.php and run through the configuration. Then download the LocalSettings.php file.

http://www.mediawiki.org/wiki/Manual:Securing_database_passwords

Account confirmation

http://www.mediawiki.org/wiki/Extension:ConfirmAccount

Upload the .tar.gz to /var/www/sites/domain.co.uk/extensions

tar -xzf ConfirmAccount.tar.gz
vim LocalSettings.php
require_once("$IP/extensions/ConfirmAccount/ConfirmAccount.php");

Exit the file and run php maintenance/update.php

To turn off "Your biography must be at least 50 words long.", as this does not use $wgAccountRequestMinWords any more:

vim /var/www/sites/domain.co.uk/extensions/ConfirmAccount/ConfirmAccount.config.php

Edit:

'Biography'       => array( 'enabled' => true, 'minWords' => 50 ),

If you get the below error when approving an account:

Could not create directory "mwstore://accountcreds-backend/accountcreds-public/1/12/123".
chown www-data:www-data images/ -R
chmod 755 images/ -R

Also check your "$wgFileExtensions = {'gif', 'png');" entry

You may need to create an array, something like this:

$wgFileExtensions = array('gif','png');

Capitalise headers and tab titles

vim domain.co.uk/skins/monobook/main.css

.portlet h5 {
        background: transparent;
        padding: 0 1em 0 .5em;
        display: inline;
        height: 1em;
/*      text-transform: lowercase; /* force text to lowercase */
/*      text-transform: uppercase; /* force text to uppercase */
        text-transform: capitalize; /* force text to proper case */
        font-size: 91%;
        font-weight: normal;
        white-space: nowrap;
}
.portlet h6 {
        background: #ffae2e;
        border: 1px solid #2f6fab;
        border-style: solid solid none solid;
        padding: 0 1em 0 1em;
/*      text-transform: lowercase; /* force text to lowercase */
/*      text-transform: uppercase; /* force text to uppercase */
        text-transform: capitalize; /* force text to proper case */
        display: block;

<pre>#p-personal ul {
        text-transform: capitalize;
#p-cactions li a {
/*      text-transform: lowercase; */
        text-transform: capitalize; /* force text to proper case */
}

Edit the Sidebar

Go to http://domain.co.uk/wiki/MediaWiki:Sidebar

Recaptcha installation

First go here and obtain a public and private key for your wiki.

Add the following to LocalSettings.php, below the inclusion of ConfirmEdit:

require_once("$IP/extensions/ConfirmEdit/ReCaptcha.php"); 
$wgCaptchaClass = 'ReCaptcha';
$wgReCaptchaPublicKey = 'your public key here';
$wgReCaptchaPrivateKey = 'your private key here';

Short URL configuration

http://www.mediawiki.org/wiki/Manual:Short_URL

vim LocalSettings.php
$wgScriptPath       = "";
$wgArticlePath      = '/wiki/$1';
$wgUsePathInfo      = true;
$wgScriptExtension  = ".php";
a2enmod rewrite
/etc/init.d/apache2 restart
vim /etc/apache2/sites-available/domain.co.uk
    RewriteEngine On
    RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/index.php [L]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
    RewriteRule ^/?images/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ %{DOCUMENT_ROOT}/thumb.php?f=$1&width=$2 [L,QSA,B]

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
    RewriteRule ^/?images/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ %{DOCUMENT_ROOT}/thumb.php?f=$1&width=$2&archived=1 [L,QSA,B]

Configure your Virtual Host extras here and add the config to the file above and LocalSettings.php: http://shorturls.redwerks.org

Old edited Special:AllMessages

"To protect the wiki against automated account creation, we kindly ask you to solve the simple sum below and enter the answer in the box (more info):"

with the following extract from /extensions/ConfirmEdit/ReCaptcha.i18n.php

"To help protect against automated page creation, please type the two words you see in the box below (more info):"

Migrating to a new server

On the original server, do this:

mysqldump --default-character-set=binary --user=root --password=EnterPasswordHere databasename > dbdump.txt
or
mysqldump --default-character-set=binary --user=root databasename > dbdump.txt -p

Then copy all your content and the dbdump.txt file across to the new server.

To delete a useless database, do this from within MySQL:

DROP DATABASE wikidb;

You will need to create an empty database first:

create database DatabaseName;

Then on the new server do:

mysql --silent --local --password=EnterPasswordHere DatabaseName < dbdump.txt
or
mysql --silent --local DatabaseName < dbdump.txt -p

Go into MySQL and create the MySQL user from the old server (specified in LocalSettings.php on the original server) by doing:

create user 'DatabaseUser'@'localhost' identified by 'password';
GRANT ALL PRIVILEGES ON DatabaseName.* TO 'DatabaseUser'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION ;

Edit your LocalSettings.php to ensure the following setting are correct:

$wgDBtype = "mysql";
$wgDBserver = "localhost";
$wgDBname = "DatabaseName";
$wgDBuser = "DatabaseUser";
$wgDBpassword = "DatabaseUserPassword*";

Sitemap

http://www.mediawiki.org/wiki/Extension:ManualSitemap

cp maintenance/generateSitemap.php maintenance/generateSitemap.php.bak
vim maintenance/generateSitemap.php

http://www.mediawiki.org/wiki/User:Superxain/GenerateSitemap (from here)