MediaWiki-installatie bijwerken

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

Bijwerken van een MediaWiki-installatie is niet moeilijk. Hoe ik dit meestal doe:

  • Maak eventueel backups
  • Plaats nieuwe bestanden over oude bestanden heen
  • Start vanuit de browser het update-script.

Officiële upgrade-procedure (2020)

Zelf plaats ik meestal een nieuwe installatie gewoon over de oude heen. Dat werkt tot op heden prima, terwijl het wel degelijk risico's met zich meebrengt: Oude bestanden blijven behouden nen daar kunnen bestanden tussen zitten die niet meer gebruikt worden ivm. beveiligingsissues.

MediaWiki adviseert om het juist andersom te doen [1]:

  • Voer op de bestaande locatie het commando runJobs.php uit, om de job queue te verwerken. Bv. vanaf de root van de installatie: php ./maintenance/runJobs.php
  • Plaats ergens de bestanden van de nieuwe installatie, en verplaats daarheen de onderdelen uit de oude installatie.

Dit zijn de onderdelen uit de oude installatie, die je moet overnemen naar de nieuwe installatie:

  • Bestand LocalSettings.php
  • Map images - Pas eventueel bestandsrechten aan, zodat de webserver eigenaar is
  • Map extensions - Handig moment om deze nu ook te updaten, ivm. mogelijke compatibiliteitsproblemen tov. oude en nieuwe MediaWiki-versie
  • Logo: Locatie kan verschillen. Controlleer dit in op de bestaande site: Klik met de rechtermuistoets op het logo » Inspect
  • Eventueel bestand .htaccess.

Casus: Upgrade over bestaande installatie (2016)

Dit betreft twee upgraded over bestaande installaties heen, uit feb. 2016 en juli 2016.

Backup

Maak een backup van zowel bestanden als database. Bv.:

mkdir ~/backups/wiki-zusofzo-20160706
mysqldump --routines <databasenaam> > <databasenaam>.sql && gzip <databasenaam>.sql
cd <hoofdmap van de installatie>
tar -czf ~/backups/wiki-zusofzo-20160706/wiki-zusofzo-20160706.tar.gz .

Overigens: Meestal maak ik geen backup: De hele upgrade-procedure stelt weinig voor.

Downloaden, uitpakken & plaatsen

  1. Ga naar https://www.mediawiki.org/wiki/Download om bestandsnaam te achterhalen van de nieuwste MediaWiki-versie.
  2. Doe de volgende dingen op de server:
cd ~/in1                                                                                           # 'in1' is een map voor inkomende data
wget https://releases.wikimedia.org/mediawiki/1.27/mediawiki-1.27.0.tar.gz -O mediawiki.tar.gz     # Download & hernoem
tar xzf mediawiki.tar.gz --strip 1                                                                 # Uitpakken minus top-level
rm mediawiki.tar.gz                                                                                # Verwijder download
cd <map van de MediaWiki-instantie>                                                                # Ga naar de map met MediaWiki
cp -R ~/in1/* .                                                                                    # Plaats bestanden over bestaande installatie heen

Upgraden

MediaWiki gebruikt een universeel configuratiescript voor installaties & upgrades:

example.com/mw-config
Krijg je deze waarschuwing? Dan het Apache virtuele host-bestand bijwerken. Zie artikel Apache virtuele host-definitie voor details
Je kunt het upgrade-script straffeloos starten: Als er nix te upgraden is, zegt-ie 't
Het configuratiescherm ziet dat er al data is. Een bestaande installatie wordt dus niet zomaar overschreven
Klaar! In dit geval hoefde er verder niets aangepast worden. Dat is soms wel het geval

Werk LocalSettings.php bij

In nieuwere versies van MediaWiki moet een skin expliciet geladen worden. Bv.:

wfLoadSkin( 'Vector' );

Casus: Migratie, upgrade & SSL (zomer 2020)

Doelen

  • Migreer wiki-oud.example.com naar een andere server
  • Upgrade de installatie naar de nieuwste versie van MediaWiki
  • Pas SSL toe

Het is altijd gemakkelijk als een upgrade tevens een migratie naar een andere locatie betreft:

  • Dan heb je vanzelf een backup
  • Upgrade kan ik op m'n laptop doen (daarbij hoef ik geen bestanden te executeren)
  • Gemakkelijke rollback bij complicaties: Gewoon de DNS-entries terugzetten.

Aanvullende info

  • MediaWiki-Download-pagina
  • MediaWiki-Upgrade-pagina
  • Actuele MediaWiki-versie: 1.34.2
  • PHP: Minimaal versie PHP 7.2.9+, muv. versies 7.4.0 tot en met 7.4.2. De doelserver heeft PHP-versie 7.2.24
  • MySQL-server: Minimaal versie 5.5.8+. De doelserver heeft versie 5.7.30.

Acties - (1) - Bronserver

Maak een kopie van de database middels mysqldump. Deze plaats ik in een vaste map binnen de installatie.

Acties - (2) - Laptop

Op m'n laptop zet ik de nieuwe installatie in elkaar. Daarbij executeer ik geen enkel commando.

  • Download de huidge site, inclusief de database
  • Download de nieuwste MediaWiki-versie
  • Pak de MediaWiki-download uit, en plaats 'm ergens in een map
  • Plaats de onderdelen uit de oude installatie, die behouden moeten blijven, over die nieuwe installatie heen
  • Plaats een db-kopie in deze nieuwe installatie
  • Download de nieuwste versie van de eventuele extensies en vervang de installaties van de bestaande extensies daarmee.

Onderdelen oude installatie die ik kopiëer naar de nieuwe installatie:

  • Bestand LocalSettings.php
  • Map <images
  • Eigen map met db-backup
  • Niet: Extensies: Deze wiki zit achter een .htaccess-toegangsbeveiliging. In de oude installatie had ik extensies BlockAndNuke en Nuke, GoogleAdSense en nog een paar, maar ik denk niet dat ik die nog nodig heb.
  • Upload vervolgens de nieuwe installatie naar de nieuwe server.

Acties - (3) - Server

  • Installeer de database
  • Configureer bestandsrechten
  • (dit lijstje is niet afgemaakt).

Casus juni 2021 - Strompf.com: Update + SSL

  • Dit betreft een update binnen dezelfde server. Dat maakt het een stuk lastiger om dit fail-safe te doen
  • Vaak overschrijf ik een oude MediaWiki-installatie met een nieuwe installatie. Omdat deze installatie al een paar jaar oud is, doe ik dat nu liever niet
  • Voor de zekerheid eerst een complete site-backup maken - Ik doe dit namelijk niet elke dag en m'n concentratie is vandaag ook niet op z'n best. Daarnaast sowieso geen slecht idee.

Fail safe?

Hoe deze migratie fail safe te doen? Da's gemakkelijk als je tegelijkertijd met de update, migreert naar een andere server. Dat is hier echter niet het geval:

  • De bestaande instantie migreren naar bv. tmp.strompf.com? Dat vind ik overkill maar vooral foutgevoelig: Ik wil zo min mogelijk aanpassen aan de bestaande site
  • Nieuwe virtuele host-instantie tmp.strompf aanmaken en de bestaande instantie hernoemen - Nog steeds betekent dat 't aanpassen van een bestaande (oude, fragiele?) site
  • Oude site downloaden naar m'n laptop en daar aan de praat krijgen - Gedoe, want mogelijk versieconflicten PHP of MySQL
  • Hierbij laten: Ik heb al een backup gemaakt
  • In-place oude bestanden verwijderen: De MediaWiki-handleiding geeft duidelijk aan wat behouden moet worden, en wat niet. Mocht het toch nog misgaan, dan kan ik dingen terugzetten uit de backup + dat TransIP elke 4 uur een backup maakt, en er op deze server geen webwinkels draaien → Dit wordt 'm! - Vooral de mogelijkheid om een TransIP-backup te kunnen terugzetten, is een prettig idee: Die hebben me al vaker gered. Het kan nog een stapje beter: Wachten tot TransIP een backup heeft gemaakt, en dan verder.

Plan van Aanpak

  1. Verifiëren of de server voldoet aan de vereisten van nieuwste MediaWiki
  2. Verifiëren wat de actuele upgrade-procedure is
  3. Complete site-backup maken
  4. Server bijwerken
  5. Wachten tot TransIP een backup heeft gemaakt.

Site-backup

Net als voor WordPress-sites, maak ik een eigen mapstructuur aan binnen de installatie, om db-backups te bewaren. Aanmaken van die map + MySQL-backup, was een standaard-procedure.

Ik gebruik hier het systeem van file systemrechten waarbij Apache eigenaar is, maar amper iets kan (groep www-data), en ik lid ben van groep www-admin en alles kan. Ik moest rechten eerst aanpassen:

  • Hele boom: sudo chmod -R g+w strompf.com
  • Map images: sudo chmod -R g+rw (vanuit de root van de installatie, geloof ik).

Backups staan op deze server onder m'n eigen account (voor servers waar ook andere beheerdes toegang tot hebben, heb ik een andere structuur). Eigenlijke backup was niet al te complex (vanuit de root van de installatie):

mkdir ~/backup/strompf.com-2021.06.24
cp -r * ~/backup/strompf.com-2021.06.24

Casus: Deze wiki migreren (feb. 2022)

Partiële upgrade

Dit betreft MediaWiki versie 1.27. Je kunt slechts upgraden van twee LTS-versies geleden. Maw.: Van 1.27 kan ik maximaal upgraden naar 1.35. Vandaar kan ik vervolgens upgraden naar 1.37:

  • 1.27: LTS
  • 1.28
  • 1.29
  • 1.30
  • 1.31: LTS
  • 1.32
  • 1.33
  • 1.34: Not supported anymore, like all versions before this one
  • 1.35: LTS, currently supported
  • 1.36: Currently supported
  • 1.37: Current version
  • 1.38: Future release

Info:

wget https://releases.wikimedia.org/mediawiki/1.35/mediawiki-1.35.5.tar.gz
tar -xvzf mediawiki-1.37.1.tar.gz
rm mediawiki-1.37.1.tar.gz

Casus: MediaWiki 1.16-instantie migreren (feb. 2022)

Dit betreft een opvallend oude MediaWiki-installatie (1.16 - juli 2010), afgeschermd met een .htpasswd-procedure.

Versies:

  • 1.16: Released: July 2010
  • 1.17
  • 1.18
  • 1.19: LTS
  • 1.20
  • 1.21
  • 1.22
  • 1.23: LTS
  • 1.24
  • 1.25
  • 1.26
  • 1.27: LTS
  • 1.28
  • 1.29
  • 1.30
  • 1.31: LTS
  • 1.32
  • 1.33
  • 1.34: Not supported anymore, like all versions before this one
  • 1.35: LTS, currently supported. Uses PHP 7.3.19 or newer. I prefer to upgrade to LTS versions, so this is my current goal release
  • 1.36: Currently supported release. Requires PHP Intl module. Since this release, new releases only supports upgrades from two LTS versions ago. I think this means (1) you can directly upgrade to 1.36 from 1.27 or more recent and (2) you can upgrade from any version to 1.35, and since that's a LTS, this whole limitation isn't relevant
  • 1.37: Current version
  • 1.38: Future release.

Zie ook

Bronnen