Katlas installation notes: Difference between revisions
m (Reverted edits by LapasOrsit (Talk); changed back to last version by Drorbn)  | 
				|||
| (109 intermediate revisions by 12 users not shown) | |||
| Line 1: | Line 1: | ||
On July 14, 2007 we've upgraded MediaWiki to version 1.10.1. The pre-upgrade installation notes are at [[MediaWiki 1.4 installation notes]].  | 
|||
Okay... these are our notes while trying to setup [http://katlas.math.toronto.edu/wiki/ the wiki on katlas].  | 
  |||
==  | 
  ===Fixing search===  | 
||
In file <tt>/www/html/w/skins/MonoBook.php</tt> change <tt><form ... id="searchform"></tt> to <tt><form method=post ... id="searchform"></tt>.  | 
|||
For better or worse, I decided to upgrade MySQL to version 4.0 before doing anything else. I mostly followed [http://dev.mysql.com/doc/mysql/en/linux-rpm.html these instructions].  | 
  |||
===Rendering PNG===  | 
|||
''Warning: do not install MySQL 4.1. It is incompatible with mediawiki. Install version 4.0.''  | 
  |||
Follow the instructions at http://mywiki.ncsa.uiuc.edu/wiki/MediaWiki_Servers#Problems_Rendering_PNG_Images:  | 
|||
*Add to LocalSettings.php  | 
|||
For this I need three RPMs which are all available with only a little digging at [http://www.mysql.com/ mysql.com]  | 
  |||
<pre>  | 
|||
* MySQL-shared-compat-4.0.25-0.i386.rpm   | 
  |||
$wgMimeDetectorCommand = "file -bi";   | 
|||
* MySQL-server-4.0.25-0.i386.rpm  | 
  |||
</pre>  | 
|||
* MySQL-client-4.0.25-0.i386.rpm  | 
  |||
*then rebuild images  | 
|||
<pre>  | 
|||
The first of these is required so we don't break dependencies while upgrading. Install it first, with  | 
  |||
# cd /www/html/w/maintenance  | 
|||
:rpm -iv MySQL-shared-compat-4.0.25-0.i386.rpm  | 
  |||
# php rebuildImages.php   | 
|||
Then upgrade the other two packages  | 
  |||
Processing image...  | 
|||
:rpm -U MySQL-server-4.0.25-0.i386.rpm  | 
  |||
Finished image... 3 of 4 rows updated  | 
|||
:rpm -U MySQL-client-4.0.25-0.i386.rpm  | 
  |||
Processing oldimage...  | 
|||
Finished oldimage... 2 of 2 rows updated  | 
|||
#  | 
|||
</pre>  | 
|||
===Creating nice thumbnails with ImageMagick===  | 
|||
Note the warning the server install gives --   | 
  |||
Unfortunately, they've broken things in mediawiki 1.10, and creating thumbnails of transparent gifs is horrible. If you make the following changes to /includes/media/Bitmap.php, things should behave just like in mediawiki 1.4 (i.e. perfectly, for our purposes).  | 
|||
<pre>  | 
  <pre>  | 
||
                        // replacing this all with something much simpler from around mediawiki 1.4  | 
|||
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !  | 
  |||
                        # $cmd  =  wfEscapeShellArg($wgImageMagickConvertCommand) .  | 
|||
To do so, start the server, then issue the following commands:  | 
  |||
                        #       " {$quality} -background white -size {$physicalWidth} ".  | 
|||
/usr/bin/mysqladmin -u root password 'new-password'  | 
  |||
                        #       wfEscapeShellArg($srcPath) .  | 
|||
/usr/bin/mysqladmin -u root -h katlas.math.toronto.edu password 'new-password'  | 
  |||
                        #       // Coalesce is needed to scale animated GIFs properly (bug 1017).  | 
|||
See the manual for more instructions.  | 
  |||
                        #       ' -coalesce ' .  | 
|||
                        #       // For the -resize option a "!" is needed to force exact size,  | 
|||
                        #       // or ImageMagick may decide your ratio is wrong and slice off  | 
|||
                        #       // a pixel.  | 
|||
                        #       " -thumbnail " . wfEscapeShellArg( "{$physicalWidth}x{$physicalHeight}!" ) .  | 
|||
                        #       " -depth 8 $sharpen " .  | 
|||
                        #       wfEscapeShellArg($dstPath) . " 2>&1";  | 
|||
                        // here's what we used to do, back in mediawiki 1.4, and it works great.  | 
|||
                        $cmd  =  wfEscapeShellArg($wgImageMagickConvertCommand) .  | 
|||
                                " {$quality} -background white -geometry {$physicalWidth} ".  | 
|||
                                wfEscapeShellArg($srcPath) . " " .  | 
|||
                                wfEscapeShellArg($dstPath) . " 2>&1";  | 
|||
</pre>  | 
  </pre>  | 
||
===Modifying the navigation box===  | 
|||
(note however that you need to upgrade the client package before mysqladmin is available to do this!)  | 
  |||
Edit [[MediaWiki:Sidebar]].  | 
|||
===Add "tour" sidebar box===  | 
|||
I also deleted the local anonymous account, and put a password on the remote anonymous account. (Ask [[User:Scott]] for these passwords.)  | 
  |||
In skins/MonoBook.php, right above the lines  | 
|||
 <?php  | 
|||
                 if( $this->data['language_urls'] ) { ?>  | 
|||
add lines as follows:<pre><nowiki>  | 
|||
        <div class="portlet" id="p-tour">  | 
|||
          <h5><a href="/wiki/Tour_of_the_Knot_Atlas">tour</a></h5>  | 
|||
          <div class="pBody">  | 
|||
            <ul>  | 
|||
            <li><a href="/wiki/5_2">5 2</a> (edit me!)  | 
|||
            <li><a href="/wiki/5_2_Quantum_Invariants">5 2 Quantum Invariants</a>  | 
|||
            <li><a href="/wiki/L10n85">L10n85</a>  | 
|||
            <li><a href="/wiki/The_Multivariable_Alexander_Polynomial">Multivariable Alexander</a>  | 
|||
            <li><a href="/wiki/Knot_Atlas:About">About</a>  | 
|||
            <li><a href="/wiki/Data:5_2/Bridge_Index">Data:5_2/Bridge_Index</a>  | 
|||
            <li><a href="/wiki/The_Mathematica_Package_KnotTheory%60">Knot Theory`</a>  | 
|||
            <li><a href="/wiki/How_to_Edit_this_Manual...">How to Edit Manual...</a>  | 
|||
            <li><a href="/wiki/Modifying_Knot_Pages">Modifying Knot Pages</a>  | 
|||
            <li><a href="/wiki/Special:Recentchanges">Recent changes</a>  | 
|||
            <li><a href="/wiki/To_Do">To Do</a> (history!)  | 
|||
            </ul>  | 
|||
          </div>  | 
|||
        </div>  | 
|||
</nowiki></pre>  | 
|||
==="Redraw Page" tab===  | 
|||
==Apache==  | 
  |||
I had to fix the server name, from katlas to katlas.math.toronto.edu in /etc/httpd/conf/httpd.conf  | 
  |||
Add to [[MediaWiki:Monobook.js]], following [http://en.wikipedia.org/wiki/Wikipedia:WikiProject_User_scripts/Scripts/Add_purge_to_tabs Wikipedia:WikiProject User scripts/Scripts/Add purge to tabs]:  | 
|||
I added  | 
  |||
 AllowOverride FileInfo  | 
  |||
 AllowOverride AuthConfig  | 
  |||
in the httpd.conf file, in the section for /var/www/html, so I could use .htaccess files to rewrite the wiki URLs nicely, and to disallow access to phpMyAdmin.  | 
  |||
 addOnloadHook(function () {  | 
|||
I added a [http://meta.wikimedia.org/wiki/Robots.txt robots.txt] file, to protect the wiki internals from spiders. --[[User:Scott|Scott]] 12:44, 19 Aug 2005 (EDT)  | 
  |||
     var hist; var url;  | 
|||
     if (!(hist = document.getElementById('ca-history') )) return;  | 
|||
     if (!(url = hist.getElementsByTagName('a')[0] )) return;  | 
|||
     if (!(url = url.href )) return;  | 
|||
     addPortletLink('p-cactions', url.replace(/([?&]action=)history([&#]|$)/, '$1purge$2'),  | 
|||
                    'redraw page', 'ca-purge', 'Purge server cache for this page', '0');  | 
|||
 });  | 
|||
===Spam filtering===  | 
|||
I moved the document root from /var/www/html to /www/html. (Actually, I moved everything in /var/www to /www) This required the following steps  | 
  |||
Follow the directions at http://www.mediawiki.org/wiki/Extension:SpamBlacklist  | 
|||
# in /var/www, as root <pre>cp -R --preserve * /www</pre>  | 
  |||
# in httpd.conf, replacing /var/www everywhere with /www  | 
  |||
# in LocalSettings.php replacing /var/www with /www in the $IP line  | 
  |||
# test everything seems to work!  | 
  |||
# in /var, as root, <pre>rm -Rf www</pre>  | 
  |||
--[[User:Scott|Scott]] 12:44, 19 Aug 2005 (EDT)  | 
  |||
===Tweaking the job queue===  | 
|||
This messed up webalizer, however, so I modified the appropriate line in /etc/webalizer.conf. I also added a section in http.conf to make /usage world-readable. --[[User:Scott|Scott]] 13:03, 19 Aug 2005 (EDT)  | 
  |||
Running jobs seems to slow everything down horribly. It's '''essential''' that you add  | 
|||
<pre>  | 
|||
$wgJobRunRate = 0.01;  | 
|||
</pre>  | 
|||
to <code>LocalSettings.php</code>. It may prove necessary to add a cron job running <code>/w/maintenance/runJobs.php</code>, if the length of the job queue (see [[Special:Statistics]]) gets out of hand. This should only happen after edits to widely used templates.  | 
|||
In an attempt to stop the job queue from processing latex, Scott added a line to <code>includes/JobQueue.php</code>.  | 
|||
Restarting apache is best achieved by (as root)  | 
  |||
<pre>  | 
|||
<pre>/usr/sbin/apachectl graceful</pre>  | 
  |||
$options = new ParserOptions;  | 
|||
or  | 
  |||
// turning off math rendering while processing jobs, because it's a terrible idea.  | 
|||
<pre>/etc/rc.d/init.d/httpd restart</pre>--[[User:Scott|Scott]] 13:17, 19 Aug 2005 (EDT)  | 
  |||
$options->setUseTeX( false );  | 
|||
</pre>  | 
|||
===Installing ParserFunctions===  | 
|||
Error logs can be found at /var/log/httpd --[[User:Scott|Scott]] 10:33, 26 Aug 2005 (EDT)  | 
  |||
In order to use template-like parser functions, such as <code>{{#ifexist:<pagename>|<true>|<false>}}</code>, we need to enable the ParserFunctions extension, following the instructions at http://meta.wikimedia.org/wiki/ParserFunctions.  | 
|||
Download the files  | 
|||
We had a nasty (to diagnose!) problem with uploading large files. We had to edit /etc/httpd/conf.d/php.conf, modifying the LimitRequestBody line. --[[User:Scott|Scott]] 11:08, 23 Aug 2005 (EDT)  | 
  |||
* [http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ParserFunctions/Expr.php Expr.php]  | 
|||
* [http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ParserFunctions/ParserFunctions.php ParserFunctions.php]  | 
|||
==phpMyAdmin==  | 
  |||
* [http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ParserFunctions/ParserFunctions.i18n.php ParserFunctions.i18n.php]  | 
|||
Just unzip'd it into phpMyAdmin, editted the config.inc.php, created a .htpassword file and added a <nowiki><Directory></nowiki> entry to httpd.conf --[[User:Scott|Scott]] 10:34, 26 Aug 2005 (EDT)  | 
  |||
and then add a line to LocalSettings.php:  | 
|||
==MediaWiki==  | 
  |||
I added the namespace "Data", as per [http://meta.wikimedia.org/wiki/Help:Custom_namespaces these instructions], adding  | 
  |||
<pre>  | 
  <pre>  | 
||
require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" );  | 
|||
$wgExtraNamespaces =  | 
  |||
       array(100 => "Data",  | 
  |||
             101 => "Data talk");  | 
  |||
$wgNamespacesWithSubpages =  | 
  |||
       array( -1 => 0, 0 => 0, 1 => 1, 2 => 1, 3 => 1,  | 
  |||
              4 => 0, 5 => 1, 6 => 0, 7 => 1,  | 
  |||
              8 => 0, 9 => 1, 10 => 0,11 => 1,  | 
  |||
              100 => 1, 101 => 1 );  | 
  |||
</pre>  | 
  </pre>  | 
||
to LocalSettings.php. (For some reason, the namespace "Knot Data" didn't seem to work?)  | 
  |||
===Installing a PHP cache===  | 
|||
===Enable <nowiki><math></math></nowiki> processing===  | 
  |||
Look at http://meta.wikimedia.org/wiki/PHP_caching_and_optimization.  | 
|||
First, I made the /images directory writable.  | 
  |||
# Install PEAR, by saving http://go-pear.org/ as <code>/home/wiki/pear/go-pear.php</code>, then running <code>php go-pear.php</code> and following the prompts  | 
|||
Next, I installed ocaml (download the sources, ./configure, make world, make bootstrap, make opt, make install). What a pain! After that, go to the math directory under the wiki installation, and run make.  | 
  |||
# Install APC, by running <code>/home/wiki/pear/bin/pecl install apc</code>  | 
|||
# Add <code>extension=apc.so</code> to <code>/etc/php.ini</code>  | 
|||
You can see APC's statistics at http://katlas.org/apc.php  | 
|||
Finally, edit LocalSettings.php to enable TeX.  | 
  |||
Add  | 
|||
Later, we started modifying texvc, to allow more symbols from amssymb, and to allow use of Dror's [http://www.math.toronto.edu/~drorbn/projects/dbnsymb/dbnsymbman.html dbnsymb]. This required modifications to [[Texutil.ml]], and recompiling texvc (just run make). --[[User:Scott|Scott]] 15:10, 29 Aug 2005 (EDT)  | 
  |||
====Installing the Font dbnsymb====  | 
  |||
# Download the files dbnsymb.mf and dbnsymb.sty from [http://www.math.toronto.edu/~drorbn/projects/dbnsymb/dbnsymbman.html].  | 
  |||
# Put dbnsymb.mf at "/usr/share/texmf/fonts/source/public".  | 
  |||
# Put dbnsymb.sty at "/usr/share/texmf/tex/latex/misc".  | 
  |||
# Run the command "texhhash".  | 
  |||
===Allowing .zip and .gif uploads===  | 
  |||
In LocalSettings.php I added the line  | 
  |||
<pre>  | 
  <pre>  | 
||
# See http://www.mediawiki.org/wiki/Manual:%24wgMainCacheType  | 
|||
$wgFileExtensions = array( 'png','gif','jpg','jpeg','ogg','mp3','pdf','zip');  | 
  |||
$wgMainCacheType = CACHE_ACCEL;  | 
|||
</pre>  | 
  </pre>  | 
||
to <code>LocalSettings.php</code>.  | 
|||
===  | 
  ===Installing memcached===  | 
||
In my continuing quest for faster page loads, I'm trying memcached. Follow the nice instructions at http://blog.ajohnstone.com/archives/installing-memcached/.  | 
|||
See [http://meta.wikimedia.org/wiki/Setting_user_rights_in_MediaWiki]. Note that all our tables have the prefix mw_. As far as I can tell, you have to guess the user number (or you can log in as that user, and go to Preferences).  | 
  |||
Although it's not installed, it's not running, or being used. See http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/docs/memcached.txt?view=markup for instructions for actually running it. You'll probably need to uncomment some lines in LocalSettings.php too.  | 
|||
===  | 
  ===Updating CSS and JS===  | 
||
* Write [http://en.wikipedia.org/wiki/MediaWiki:Common.css MediaWiki:Common.css] on top of the local [[MediaWiki:Common.css]].  | 
|||
Follow the instructions at [http://meta.wikimedia.org/wiki/MediaWiki_FAQ#How_to_customize_your_own_navigation_bar]  | 
  |||
* Write [http://en.wikipedia.org/wiki/MediaWiki:Monobook.css MediaWiki:Monobook.css] on top of the local [[MediaWiki:Monobook.css]].  | 
|||
# Make changes to LocalSettings.php  | 
  |||
* Write [http://en.wikipedia.org/wiki/MediaWiki:Common.js MediaWiki:Common.js] on top of the local [[MediaWiki:Common.js]] being super-careful not to step on any of our extensions.  | 
|||
# edit the pages Mediawiki:todo, Mediawiki:todo-url, Mediawiki:rolfsen, Mediawiki:rolfsen-url, etc. (these pages are protected.)  | 
  |||
===Increasing PHP's memory_limit===  | 
|||
Note that this will change in mediawiki 1.5, and become a lot easier.  | 
  |||
In LocalSettings.php, change  | 
|||
 ini_set( 'memory_limit', '20M' );  | 
|||
to  | 
|||
 ini_set( 'memory_limit', '40M' );  | 
|||
===  | 
  ===Fixing "Random Page"===  | 
||
Grab [[Image:The_Knot_Atlas.png|36px]], resize it to 145x145, save it as /www/html/w/skins/common/images/katlas.png, and put the line  | 
  |||
 $wgLogo             = "$wgStylePath/common/images/katlas.png";  | 
  |||
in LocalSettings.php.  | 
  |||
The standard MediaWiki [[Special:Random|random page]] algorithm is strange, and anyway unsuitable for our purposes. See [[Fixing "Random Page"]] for the details and for our fix.  | 
|||
===Hacking mediawiki===  | 
  |||
I modified [[ImagePage.php]] so redirects on image pages don't produce a spurious copy of the image.  | 
  |||
===Fixing search===  | 
  |||
In file <tt>/www/html/w/skins/MonoBook.php</tt> within <tt><form name="searchform" ... ></tt> add <tt>method="post"</tt>.  | 
  |||
Latest revision as of 17:10, 8 January 2009
On July 14, 2007 we've upgraded MediaWiki to version 1.10.1. The pre-upgrade installation notes are at MediaWiki 1.4 installation notes.
Fixing search
In file /www/html/w/skins/MonoBook.php change <form ... id="searchform"> to <form method=post ... id="searchform">.
Rendering PNG
Follow the instructions at http://mywiki.ncsa.uiuc.edu/wiki/MediaWiki_Servers#Problems_Rendering_PNG_Images:
- Add to LocalSettings.php
 
$wgMimeDetectorCommand = "file -bi";
- then rebuild images
 
# cd /www/html/w/maintenance # php rebuildImages.php Processing image... Finished image... 3 of 4 rows updated Processing oldimage... Finished oldimage... 2 of 2 rows updated #
Creating nice thumbnails with ImageMagick
Unfortunately, they've broken things in mediawiki 1.10, and creating thumbnails of transparent gifs is horrible. If you make the following changes to /includes/media/Bitmap.php, things should behave just like in mediawiki 1.4 (i.e. perfectly, for our purposes).
                        // replacing this all with something much simpler from around mediawiki 1.4
                        # $cmd  =  wfEscapeShellArg($wgImageMagickConvertCommand) .
                        #       " {$quality} -background white -size {$physicalWidth} ".
                        #       wfEscapeShellArg($srcPath) .
                        #       // Coalesce is needed to scale animated GIFs properly (bug 1017).
                        #       ' -coalesce ' .
                        #       // For the -resize option a "!" is needed to force exact size,
                        #       // or ImageMagick may decide your ratio is wrong and slice off
                        #       // a pixel.
                        #       " -thumbnail " . wfEscapeShellArg( "{$physicalWidth}x{$physicalHeight}!" ) .
                        #       " -depth 8 $sharpen " .
                        #       wfEscapeShellArg($dstPath) . " 2>&1";
                        // here's what we used to do, back in mediawiki 1.4, and it works great.
                        $cmd  =  wfEscapeShellArg($wgImageMagickConvertCommand) .
                                " {$quality} -background white -geometry {$physicalWidth} ".
                                wfEscapeShellArg($srcPath) . " " .
                                wfEscapeShellArg($dstPath) . " 2>&1";
Edit MediaWiki:Sidebar.
Add "tour" sidebar box
In skins/MonoBook.php, right above the lines
<?php
                if( $this->data['language_urls'] ) { ?>
add lines as follows:
        <div class="portlet" id="p-tour">
          <h5><a href="/wiki/Tour_of_the_Knot_Atlas">tour</a></h5>
          <div class="pBody">
            <ul>
            <li><a href="/wiki/5_2">5 2</a> (edit me!)
            <li><a href="/wiki/5_2_Quantum_Invariants">5 2 Quantum Invariants</a>
            <li><a href="/wiki/L10n85">L10n85</a>
            <li><a href="/wiki/The_Multivariable_Alexander_Polynomial">Multivariable Alexander</a>
            <li><a href="/wiki/Knot_Atlas:About">About</a>
            <li><a href="/wiki/Data:5_2/Bridge_Index">Data:5_2/Bridge_Index</a>
            <li><a href="/wiki/The_Mathematica_Package_KnotTheory%60">Knot Theory`</a>
            <li><a href="/wiki/How_to_Edit_this_Manual...">How to Edit Manual...</a>
            <li><a href="/wiki/Modifying_Knot_Pages">Modifying Knot Pages</a>
            <li><a href="/wiki/Special:Recentchanges">Recent changes</a>
            <li><a href="/wiki/To_Do">To Do</a> (history!)
            </ul>
          </div>
        </div>
"Redraw Page" tab
Add to MediaWiki:Monobook.js, following Wikipedia:WikiProject User scripts/Scripts/Add purge to tabs:
addOnloadHook(function () {
    var hist; var url;
    if (!(hist = document.getElementById('ca-history') )) return;
    if (!(url = hist.getElementsByTagName('a')[0] )) return;
    if (!(url = url.href )) return;
    addPortletLink('p-cactions', url.replace(/([?&]action=)history([&#]|$)/, '$1purge$2'),
                   'redraw page', 'ca-purge', 'Purge server cache for this page', '0');
});
Spam filtering
Follow the directions at http://www.mediawiki.org/wiki/Extension:SpamBlacklist
Tweaking the job queue
Running jobs seems to slow everything down horribly. It's essential that you add
$wgJobRunRate = 0.01;
to LocalSettings.php. It may prove necessary to add a cron job running /w/maintenance/runJobs.php, if the length of the job queue (see Special:Statistics) gets out of hand. This should only happen after edits to widely used templates.
In an attempt to stop the job queue from processing latex, Scott added a line to includes/JobQueue.php.
$options = new ParserOptions; // turning off math rendering while processing jobs, because it's a terrible idea. $options->setUseTeX( false );
Installing ParserFunctions
In order to use template-like parser functions, such as <false>, we need to enable the ParserFunctions extension, following the instructions at http://meta.wikimedia.org/wiki/ParserFunctions.
Download the files
and then add a line to LocalSettings.php:
require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" );
Installing a PHP cache
Look at http://meta.wikimedia.org/wiki/PHP_caching_and_optimization.
- Install PEAR, by saving http://go-pear.org/ as 
/home/wiki/pear/go-pear.php, then runningphp go-pear.phpand following the prompts - Install APC, by running 
/home/wiki/pear/bin/pecl install apc - Add 
extension=apc.soto/etc/php.ini 
You can see APC's statistics at http://katlas.org/apc.php
Add
# See http://www.mediawiki.org/wiki/Manual:%24wgMainCacheType $wgMainCacheType = CACHE_ACCEL;
to LocalSettings.php.
Installing memcached
In my continuing quest for faster page loads, I'm trying memcached. Follow the nice instructions at http://blog.ajohnstone.com/archives/installing-memcached/.
Although it's not installed, it's not running, or being used. See http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/docs/memcached.txt?view=markup for instructions for actually running it. You'll probably need to uncomment some lines in LocalSettings.php too.
Updating CSS and JS
- Write MediaWiki:Common.css on top of the local MediaWiki:Common.css.
 - Write MediaWiki:Monobook.css on top of the local MediaWiki:Monobook.css.
 - Write MediaWiki:Common.js on top of the local MediaWiki:Common.js being super-careful not to step on any of our extensions.
 
Increasing PHP's memory_limit
In LocalSettings.php, change
ini_set( 'memory_limit', '20M' );
to
ini_set( 'memory_limit', '40M' );
Fixing "Random Page"
The standard MediaWiki random page algorithm is strange, and anyway unsuitable for our purposes. See Fixing "Random Page" for the details and for our fix.