Etikettarkiv: wordpress

Dödar gamla buggar på bloggnätverket

I går så fixade jag en fem år gammal bugg som gjorde att cachningen på min sajt BloggVärde fungerade suboptimalt. Felet bestod i att jag använde en sekundräknare som uppdaterades i en SQL-fråga mot databasen.

Dock så cachar jag genom memcache och en md5-summa som beräknas på SQL-frågan, eftersom SQL-frågan blev ny varje sekund så cachades bara frågorna i en sekund. Det sänker förvisso belastningen till SQL-servern lite men när jag hade fixat buggen så gick sajten flera sekunder snabbare.

Jag har även flyttat över BloggNytt till molnet aka Amazon EC2 och håller på att flytta mer av mitt bloggnätverk från 2007.

Du glömmer väl inte att lägga till ping.bloggnytt.se i din lista över XML-RPC tjänster som du pingar från WordPress? Du lägger in http://ping.bloggnytt.se under Inställningar->Skrivinställningar och Uppdateringstjänster.

 

Hur säkert är WordPress?

En fråga som uppkommer relativt ofta är: Hur säkert är WordPress? Och för att svara på den frågan så finns det ett antal faktorer som jag anser intressanta att titta på och dessa inkluderar men begränsas ej till följande:

  • Ålder – Hur gammal är mjukvaran, om mjukvaran funnits 10 år eller några månader kan vara en faktor för nyare mjukvaror har troligtvis ej genomgått samma granskning (antalet ögon som tittat på koden).
  • Track record – Har det tidigare identifierats sårbarheter? Använd Secunia.
  • Öppen vs. stängd källkod – Jag litar mer på öppen källkod än stängd.
  • Kompetens hos utvecklare – Svårt att avgöra.
  • Kodstandard – Fulkod vs. finkod. Koden i WordPress är bra, dock ej supermycket kommenterad.
  • Uppdateringar – Sker det det några uppdateringar? Om koden senast uppdaterades 2005 så finns det med större sannolikhet brister. WordPress har ett bra system för uppgradering, glöm dock inte att uppdatera.
  • Installationsbas – Hur många använder systemet? Troligtvis har fler testat systemet om fler använder det. 14.7 percent of the top million websites in the world use WordPress.
  • Säkerhetsfunktioner och säkerhetsuppdateringar – Kommer det säkerhetsuppdateringar? Finns det några säkerhetshöjande funktioner i systemet. Här finns ett antal såsom slumpmässig nonce och HttpOnly cookies.
  • Komplexitet i systemet och antal rader kod.
Tittar man på ovan lista så ligger WordPress mycket bra till förutom sista punkten (men allt är ju relativt vad man jämför med). Men du bör även anamma lökprincipen:
 – Säkerhet skall likt löken byggas i flera lager, inte som en kedja. Faller ett lager finns det andra säkerhetsmekanismer som fortsätter skydda systemet. Källa
Så därför bör du även tänka på följande saker för att göra WordPress-säkrare:
  • Använd ej samma lösenord till WordPress som till övriga sajter/system.
  • Undvik kopplingar från WordPress-server till andra system. Använd gärna en molntjänst (ej delad db etc) som är frikopplad från övriga verksamhetssystem.
  • Undvik plugins – Om du vill använda plugins använd exempelvis enbart de som ingår i JetPack.me. Du kan även använda listan ovan för plugins, se till att de är uppdaterade exempelvis.
  • Använd https vid administration samt SCP eller motsvarande vid överföring av filer. Lägg till define('FORCE_SSL_ADMIN', true); i wp-config.php
  • Läs Hardening WordPress.
  • Uppdatera, uppdatera, uppdatera löpande både WordPress och underliggande operativsystem samt andra relaterade mjukvaror (exempelvis MySQL).
  • Säkra upp underliggande operativsystem samt databas. Minimera de privilegier som WordPress kan göra i MySQL.
  • Är personen som sätter upp WordPress och underliggande system kompetent?
  • Använd ett bra lösenord, byt namn på admin-kontot osv.
  • Teman (themes) kan även innehålla sårbarheter, se till att de också är uppdaterade och radera sådant du inte använder.
  • Håll koll på omvärlden – Din RSS-läsare bör minst innehålla WordPress.org News som uppdateras om någon allvarlig brist identifieras. Kan även rekommendera Sucuri-bloggen.
Nåväl, detta gav förhoppningsvis en liten insyn på några tänkvärda saker när det gäller WordPress och dess säkerhet. Lämna gärna en kommentar med det du tycker är viktigt eller om det är något jag har glömt.

WordPress prestanda 101

Under Sweden Social Web Camp så försökte jag på kort under en session tid förklara hur man kan analysera och hitta flaskhalsar i WordPress gällande prestanda. Så därför försökte jag här sammanfatta det jag pratade om på några rader.

Först och främst så bör du stänga av alla plugins och då se om prestandan fortfarande är dålig, för tyvärr finns det många dåliga plugins (se här då Computer Sweden intervjuade mig och Nikke, år 2009).

Okej, nästa grej att testa är att slå på något cache-plugin i form av W3 Total Cache eller WP Super Cache. Du kan även testa att ”städa upp” i databasen då många plugins lägger temporär eller onödig information i databasen (kommentera om du vet något plugin som gör detta).

Använder du ett cache-plugin så bör du även installera memcached samt titta i källkoden längst ner på sidan hur många SQL-anrop som cachas, exempelvis (skriver WP Super Cache också ut detta?):

Object Caching 730/765 objects using memcached

En annan grej man kan testa är att använda strace direkt från kommandotolken i Linux tillsammans med PHP, ungefär så här:

$ cd /min/blogg/

$ strace php index.php

Så får du lite loggrader utspottade på skärmen och om det står still länge på ett ställe så ser du exakt vad som händer på den raden. Samt så bör du även testa Xdebug så kan berätta exakt vilken rad i PHP-koden som går långsamt, tar lite tid att installera och använda.

Du kan även titta i MySQL:s slow-log som kan aktiveras på eller hittas i /etc/mysql/my.cnf (sök efter log_slow_queries).

Sist men inte minst det som jag brukar göra är att lägga upp Varnish som en front-end proxy framför Apache exempelvis, detta är en helt mer eller mindre transparent lösning. Kom även ihåg att Apache slukar massor av minne jämfört med Nginx som istället kan användas till memcached. Detta är nog det bästa tipset jag kan ge samt att testa använda ett CDN.

Sen finns det så klart mycket man kan göra på själva sidorna som WordPress spottar ut (sprites, javascript etc), men det är utanför detta blogginlägg.

Uppdatering: Glömde skriva två saker som jag nämnde på sessionen, dels är det att använda sig av en OP-code cache typ APC eller eAccelerator samt så kan även URL-strukturen i WordPress slöa ner prestandan.

Packlista inför Sweden Socal Web Camp

Om några dagar så bär det av till Tjärö och SSWC (Sweden Social Web Camp) där det kommer att avverkas en hel del intressanta sessioner såsom Tre vinklar av WordPresss, Visualisering av stora datamängder eller Offentlig sektor som plattform eller hur bra blev det egentligen med PSI-lagen.

Men, först måste man ju packa alla viktiga saker. Här kommer min lista:

  • Tält
  • Sovsäck
  • Uppblåsbar madrass (eldriven pump)
  • Öronproppar
  • Dator inkl. laddare & mus
  • Längre skarvkabel för utomhusbruk
  • Förgreningsdosa
  • iPhone-laddare
  • Extrabatteri till iPhone
  • Ögonskydd (om det skulle ljusa nätter)
  • Toalettartiklar såsom tvål, tandborste och tandkräm inkl. necessär
  • Våtservetter
  • Pannlampa
  • Hörlurar
  • Två varma tröjor
  • 4 x av följande: Kalsonger, tshirts, sockar och shorts
  • Regnkläder + stövlar om det finns risk för regn
  • Alkohol som ej behöver vara kall, såsom 3L-vinbox inkl. plastvinglas
  • Pengar i form av kontanter samt plastkort av olika typ
  • Visitkort
  • Två par handdukar
  • Badkläder
  • Varmare byxor
  • Silvertejp (eltejp?)
  • Mobila högtalare
  • Kudde
  • Jacka
  • Solglasögon
  • Solstol som även får plats i tältet
  • Plastpåsar i varierande storlek
  • Resorb och huvudvärkstabletter eller annat med ibuprofen
  • Vattenflaska
  • Extra par skor
  • Ryggsäck eller bärsäck beroende på hur mycket plats denna packning tar
  • Datorväska
  • Fickkniv
  • Koffeintabletter
  • Vattentät påse/väska
  • Nödproviant i form av nötter av olika sort

Så byggde jag Biståndet.se

Uppdatering: Läs även om lanseringen av OpenAID där jag var med.

Jag tänkte redovisa hur jag byggde webbtjänsten Biståndet.se på några få timmar. Först och främst så läste jag den dokumentation som återfinnes till OpenAID API:et. Efter detta så skrev jag ihop en funktion som utifrån en URL hämtar hem data över HTTP och cachar denna i Redis:

$redis = new Redis();

$redis->connect('127.0.0.1', 6379);

function fetch($url) {
  global $redis;
  if(!$c = unserialize($redis->get($url))) { // Check if query is cached
    $c = json_decode(safeJSON_chars(file_get_contents($url))); // JSON fetch and decode
    $ret = $redis->set($url, serialize($c));
  }
  return $c;
}

Funktionen safeJSON_chars hittas här och används för att filtrera bort skräptecken.

Sedan genomför jag en första hämtning av samtliga länder och dess tillhörande bistånd:

$c = fetch("http://api.openaid.se/api/v1/country?");

foreach($c as $key => $val) {

$title = $val->name;

osv..

insertpost($title,  $osv..);

}

Sedan använder jag funktionen wp_insert_post() för att göra ett inlägg direkt in i WordPress. Den som är observant ser att jag lagrar frågorna mot OpenAID i all evighet vilket ej bör göras.

SEO-Guide, WordPress MU, Lilla Gumman, MinKarta, ByBurt

Jim Westergren är nyss hemkommen från Bolivia och har startat SEO-Guide.se där du kan få tips och råd gällande SEO.

**

Andreas Karman skriver att WordPress MU ska integreras med WordPress.

**

Johanna har varit och besökt Googles högkvarter i San Francisco. Läs mer på Lilla gumman

**

Ted släpper en widget för minkarta.se samt så lyckas jag erhålla en månads prenumeration av DN genom att recsensera hotell på hotellkartan.se

**

ByBurt med bla. Gustav von Sydow och John Sjölander anordnade ett litet mingel och jag lyckas bli med på bild: flickr.com/photos/pd0/sets/72157618901171380/

**

Dan som tidigare var innehavare av Twitter.se får ett mycket långt brev gällande ATF-ansökan. Mycket bra skrivet (de har även undersökt sködpaddan noggrant).