Making a English Wikipedia server: Difference between revisions

Saved progress so far
m Finish configuring LocalSettings.php: Removed unneeded lines
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
[https://www.mediawiki.org MediaWiki] makes dumps of the English Wikipedia about once a month. As it is free and open source content, you can use these dumps to make your own server with the English Wikipedia content in it. As the English Wikipedia is the largest Wikipedia, it does take a while to import the dumps, but it is by no means impossible. This guide will help you long the way.
[https://www.mediawiki.org MediaWiki] makes dumps of the English Wikipedia about once a month. As it is free and open source content, you can use these dumps to make your own server with the English Wikipedia content in it. As the English Wikipedia is the largest Wikipedia, it does take a while to import the dumps, but it is by no means impossible. This guide will help you long the way.


This guide is based entierly on the English Wikipedia, but should be quite relevent for other languages too.
This guide is based entirely on the English Wikipedia, but should be quite relevant for other languages too.


== Prerequisites ==
== Prerequisites ==
Line 27: Line 27:
* Prepare MySQL/MariaDB and PHP for the incoming large transactions.
* Prepare MySQL/MariaDB and PHP for the incoming large transactions.


== Preperation ==
== Preparation ==


=== Downloading the dumps ===
=== Downloading the dumps ===
Line 33: Line 33:
# The dumps for English Wikipedia are available from [https://dumps.wikimedia.org/enwiki/ Wikimedia Dumps]. When there, you'll obviously want to select the latest date.
# The dumps for English Wikipedia are available from [https://dumps.wikimedia.org/enwiki/ Wikimedia Dumps]. When there, you'll obviously want to select the latest date.
# Once there, you'll need to download the following:
# Once there, you'll need to download the following:
#* <code>enwiki-(date)-pages-articles-multistream.xml.bz2</code> (This is the latest revision of every Wikipedia page, article and template - the basics you need to get going)
#* <code>enwiki-<date>-pages-articles-multistream.xml.bz2</code> (This is the latest revision of every Wikipedia page, article and template - the basics you need to get going)
# This is compressed with Bzip2 - if you have the space, extract it once downloaded to speed up importing.
# This is compressed with Bzip2 - if you have the space, extract it once downloaded to speed up importing.


Line 45: Line 45:
* Copy the folder to the webroot
* Copy the folder to the webroot
* Place a file in the .../resources/asset folder if using a picture for the site logo/favicon
* Place a file in the .../resources/asset folder if using a picture for the site logo/favicon
* The following extra extensions need to be downloaded, extracted and dropped in the extensions folder:
** [https://www.mediawiki.org/wiki/Extension:MassMessage MassMessage]
** [https://www.mediawiki.org/wiki/Extension:TemplateStyles TemplateStyles]
** [https://www.mediawiki.org/wiki/Extension:JsonConfig JsonConfig]
** [https://www.mediawiki.org/wiki/Extension:MobileFrontend MobileFrontend]


=== Preparing the database ===
=== Preparing the database ===
Line 62: Line 67:
This can be tweaked with different database and user names as required.
This can be tweaked with different database and user names as required.


=== Moving databse to a different hard drive ===
=== Moving database to a different hard drive ===


Due to the sheer size of the databse, you may choose to move the MariaDB database to a different drive. MariaDB stores each database in a seperate folder by default making this easy.
Due to the sheer size of the database, you may choose to move the MariaDB database to a different drive. MariaDB stores each database in a separate folder by default making this easy.


* Stop MariaDB
* Stop MariaDB
Line 109: Line 114:
*** JsonConfig
*** JsonConfig
*** MobileFrontend
*** MobileFrontend
*** ParserFunctions
** Check 'Enable Instant Commons'
** Check 'Enable Instant Commons'
** Change under Logo (icon) and Sidebar logo (optional) <code>change-your-logo.svg</code> to the filename of the image you dropped in the resource folder earlier. You will see a preview of it underneath
** Change under Logo (icon) and Sidebar logo (optional) <code>change-your-logo.svg</code> to the filename of the image you dropped in the resource folder earlier. You will see a preview of it underneath
Line 114: Line 120:
* Click 'Continue'
* Click 'Continue'
* Click 'Continue' to finish the install
* Click 'Continue' to finish the install
* Ensure the installation has completed sucessfully then click 'Continue'
* Ensure the installation has completed successfully then click 'Continue'
* A copy of the LocalSettings.php file will be downloaded automatically. This needs to be moved to the root folder of the wiki which will then make it work.
* A copy of the LocalSettings.php file will be downloaded automatically. This needs to be moved to the root folder of the wiki which will then make it work.
* Click 'Enter your wiki'. You will be greeted with the default MediaWiki Main page if all is well.
* Click 'Enter your wiki'. You will be greeted with the default MediaWiki Main page if all is well.
=== Finish configuring LocalSettings.php ===
* Open LocalSettings.php in a text editor
* Add a line to enable a favicon:
$wgFavicon = "$wgResourceBasePath/resources/assets/<logoimage.svg>";
* Edit <code>$wgEmergencyContact</code> and <code>$wgPasswordSender</code> with your email address between the quote marks
* Change <code>$wgLocaltimezone</code> from UTC to your correct PHP time zone - in our case, <code>Europe/London</code>
* Add under <code>$wgGroupPermissions['*']['edit'] = false;</code>:
$wgGroupPermissions['*']['createaccount'] = false;
This stops user accounts being created and prevents editing by anyone other than yourself.
* Add under <code>wfLoadSkin ( 'Vector' );</code> the following:
$wgDefaultSkin = 'vector-2022';
This enables the modern Vector 2022 skin
* Add under <code>wfLoadExtension( 'JsonConfig' );</code>:
$wgJsonConfigEnableLuaSupport = true; // required to use JsonConfig in Lua
$wgJsonConfigModels['Tabular.JsonConfig'] = 'JsonConfig\JCTabularContent';
$wgJsonConfigs['Tabular.JsonConfig'] = [
        'namespace' => 486,
        'nsName' => 'Data',
        // page name must end in ".tab", and contain at least one symbol
        'pattern' => '/.\.tab$/',
        'license' => 'CC0-1.0',
        'isLocal' => false,
];
$wgJsonConfigModels['Map.JsonConfig'] = 'JsonConfig\JCMapDataContent';
$wgJsonConfigs['Map.JsonConfig'] = [
        'namespace' => 486,
        'nsName' => 'Data',
        // page name must end in ".map", and contain at least one symbol
        'pattern' => '/.\.map$/',
        'license' => 'CC0-1.0',
        'isLocal' => false,
];
$wgJsonConfigInterwikiPrefix = "commons";
$wgJsonConfigs['Tabular.JsonConfig']['remote'] = [
        'url' => 'https://commons.wikimedia.org/w/api.php'
];
$wgJsonConfigs['Map.JsonConfig']['remote'] = [
        'url' => 'https://commons.wikimedia.org/w/api.php'
];
* Add under <code>wfLoadExtension( 'MobileFrontend' );</code>:
$wgMFDefaultSkinClass = 'SkinMinerva';
* Add under <code>wfLoadExtension( 'ParserFunctions' );</code>:
$wgPFEnableStringFunctions = true;
* Add under <code>wfLoadExtension( 'Scribunto' );</code>:
$wgScribuntoDefaultEngine = 'luastandalone';
* Add the following block at the end (leave commented out until needed for debugging for security and comment back out once debugging finished):
# Show PHP exceptions (only enable on error)
#$wgShowExceptionDetails = true;
* Add the following block at the end - this allows larger modules to be uploaded without errors:
$wgMaxArticleSize = 4096;      # Size in kb
$wgAPIMaxResultSize = 4096000;  # Size in b
Go back to the website and check that it is still functional. If you are greeted by a blank page, the most common reason is a missing <code>;</code> at the end of a line - all lines must end with a <code>;</code>.
== Importing the dump ==
== Importing the dump ==