Skip to content
This repository has been archived by the owner on Jan 13, 2022. It is now read-only.

Update MediaWiki from 1.24.0 to 1.26.2 #57

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 1 addition & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,29 +177,14 @@ Magento
- Product with options
- Product reviews

Mediawiki
MediaWiki
---------

The main page is the Barack Obama page from Wikipedia; this is based on the
Wikimedia Foundation using it as a benchmark, and finding it fairly
representative of Wikipedia. A few other pages (HHVM, talk, edit) are also
loaded to provide a slightly more rounded workload.

- MySQL-based view counters have been disabled: they are incredibly inefficient,
unlikely to be used in any high-concurrency deployment (for example, Wikipedia
disables them), and will be removed in a future release of Mediawiki.
- Localisation caching has been switched from MySQL to file-based. MySQL-based
L10N caching 'just works', but it is also inefficient (1 query per localizable
string per page view), and unlikely to be used in high-concurrency deployments.
This setting is also used by Wikipedia.
- If `--apply-patches` is specified, the existing file cache is replaced with a
more efficient version that simply uses static PHP arrays. This has been
submitted to the upstream project at https://phabricator.wikimedia.org/T99740

Each of these modifications improves performance under all tested runtimes: PHP5,
PHP7, and HHVM. The concurrency issues with the MySQL-based view counters and
L10N caching are because of contention within MySQL server.

Profiling
=========

Expand Down
158 changes: 158 additions & 0 deletions targets/mediawiki/LocalSettings.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
<?php
# This file was automatically generated by the MediaWiki 1.24.0
# installer. If you make manual changes, please keep track in case you
# need to recreate them later.
#
# See includes/DefaultSettings.php for all configurable settings
# and their default values, but don't forget to make changes in _this_
# file, not there.
#
# Further documentation for configuration settings may be found at:
# https://www.mediawiki.org/wiki/Manual:Configuration_settings

# Protect against web entry
if ( !defined( 'MEDIAWIKI' ) ) {
exit;
}

## Uncomment this to disable output compression
# $wgDisableOutputCompression = true;

$wgSitename = "mw_bench";
$wgMetaNamespace = "Mw_bench";

## 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 = "/";
$wgScript = "$wgScriptPath/index.php";
$wgArticlePath = "/index.php?title=$1";

## The protocol and server name to use in fully-qualified URLs
#$wgServer = "";

## The URL path to static resources (images, scripts, etc.)
$wgResourceBasePath = $wgScriptPath;

## 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 = "$wgScriptPath/resources/assets/wiki.png";

## UPO means: this is also a user preference option

$wgEnableEmail = true;
$wgEnableUserEmail = true; # UPO

$wgEmergencyContact = "apache@localhost";
$wgPasswordSender = "apache@localhost";

$wgEnotifUserTalk = false; # UPO
$wgEnotifWatchlist = false; # UPO
$wgEmailAuthentication = true;

## Database settings
$wgDBtype = "mysql";
#$wgDBserver = "localhost";
$wgDBname = "mw_bench";
$wgDBuser = "mw_bench";
$wgDBpassword = "mw_bench";

# 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 = true;

## 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 = false;
#$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_US.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 = "cf5ad1a57ccc0e5aa6a56de5b7e7e68b280f7504592b43fdf6cdb88f8dc2f5d1";

# Site upgrade key. Must be set to a string (default provided) to turn on the
# web installer while LocalSettings.php is in place
$wgUpgradeKey = "7f5c21ae501bb77a";

## 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";

# Default behavior is to do a MySQL query *for each translatable string
# on every page view*. This is just insane.
$wgLocalisationCacheConf["storeClass"] = "LCStoreStaticArray";

## Default skin: you can change the default skin. Use the internal symbolic
## names, ie 'vector', 'monobook':
$wgDefaultSkin = "vector";

# Enabled skins.
# The following skins were automatically enabled:
require_once "$IP/skins/CologneBlue/CologneBlue.php";
require_once "$IP/skins/Modern/Modern.php";
require_once "$IP/skins/MonoBook/MonoBook.php";
require_once "$IP/skins/Vector/Vector.php";


# Enabled Extensions. Most extensions are enabled by including the base extension file here
# but check specific extension documentation for more details
# The following extensions were automatically enabled:
require_once "$IP/extensions/Cite/Cite.php";
require_once "$IP/extensions/ConfirmEdit/ConfirmEdit.php";
require_once "$IP/extensions/Gadgets/Gadgets.php";
require_once "$IP/extensions/ImageMap/ImageMap.php";
require_once "$IP/extensions/InputBox/InputBox.php";
require_once "$IP/extensions/Interwiki/Interwiki.php";
require_once "$IP/extensions/LocalisationUpdate/LocalisationUpdate.php";
require_once "$IP/extensions/Nuke/Nuke.php";
require_once "$IP/extensions/ParserFunctions/ParserFunctions.php";
require_once "$IP/extensions/Poem/Poem.php";
require_once "$IP/extensions/Renameuser/Renameuser.php";
require_once "$IP/extensions/SpamBlacklist/SpamBlacklist.php";
require_once "$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php";
require_once "$IP/extensions/TitleBlacklist/TitleBlacklist.php";
require_once "$IP/extensions/WikiEditor/WikiEditor.php";


# End of automatically generated settings.
# Add more configuration options below.
19 changes: 7 additions & 12 deletions targets/mediawiki/MediaWikiTarget.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
*/

final class MediaWikiTarget extends PerfTarget {

const MEDIAWIKI_VERSION = 'mediawiki-1.26.2';

public function __construct(private PerfOptions $options) {}

protected function getSanityCheckString(): string {
Expand All @@ -22,7 +25,7 @@ public function install(): void {
Utils::CopyDirContents($src_dir, $this->getSourceRoot());
} else {
Utils::ExtractTar(
__DIR__.'/mediawiki-1.24.0.tar.gz',
__DIR__.'/'.self::MEDIAWIKI_VERSION.'.tar.gz',
$this->options->tempDir,
);
}
Expand All @@ -37,18 +40,10 @@ public function install(): void {
$cache_dir = $this->getSourceRoot().'/mw-cache';
mkdir($cache_dir);

copy(__DIR__.'/LocalSettings.php', $this->getSourceRoot().'/LocalSettings.php');
file_put_contents(
$this->getSourceRoot().'/LocalSettings.php',
'$wgCacheDirectory="'.
$cache_dir.
'";'.
// Default behavior is to do a MySQL query *for each translatable string
// on every page view*. This is just insane.
'$wgLocalisationCacheConf["store"] = "file";'.
// Default behavior is to maintain view counts in MySQL. Any real
// large-scale deployment should be using a more scalable solution such
// as log files or Google Analytics
'$wgDisableCounters = true;',
'$wgCacheDirectory="'.$cache_dir.'";',
FILE_APPEND,
);
}
Expand All @@ -65,6 +60,6 @@ public function postInstall(): void {
}

public function getSourceRoot(): string {
return $this->options->tempDir.'/mediawiki';
return $this->options->tempDir.'/'.self::MEDIAWIKI_VERSION;
}
}
Binary file not shown.
Binary file modified targets/mediawiki/mw_bench.sql.gz
Binary file not shown.
99 changes: 0 additions & 99 deletions targets/mediawiki/patches/0001-LCStoreStaticArray.patch

This file was deleted.