Terug van weggeweest

Na jaren van afwezigheid ben ik weer terug op het net. Ik vond onlangs een sql backup van mijn oude WordPress site in de mail terug. Hiermee heb ik mijn blog alsnog kunnen installeren. Samen met de Wayback Machine ga ik proberen om zoveel mogelijk nog te redden.

De reden dat mijn blog verdwenen was is dat enkele jaren geleden mijn microclient abrupt is overleden. De harde schijf was niet repareerbaar.

Voor nu ga ik verder met een volgende uitdaging die je in de volgende blogposts ongetwijfeld terug zult lezen.

WordPress updaten (3)

Vandaag zag ik op de blog van Roland dat er een nieuwe versie van wordpress beschikbaar is. In tegenstelling tot de vorige update (2.6.1) zit er deze keer wel een security fix in. Hierdoor wordt het belangrijk om deze update uit te voeren.

Ik heb hiervoor de patch bestanden gebruikt die ik vanaf zijn site gehaald heb. Hier de links naar de 2 posts van hem:

WordPress 2.6.1 en WordPress 2.6.2

Arkon:~/web/tecumseh.homeip.net/wordpress$ patch -cl -d ./ -p1 < ../wp26_261.patch
Arkon:~/web/tecumseh.homeip.net/wordpress$ patch -cl -d ./ -p1 < ../wp261_262.patch

Beide patches heb ik uitgevoerd en vervolgens is het nog een kwestie van naar de site browsen en de database structuur laten updaten.

Back online

Terug van weggeweest. Zowel de site als ik zijn een tijdje met vakantie geweest. Nu was het niet de bedoeling dat de site ook plat ging maar mijn gratis dyndns account moet elke 30 dagen vernieuwt worden. Nu had ik mijn sitecom router ingesteld om dit te doen maar blijkbaar werkt dat niet naar behoren.

Terwijl ik op de camping zat is er een mailtje in mijn mailbox terecht gekomen met de melding dat ik nog enkele dagen had om de boel alsnog te vernieuwen. Maar aangezien ik afgezien van de (auto)radio verder alle luxe afzweer tijdens de vakantie kon ik dit mailtje nu pas lezen.

XHTML specificaties

Ik kwam op de site van Henk van de Kamer weer wat tegen, iets wat overigens al van een tijd terug is. Het gaat om een controle over correcte HTML. Nu heb ik ook een mooi XHTML 1.0 logo op de site staan maar heb hier na een 1e controle nooit meer naar omgekeken. Tijd dus om hier even verandering in aan te brengen.

Als eerste het bash script maar even aanpassen naar mijn situatie:

#!/bin/bash

let i=1
while [ $i -le 141 ]; do
wget -q -O index.htm "http://validator.w3.org/check?uri=http%3A%2F%2Ftecumseh.homeip.net%2F%3Fp%3D$i"
echo "$i is "`grep -E '^( *)\[(Valid|Invalid)\]$' index.htm | sed -re 's/.*\[(.*)\]$/\1/'` >> checked.txt
rm index.htm
sleep 15
let i=i+1
done

Hieruit volgen een aantal fouten, het merendeel is overigens correct. De meeste fouten zitten tussen de <pre> tags. WordPress negeert hier over het algemeen de opmaak, zoals het hoort overigens.

Hier een opsomming van de aanpassingen:

  • Bericht 6: Het verwijderen van een harde return lost de fout op (<hr />)
  • Bericht 10: Het vervangen van de haakjes < en > door &lt; en &gt; in het fstab stukje
  • Bericht 63: Ik heb in tussen de <pre> tags een stuk staan waarin tekstueel een smiley zit, wordpress vervangt deze maar moet er eigenlijk vanaf blijven. Ik heb er dus een punt achter gezet zodat de smiley niet geconverteerd wordt.
  • Bericht 70: In het commentaar heb ik in een reactie een stuk van mijn fstab staan, hierin moesten de tekens < en > geconverteerd worden naar &lt; en &gt;
  • Bericht 82: WordPress geeft de <img> tag een backslash op het eind, na het toevoegen van een aantal extra parameters (width, heigt en class) vindt de validator dit geen probleem mee
  • Bericht 99: Ook hier weer een aantal < en > tekens die vervangen zijn door &lt; en &gt;

WordPress file uploads

Iets wat ik tot nu toe nog niet gebruikt heb zijn de file-uploads. Nu ben ik gisteravond even bezig geweest om te controleren of mijn berichten wel Xhtml valid zijn. Ik kwam meteen al een 1e post tegen die destijds vanuit blogger overgenomen is. Hierin zat nog de afbeelding vanuit blogger, die heb ik dus maar op deze server gezet. WordPress sputterde echter nogal tegen, de juiste directory kon niet aangemaakt worden.

Het koste uiteindelijk nogal zoeken, eerst de directory rechten aangepast naar 775 en zelfs 777. De eigenaar veranderd in www-data (de gebruiker die de webserver bedient) maar ook dat mocht niet baten. Uiteindelijk heb ik in WordPress een optie gevonden die het aanmaken van subdirectory’s kan uitschakelen. Hiermee krijg ik echter alles op 1 grote hoop. Het werkt wel voorlopig maar ideaal is het dus niet.

Vandaag even verder gezocht op php safe mode, dat zou namelijk de boosdoener zijn. Dit uitschakelen lijkt me niet een goed plan maar na een stukje lezen (onvoorstelbaar hoeveel sites er eigenlijk niets over schrijven) ben ik er eindelijk uit. De safe mode beperking zorgt er namelijk voor dat een script met een bepaald uid en guid enkel bestanden aan mag maken op de webserver onder zijn eigen gebruikersnaam. De webserver maakt ze echter aan en die heeft een ander uid. De oplossing is dus dat ik de scripts (de php bestanden) van eigenaar moet veranderen. Het volstaat al om de groep te veranderen, dus:

Arkon:~/web/tecumseh.homeip.net$ chgrp -R www-data wordpress/

Na het herstellen van de wordpress optie zodat er weer subdirectory’s aangemaakt mogen worden kan ik netjes georganiseerd bestanden toevoegen.

Vervallen email adres in gebruik

Ik kom met het updaten er ook achter dat ik voor deze wordpress installatie een mailadres gebruik wat niet meer bestaat. Het is dan ook vrij rustig in de mailbox. Helaas lijdt het veranderen van het mailadres bij de gebruikersnaam niet tot het updaten van alle instantie’s hiervan. Zo blijft het oude adres bij alle commentaren staan. Dat wordt weer prutsen met SQL in phpmyadmin:

UPDATE `wordpress`.`wp_comments` SET `comment_author_email` = 'mgdijkerman@gmail.nscom' WHERE `wp_comments`.`comment_author` = "Tecumseh";

WordPress update naar 2.6.0

Recent is er een nieuwe versie van WordPress uitgekomen. De update procedure die ik nu gevolgd heb is ietswat anders verlopen. Ik heb deze keer geen patch gemaakt waarmee de verschillen in de 2 versies eruit gehaald kunnen worden. Ik kwam namelijk na de wijziging van 2.3.1 naar 2.5 een paar onhebbelijkheden tegen. Bijvoorbeeld het niet inladen van de afbeeldingen in de editor.

Ik heb dus nu bijna de lelijke manier gebruikt die WordPress zelf voorsteld. Namelijk het volledige vervangen van alle bestanden terwijl de database intact gehouden wordt. Uiteraard heb ik de wijzigingen die ik zelf gedaan heb (slechts enkele kleine dingen) wel weer doorgevoerd. Deze omschakeling heb ik niet live gedaan, ik heb de database eerst gekopieerd om vervolgens de nieuwe versie van WordPress op een ander domein neer te zetten. Deze heb ik vervolgens stukje bij beetje veranderd zodat ik geen missende onderdelen meer heb.

De grootste wijziging is het thema geweest. Niet aan de oppervlakte maar wat betreft de vertaling. Ik heb dit thema namelijk ooit van een site afgehaald wat de boel al volledig vertaald had, te volledig helaas omdat ook de variabelen en dergelijke meevertaald werden. Vervolgens heb ik de vertaalslag in een schoon thema nogmaals gedaan maar dan op de correcte manier. Althans dat dacht ik. Het blijkt namelijk dat dit thema al volledig multi-talig was. Het enige wat nodig is dat is een taalbestand voor het nederlands. Geheel in de stijl van WordPress wordt dit gedaan met gettext. Ik heb hiervoor dus de .mo en .po bestanden aangemaakt. Deze zijn hier te vinden.

De andere wijziging die ik doorgevoerd heb is het verplaatsen van de wordpress bestanden. Ik had deze voorheen in de documentroot van dit domein staan. Ik kwam er echter achter dat dit netter kan. Je kunt namelijk wordpress in een subdirectory zetten en vervolgens het index.php bestand en het configuratiebestand 1 niveau lager zetten. Je moet in index.php wel 1 klein dingetje aanpassen:

/** Loads the WordPress Environment and Template */
require('./wp-blog-header.php');

Moet worden:

/** Loads the WordPress Environment and Template */
require('./wordpress/wp-blog-header.php');

Hiermee is meteen de weg vrij om meerdere blogs vanuit 1 wordpress installatie te bedienen. Hiervoor hoef je dan enkel een symlink te plaatsen naar de algemene wordpress bestanden. Wat er dan nog overblijft is de wp-content directory waarin bijvoorbeeld de uploads geplaatst worden. Die moet ook nog verplaatst kunnen worden maar dat is voor een volgende keer.

Update taalbestand wordpress

Nu heb ik laatst met succes een update doorgevoerd voor WordPress, helaas worden er geen taalbestanden meegeleverd met dit pakket. Die moeten handmatig toegevoegd worden waardoor je de kans loopt om ze te vergeten. Ik heb dat vandaag maar even rechtgezet.

Aangezien het slechts om 1 bestand gaat heb ik geen diff gedraaid, deze kan ik simpelweg vervangen.

Arkon:~/tecumseh.homeip.net/wp-includes/languages$ mv nl_NL.mo nl_NL.mo.bak
Arkon:~/tecumseh.homeip.net/wp-includes/languages$ wget http://svn.automattic.com/wordpress-i18n/nl/branches/2.5/nl_NL.mo

Nu heb ik ook eindelijk het dashboard van wordpress in het nederlands en niet het halve engels/nederlands wat ik vlak na de upgrade voorgeschoteld kreeg.

Nog even het verwijderen van de oude versie, de nieuwe werkt per slot van rekening:

Arkon:~/tecumseh.homeip.net/wp-includes/languages$ rm nl_NL.mo.bak

Sitemap

Een blog is leuk, maar als er maar weinig mensen langskomen om het te lezen dan is het niet meer dan een dagboek wat je eigenlijk ook offline bij kunt houden. Het is dus handig als je gevonden kunt worden met de zoekmachines. Hiervoor heb ik eigenlijk al een tijd geleden iets mee willen doen en vandaag is het er dan van gekomen. Ik kwam namelijk een plugin tegen die dit automatisch al regelt. Het gaat om de Google Sitemap Generator, hiermee wordt de sitemap.xml aangemaakt en de zoekmachines worden van een update op de hoogte gesteld.

Het installeren is vrij simpel, pak het gedownloade zip bestand uit in de plugins directory en maak een 2-tal lege bestanden aan in de root van je site:

Arkon:~/tecumseh.homeip.net$ touch sitemap.xml
Arkon:~/tecumseh.homeip.net$ touch sitemap.xml.gz
Arkon:~/tecumseh.homeip.net$ chmod 666 sitemap.xml sitemap.xml.gz
Arkon:~/tecumseh.homeip.net$ cd ../archives
Arkon:~/archives$ wget http://downloads.wordpress.org/plugin/google-sitemap-generator.3.0.3.3.zip
Arkon:~/archives$ unzip google-sitemap-generator.3.0.3.3.zip
Arkon:~/archives$ mv google-sitemap-generator ../tecumseh.homeip.net/wp-content/plugins/

Hierna kun je in het WordPress control panel de plugin activeren. De 1e keer zal de sitemap handmatig bijgewerkt moeten worden. Daarna zal bij elke post een update gestart worden die in de achtergrond draait.

Voordat ik dit post is dit de laatste update volgens het controlpanel:

Your sitemap was last built on 21 May 2008 5:52 pm

Een minuut na het posten kom ik deze tijd tegen:

Your sitemap was last built on 21 May 2008 7:51 pm.

Het automagische gedeelte klopt dus inderdaad.

WordPress updaten (2)

Nu we de testomgeving klaar hebben staan kan er begonnen worden met het update proces. Uiteraard doen we dat niet op de manier die WordPress zelf voor ogen heeft. Simpelweg alles overschrijven inclusief de aanpassingen die je eventueel gedaan hebt is niet helemaal de juiste manier.

Als eerste halen we de laatste versie op en hernoemen die. Vervolgens pakken we de originele versie en de laatste versie uit in de archives directory:

Arkon:~/archives$ wget http://wordpress.org/latest.tar.gz
Arkon:~/archives$ mv latest.tar.gz wordpress_2.5.1.tar.gz
Arkon:~/archives$ tar -xzf wordpress_2.3.3.tar.gz
Arkon:~/archives$ mv wordpress wordpress_233
Arkon:~/archives$ tar -xzf wordpress_2.5.1.tar.gz
Arkon:~/archives$ mv wordpress wordpress_251

Vervolgens gaan we met diff een patchbestand aanmaken:

Arkon:~/archives$ diff -crN wordpress_233/ wordpress_251/ > wp233-251.patch

Met dit patchbestand kan ik vervolgens de testinstallatie van wordpress gaan updaten:

Arkon:~/test.homeip.net$ patch -cl -d ./ -p1 < /home/tecumseh/archives/wp233-251.patch

Ik kom meteen al een foutmelding tegen:

can't find file to patch at input line 4
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff -crN wordpress_233/license.txt wordpress_251/license.txt
|*** wordpress_233/license.txt Tue Apr 1 16:12:34 2003
|--- wordpress_251/license.txt Sun Mar 2 22:34:25 2008
--------------------------
File to patch:

Nu staat me inderdaad bij dat ik de license.txt verwijdert heb, en bestanden die niet bestaan zijn wat lastig te updaten. Na een enter verschijnt de vraag of ik deze patch wil overslaan. Zo volgen er nog een paar want de readme en de installatiedirectory zijn niet meer aanwezig.

Na het patchen bekijken we de boel eens in de browser. Na het inloggen krijg ik de melding dat de database een opfrissing nodig heeft, ik geef hierop akkoord waarna de database aangepast wordt. Hiermee is de update ook helemaal klaar.

Na wat rondkijken in de testomgeving kan ik in elk geval concluderen dat ik al mijn posts nog heb en dat in elk geval het meest voor de hand liggende werkt. Ik kan dit dus ook doorvoeren op de live omgeving. De backup houd ik nog even achter de hand voor het geval dit helemaal misloopt.