Difference between revisions of "MediaWiki/Upgrade/REL1 25 to REL1 26"

From Freephile Wiki
Jump to navigation Jump to search
(25 intermediate revisions by the same user not shown)
Line 1: Line 1:
Last updated in 2008, it was time to revisit this page and make some new notes.  Even though the README, UPGRADE and online help are very detailed, I find it helpful to note my personal preferences, observations, and clarifications.  Still, for the do-it-yourself types, the [[mw:Manual:Upgrading#Using_Git|official docs]] are the best resource. If you need professional help with MediaWiki, then contact [[User:Freephile|Greg Rundlett]]
+
=== Overview ===
  
The process obviously started with downloading the source from the webHowever, since the wikipedia project uses the continuous integration method of development (meaning they always run their own latest code), I follow the same practice and run off either the latest release branch or master from the [[git]] repository.  So, I simply did a <code>composer update --no-dev && git fetch</code> to prepare for an upgrade.
+
I just upgraded my wiki site, and thought I would write down the steps for further referenceEven though the instructions that come with the source are very detailed, I find it helpful to note my personal preferences, observations, and clarifications where I might not understand the instructions.
  
== Consult the release notes ==
+
The process obviously started with downloading the source from the web.  I saved it locally to the site where it's installed, above the docroot so that it wasn't accessible to site visitors. I uncompressed it after checking that it wouldn't accidentally overwrite an existing directory.
  
Before doing anything, stop and consult the [[mw:Release_notes/1.26#MediaWiki_1.26.2|release notes]] supplied with the new
+
I performed a diff of the entire tree v. my installed copy using the venerable KDiff3 to get an idea of the magnitude of the code changes; to learn by reading some code changes and get a feel for the 'current best practices'.  It also helped me to see what old stuff was deprecated, or that I had lying around as cruft on my filesystem.  I figured that when I updated my files with rsync, I would use the --delete switch to remove any of the cruft on the target.
 +
 
 +
=== Consult the release notes ===
 +
 
 +
Before doing anything, stop and consult the release notes supplied with the new
 
version of the software. This detail bug fixes, new features and functionality,
 
version of the software. This detail bug fixes, new features and functionality,
 
and any particular points that may need to be noted during the upgrade
 
and any particular points that may need to be noted during the upgrade
procedure. There was a lot here, although nothing that impacted the function of my installation.
+
procedure.
 +
 
 +
=== Backup first ===
  
== Backup first ==
+
I copied my filesystem as a backup.  This is not explicitly mentioned in the UPGRADE file, but obvious if you want to be able to revert.
  
I copied my filesystem as a backup and testing ground.
+
I copied my database as a backup.  I noticed that phpMyAdmin failed silently to create a backup because it exhausted the PHP memory limit.  When I say 'failed silently' I mean that it saved the export as a compressed file on my system without complaining, but the contents of that file were the plain-text error message from PHP.  I could have increased the script memory limit, but instead I used mysql-admin.  The Mysql Administrator client had it's own bug, in that one of my prior backup profiles was somehow corrupt (maybe it no longer existed on the filesystem?) and Mysql Administrator would crash whenever I clicked on that profile.  I'll have to figure out if there is a setting file where I can manually remove this 'profile' to prevent further crashes.
  
For the database, I have a backup script that in addition to timed backups, will create a spot backup on demand: <code>~/bin/backup.db.sh mediawiki</code>
 
  
== Perform the file upgrade ==
+
=== Perform the file upgrade ===
  
For extensions that support the [[mw:Manual:Extension_registration|new extension registration mechanism]] you can change the old 'requires' with a call to the 'wfLoadExtension' function <code>require_once\(  *"\$IP/extensions/.*/([^/]*)" * \); wfLoadExtension( '\1' );</code>
+
Having downloaded the desired new version of the software, either as a package
 +
from SourceForge, or via an export from Subversion, decompress the files as
 +
needed, and replace the existing MediaWiki files with the new.
  
With the software downloaded (git fetch), and a check to see if you've modified anything (git status), you can simply switch the branch you're on <code>git checkout -b REL1_26 origin/REL1_26</code> and then do the database upgrade.
+
You should preserve:
  
You must preserve:
+
* The LocalSettings.php file
 +
* The AdminSettings.php file, where it exists
 +
* The extensions directory
 +
* The images directory
  
# The LocalSettings.php file
+
If using an alternative uploads directory, preserve this; and if using custom
# DatabaseSettings file, where it exists
+
skins, preserve these too. The core code is now updated.
# The extensions directory
 
# The images directory
 
  
If using an alternative uploads directory, preserve this; and if using custom skins, preserve these too. The core code is now updated.
+
I did all of those because I do have an 'accessible' skin. The easy way to do the filesystem upgrade is with the rsync command.  Besides the filesystem update, you also need to create a AdminSettings.php file with credentials to access your database.
  
== Perform the database upgrade ==
+
:<code>user@host:/path/to/docroot$ rsync -vrc --delete --stats --progress --exclude images/ --exclude extensions/ --exclude LocalSettings.php --exclude skins/disabled/ mediawiki-1.6.1/ wiki</code>
  
From the command line, browse to the maintenance directory and run the
+
 
 +
=== Perform the database upgrade ===
 +
 
 +
You will need an AdminSettings.php file set up in the correct format; see
 +
AdminSettings.sample in the wiki root for more information and examples.
 +
 
 +
From the command line, browse to the maintenance directory and run the  
 
update.php script to check and update the schema. This will insert missing
 
update.php script to check and update the schema. This will insert missing
 
tables, update existing tables, and move data around as needed. In most cases,
 
tables, update existing tables, and move data around as needed. In most cases,
Line 41: Line 55:
 
cd wiki/maintenance/
 
cd wiki/maintenance/
 
ls
 
ls
php -q ./update.php
+
php ./update.php
 
</pre>
 
</pre>
  
== Check configuration settings ==
+
=== Check configuration settings ===
  
 
The names of configuration variables, and their default values and purposes,
 
The names of configuration variables, and their default values and purposes,
Line 50: Line 64:
 
with $wgEnableUploads in later versions. When upgrading, consult the release
 
with $wgEnableUploads in later versions. When upgrading, consult the release
 
notes to check for configuration changes which would alter the expected
 
notes to check for configuration changes which would alter the expected
behavior of MediaWiki.
+
behaviour of MediaWiki.
  
== Change the wiki pointer ==
+
=== Test ===
In order to quickly upgrade, revert or take the site offline, you can simply use a symbolic link and point that to the correct target folder.  However, note that this can present problems for your extensions when <code>$IP</code> is not defined correctly due to the nature of symbolic links.
 
 
 
== Test ==
 
  
 
It makes sense to test your wiki immediately following any kind of maintenance
 
It makes sense to test your wiki immediately following any kind of maintenance
Line 61: Line 72:
 
normally and that special pages continue to function, etc. and correct errors
 
normally and that special pages continue to function, etc. and correct errors
 
and quirks which reveal themselves.
 
and quirks which reveal themselves.
 
# [[User:Freephile/Books/Organic_Gardening]] to test [[Collections]]
 
# [[Tooltips]] to test Semantic MediaWiki info parser function
 
# [[Terminology]] to test the Lingo extension
 
# [[Visual editor]]
 
# [[Svg]] for the SVG-Edit extension
 
# [[Cloning]] for the PDF Handler extension (show pdf file as thumbnail)
 
# [[Categories]] for the Wiki Category Tag Cloud extension
 
# [[:Template:Categorypage]] or [[:Category:Wiki]] for the Category Tree extension
 
# [[Special:ReplaceText]] for the Replace Text extension.  Note that this extension can use regex like <code><nowiki><abbr title="[^"]+">(.*)<\/abbr></nowiki></code> where you can strip out tags and replace with $1
 
 
== Extension and Skin Upgrades ==
 
 
Your MediaWiki site will contain many [[MediaWiki/Extensions|extensions]] to provide extra functionality.  You also have one or more skins installed. Those need to be upgraded independently since they are not distributed with the core (although many are bundled if you download a tarball).  The [[Special:Version]] page will list the ones in use, so go through the list one at a time and check for upgrades.
 
 
For those [https://gerrit.wikimedia.org/r/#/admin/projects/?filter=mediawiki%252Fextensions%252F extensions available in git] you can fetch the latest updates to the code with something like
 
<source lang="bash">
 
release=REL1_26
 
# work within the extensions directory so as not to conflict with the main composer.json
 
cd extensions
 
base=`pwd`;
 
for ext in `find . -type d -name .git | sed 's/.git//' `; do
 
  cd $ext;
 
  echo "fetching $ext";
 
  git fetch;
 
  # checkout the new release branch you want
 
  git checkout $release;
 
  # and update dependencies if project uses composer
 
  if [ -f "./composer.json" ]; then
 
    composer update;
 
  fi
 
  cd $base;
 
done
 
</source>
 
Also, if you don't even know whether there are submodules in use, you can search for those by looking for .gitmodules or .git '''files''' <code>find . -type f -name .git</code> And if you want to know which extensions may be using composer, you can check <code>find . -maxdepth 2 -name composer.json |xargs grep -l '"require":'</code>
 
 
=== Bad Behavior ===
 
* not in gerrit
 
* added a whitelist.ini file for [http://bad-behavior.ioerror.us/ bad-behavior] to avoid the file not found error
 
* upgraded bad-behavior 2.2.13 to 2.2.17
 
* deleted all the log table entries because they were from 2014
 
 
=== Bootstrap ===
 
* I chose to install the Bootstrap extension, which will allow me to use skins based on Bootstrap.  E.g. Chameleon
 
<source lang="bash">
 
composer require "mediawiki/bootstrap:~1.0"
 
composer update
 
</source>
 
 
=== Category Tree ===
 
[[CategoryTree]]
 
 
=== [[mw:Extension:Cite|Cite]] ===
 
[[Citations]]
 
* upgraded to (e26565f) 2016-01-08T17:16:58 from null
 
* change the .git repo from https://gerrit.wikimedia.org/r/p/mediawiki/core.git to https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Cite
 
* delete the Cite dir and clone the new repo
 
* git checkout REL1_26
 
* comment the old requires (there used to be two: Cite/Cite.php and Cite/SpecialCite.php)
 
* wfLoadExtension( 'Cite' );
 
* The second extension can be installed separately now, and provides the SpecialPage
 
* git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/CiteThisPage.git
 
* git checkout REL1_26
 
* wfLoadExtension( 'CiteThisPage' );
 
 
=== Collections ===
 
[[Collections]]
 
* The new config does save books, and renders to pdf (using pediapress) but the output needs some work to be truly professional looking.
 
* If there is an error rendering PDFs, try again.  It's probably due to the low-capacity public server of PediaPress
 
 
=== Delete Batch ===
 
* upgraded to 1.5.0 (3870998) 2015-09-29T17:32:00 from 1.4 (non-git)
 
[[Delete]]
 
 
=== [[mw:Extension:DynamicPageList_(third-party)|DynamicPageList (third party)]] ===
 
* upgraded to 2.3.0 (fa2f83b) 2015-06-22T10:40:33
 
[[Dynamic content]]
 
 
=== Gadgets ===
 
[[Gadgets]]
 
* upgraded to REL1_26 (58f236d) 2015-11-23T16:22:00 from (a775200) 2014-01-26T12:22:15
 
* compatible with wfLoadExtension
 
 
=== Html2Wiki ===
 
[[Html2Wiki]]
 
* disabled temporarily
 
* re-enabled and tested
 
 
=== Interwiki ===
 
[[Interwiki links]]
 
* bundled
 
* upgraded to 3.0 20140719 (6ed9dc3) 2015-11-23T16:39:17 from 2.2 20120425 (83fa077) 2013-03-31T14:51:05
 
* Since the freephile wiki is served in secure mode (https), and all my interwiki links were hardcoded to 'http', I'd be unfairly dumping visitors out to the non-encrypted web. Interwiki since v1.18+ supports Protocol Relative URLs (PRURLs), so I updated my interwiki table converting all links to use // It's not possible to browse the freephile wiki in plain http mode (because our server is configured to always redirect to secure mode), so you can't really link off to an insecure website via the interwiki table now.  But, if we ever decide to serve plain http, then our interwiki links will maintain your insecurity.
 
<source lang="sql">
 
SELECT * FROM mediawiki.interwiki;
 
UPDATE mediawiki.interwiki
 
SET iw_url = REPLACE(iw_url, 'http://', '//')
 
LIMIT 200;
 
</source>
 
 
=== Lingo ===
 
* The Lingo extension was installed via Composer
 
* Creates new [[Terminology]] page
 
 
=== [[mw:Extension:Lockdown|Lockdown]] ===
 
* upgraded to REL1_26 (c0f9986) 2015-09-29T17:56:04 from (db7023e) 2012-12-31T16:48:02
 
* still spews a million PHP Notices
 
 
=== [[mw:Extension:Nuke|Nuke]] ===
 
[[Delete]]
 
* Installed v1.2.0 (5763d10) 2015-11-23T16:46:18
 
* There were several broken Html2wiki import images which I wanted to use this extension to remove from the wiki.  I still had to delete them by hand, but at least the 'recent changes' view on the main page is now fixed.  The Nuke extension is still a useful tool
 
 
=== Page Schemas ===
 
was at 0.4.5 (c60b6fc) 2015-06-22T14:38:11 from Semantic Bundle.  Disabled
 
 
=== [[mw:Extension:ParserFunctions|Parser Functions]] ===
 
[[Parser functions]]
 
* (bundled)
 
* upgraded to 1.6.0 (81eca7c) 2015-11-23T17:18:03 from 1.6.0 (738403b) 2014-10-11T18:09:18
 
 
=== Parsoid ===
 
deactivated 0.2.0 (b23043f) 2014-10-11T18:09:35
 
 
=== PDF Handler ===
 
[[Pdf]]
 
* upgraded to (6d8477d) 2015-11-23T17:19:41 from (f7044ec) 2014-01-21T20:50:35
 
* installed poppler-utils on Ubuntu
 
<source lang="bash">
 
which gs convert pdfinfo # tells if you have the right dependencies
 
</source>
 
* added link to example test page
 
 
 
=== Scribunto ===
 
[[Lua]]
 
* from 184a649) 2013-10-23T12:23:02
 
 
 
=== [[mw:Semantic Bundle|Semantic Bundle]] ===
 
* upgraded to 1.9.2 (97c0b0a) 2014-01-03T15:33:07 from 1.8.0.5.3 (97c0b0a) 2014-01-03T15:33:07
 
* but then decided to use straight SMW with Composer
 
 
=== [https://www.semantic-mediawiki.org/wiki/Semantic_MediaWiki Semantic MediaWiki] ===
 
[[Metadata]]
 
* upgraded from 1.8.0.5 (fbd7570) 2013-04-06T20:44:28 to 2.3.1
 
* deleted the now unused PageSchemas and SemanticBundle directories.
 
* {{@todo}} Need to find out whether I should delete or do anything with the following which were bundled.
 
** ./SemanticCompoundQueries
 
** ./SemanticDrilldown
 
** ./SemanticForms
 
** ./SemanticFormsInputs
 
** ./SemanticImageInput
 
** ./SemanticInternalObjects
 
** ./SemanticMaps
 
** ./SemanticResultFormats
 
** ./SemanticTasks
 
** ./SemanticWatchlist
 
* When you look at the composer.json file, it recommends semantic-forms and semantic-result-formats
 
 
 
=== [[mw:Extension:SVGEdit|SVGEdit]] ===
 
[[Svg]]
 
* upgraded to the latest git from (00b9b30) 2013-11-22T16:46:23
 
 
=== SyntaxHighlight_GeSHi ===
 
[[Syntax Highlighting]]
 
* Note this extension now uses Pygments
 
* Initially had difficulty with this throwing all kinds of notices and breaking things like the edit window, probably because I was on REL1_25
 
* But still after upgrading to REL1_26 it caused a 500 error.
 
* Then I noticed that you need to composer update
 
* upgraded to 2.0 (a15f02e) 2015-12-12T07:49:03
 
* and Parsoid and VisualEditor
 
 
=== Tooltip ===
 
[[Tooltips]]
 
* This interesting extension fell out of maintenance, and is superseded by the Lingo extension. 
 
 
 
=== User Merge and Delete ===
 
[[Merge]]
 
* upgraded to 1.9.0 (8a4faae) 2015-09-29T18:53:44 from 1.7 (9cdb625) 2013-04-04T16:10:25
 
 
 
=== Visual editor ===
 
[[Visual editor]]
 
* completely updated (new git repo)
 
* upgraded to 0.1.0 (34a21d8) 2015-11-10T07:15:06 from 0.1.0 (c416e78) 2014-05-07T17:36:05
 
* Followed the complete install instructions which includes deprecating the Parsoid extension.  Node was [[mw:Parsoid/Installing_Node|already installed]]
 
* previously and was new enough (running v0.10.40)
 
 
=== Wiki Category Tag Cloud ===
 
[[Categories]]
 
* upgraded to 1.2.0 (e8c04a8) 2015-09-29T18:58:37 from 1.1
 
 
 
=== [[mw:Extension:WikiEditor|WikiEditor]] ===
 
[[Text Editor]]
 
* upgraded to 0.5.0 (72db6c7) 2015-09-29T18:59:11 from 0.4.0 (b13e25d) 2014-10-11T18:26:25
 
* added options within LocalSettings
 
 
 
== Gadgets ==
 
=== wikEd ===
 
* For the wikEd [https://freephile.org/wiki/Special:Gadgets gadget], I had to adjust the javascript and also add [ResourceLoader] to the definition
 
 
=== Toggle ===
 
For the [[mw:Snippets/Toggle_between_dropdown_menus_and_tabs|Menu Tab Toggle gadget]], I had to update the definition.
 
 
== Preferences ==
 
Oftentimes, you will need to test and check [[Special:Preferences]] in combination with core, skins, extensions and [[Gadgets]] upgrades.
 
 
== Debug ==
 
 
When things don't quite work as expected, you're left to figure out why.  There are [[mw:Manual:How to debug|several debugging options]] that can assist you.
 
 
[[Category:Wiki]]
 

Revision as of 01:07, 8 April 2006

Overview[edit | edit source]

I just upgraded my wiki site, and thought I would write down the steps for further reference. Even though the instructions that come with the source are very detailed, I find it helpful to note my personal preferences, observations, and clarifications where I might not understand the instructions.

The process obviously started with downloading the source from the web. I saved it locally to the site where it's installed, above the docroot so that it wasn't accessible to site visitors. I uncompressed it after checking that it wouldn't accidentally overwrite an existing directory.

I performed a diff of the entire tree v. my installed copy using the venerable KDiff3 to get an idea of the magnitude of the code changes; to learn by reading some code changes and get a feel for the 'current best practices'. It also helped me to see what old stuff was deprecated, or that I had lying around as cruft on my filesystem. I figured that when I updated my files with rsync, I would use the --delete switch to remove any of the cruft on the target.

Consult the release notes[edit | edit source]

Before doing anything, stop and consult the release notes supplied with the new version of the software. This detail bug fixes, new features and functionality, and any particular points that may need to be noted during the upgrade procedure.

Backup first[edit | edit source]

I copied my filesystem as a backup. This is not explicitly mentioned in the UPGRADE file, but obvious if you want to be able to revert.

I copied my database as a backup. I noticed that phpMyAdmin failed silently to create a backup because it exhausted the PHP memory limit. When I say 'failed silently' I mean that it saved the export as a compressed file on my system without complaining, but the contents of that file were the plain-text error message from PHP. I could have increased the script memory limit, but instead I used mysql-admin. The Mysql Administrator client had it's own bug, in that one of my prior backup profiles was somehow corrupt (maybe it no longer existed on the filesystem?) and Mysql Administrator would crash whenever I clicked on that profile. I'll have to figure out if there is a setting file where I can manually remove this 'profile' to prevent further crashes.


Perform the file upgrade[edit | edit source]

Having downloaded the desired new version of the software, either as a package from SourceForge, or via an export from Subversion, decompress the files as needed, and replace the existing MediaWiki files with the new.

You should preserve:

  • The LocalSettings.php file
  • The AdminSettings.php file, where it exists
  • The extensions directory
  • The images directory

If using an alternative uploads directory, preserve this; and if using custom skins, preserve these too. The core code is now updated.

I did all of those because I do have an 'accessible' skin. The easy way to do the filesystem upgrade is with the rsync command. Besides the filesystem update, you also need to create a AdminSettings.php file with credentials to access your database.

user@host:/path/to/docroot$ rsync -vrc --delete --stats --progress --exclude images/ --exclude extensions/ --exclude LocalSettings.php --exclude skins/disabled/ mediawiki-1.6.1/ wiki


Perform the database upgrade[edit | edit source]

You will need an AdminSettings.php file set up in the correct format; see AdminSettings.sample in the wiki root for more information and examples.

From the command line, browse to the maintenance directory and run the update.php script to check and update the schema. This will insert missing tables, update existing tables, and move data around as needed. In most cases, this is successful and nothing further needs to be done.

cd wiki/maintenance/
ls
php ./update.php

Check configuration settings[edit | edit source]

The names of configuration variables, and their default values and purposes, can change between release branches, e.g. $wgDisableUploads in 1.4 is replaced with $wgEnableUploads in later versions. When upgrading, consult the release notes to check for configuration changes which would alter the expected behaviour of MediaWiki.

Test[edit | edit source]

It makes sense to test your wiki immediately following any kind of maintenance procedure, and especially after upgrading; check that page views and edits work normally and that special pages continue to function, etc. and correct errors and quirks which reveal themselves.