peter.binderup.dk nu på egen server.

digitalocean-ssd-badgeWordPress er et nemt CMS at installere, og til dels at vedligeholde, men at få det til at køre stabilt og hurtigt er alt andet end “bare lige”.

I denne post vil jeg kort beskrive hvad jeg har gjort for at få mit site til at køre hurtigere. Det jeg har kunnet researche mig frem til er, at der ikke er én fejlsikret WordPress optimering man kan følge, da flere af tingene afhænger af det sted hvor man hoster, og hvordan de har opsat det miljø, som WordPress skal køre i.

Jeg har min generelle opsætning af mine hjemmesider ved Webfaction, som giver en ret stor fleksibilitet, som man normalt ikke ser ved andre shared hosts. Problemet er så bare, at der ofte er nogle brugere på ens server der “støjer” en del og bruger en masse ressourcer.

Mangel på ressourcer er ikke noget et WordPress site bryder sig om, så efter at have brugt en masse tid på at søge optimeringer på webfaction (diverse caching plugins, mod_pagespeed, Cloudfront CDN osv.) nåede jeg frem til, at jeg nok skulle til at give mig i kast med at hoste selv.

Amazon EC2

Amazon EC2 er ikke helt det mest brugervenlige at sætte op, men når det kommer til globale hjemmesider med høj kompleksitet, så er det nok et af de bedste bud. Problemet er blot, at det bliver ret dyrt for et lille website som de få stykker jeg hoster.

En klar fordel ved EC2 er at man har sikkerhedsgrupper man kan definere, så man allerede inden man starter ens image op har lukket op for kun præcist det man ønsker at lukke ind. Problemet er så, at dette er ikke super godt beskrevet, hvorfor man kan komme til at sidde i meget lang tid og undre sig over hvordan man får liv i port 80/443 på ens hjemmeside.

Til hobby projektet tror jeg ikke, at jeg vil anbefale EC2. Man får ganske enkelt for lidt ud at den pris det koster for at komme i gang.

Men med den test jeg kørte af det over nogle dage, der var der ikke nogle problemer med servicen, men den var ikke bedre end den næste, som koster langt mindre pr md, og hvor der ikke bliver sat begrænsninger ved performance hvis man presser maskinen lidt (http://riprowan.com/2012/06/14/the-problem-with-ec2-micro-instances/), hvilket vil presse en til hurtigt at blive nødt til at opgradere til en langt dyre Small instance.

Digital Ocean

Mens jeg sad og kiggede efter mulige steder hvor jeg kunne have mine hjemmesider liggende (var tæt på at tage Linode), så jeg på mange blogs at Digital Ocean ( https://www.digitalocean.com/?refcode=1c48f19dac28 ) blev nævnt som en rigtig god mulighed.

Kort fortalt er det et relativt nyt firma, som er gået ind på markedet, ganske billige, men også ret fornuftige løsninger.

De kører alle serverne på SSD diske, så hastigheden er helt i top når det kommer til læsning og skrivning på filsystemet. Denne hastighed har så også den fordel, at man kan “nøjes” med en mindre plan, men så gøre brug af disk swap. I den tid jeg har kørt setuppet har jeg på intet tidspunkt oplevet, at hjemmesiden bliver langsom.

Resten af dette indlæg er baseret på min erfaring med at flytte denne hjemmeside over på den mindste virtuelle server til 5 USD pr md.

Valget af server størrelse

Da jeg ikke ville binde mig til en for stor server, valgte jeg den absolut mindste (som det er muligt at ændre til en større pakke).

I skrivende stund giver den mindste pakke en server med 1 CPU, 512 MB ram, 20 GB lager og 1 TB trafik pr md.

Selve installationen af serveren tager ikke mange sekunder, og inden man har tjekket ens mail for det root password der bliver sendt ud, er serveren oprettet.

Opsætningen

Når man logger ind på serveren er nogle af de første ting man skal gøre at sørge for at firewall bliver sat op, så man holder “rosset” ude, og derefter er det en god idé at sørge for at systemet har en swap partition. Swap partitionen gør, at det måske ikke er nødvendigt at købe den større pakke da swapfilen jo ligger på en i forvejen meget hurtig SSD.

Når man lige er kommet ind: https://www.digitalocean.com/community/articles/initial-server-setup-with-ubuntu-12-04

Vejledning til firewall: https://www.digitalocean.com/community/articles/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server

Swap file: https://www.digitalocean.com/community/articles/how-to-add-swap-on-ubuntu-12-04

bemærk at det måske kan være en ide at læse kommentarerne da artiklen var skrevet på et tidspunkt hvor der ikke var 512 MB hukommelse i pakken, men kun det halve

LEMP opsætningen: https://www.digitalocean.com/community/articles/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-12-04

Jeg har valgt at bruge Nginx som webserver i stedet for Apache. Det alene ud fra den grund at Nginx er voldsom hurtig, og i flere optimeringssøgninger vedr WordPress bliver nævnt som et rigtig godt sted at starte for at gøre hastigheden markant bedre.

Jeg krydre så også LEMP opsætningen med Fastcgi_cache (http://rtcamp.com/wordpress-nginx/tutorials/single-site/fastcgi-cache-with-purging/) kræver et ekstra plugin i wordpress (http://wordpress.org/plugins/nginx-helper/) for a virke fornuftigt med caching, og så hjælper det også med Permalinks.

WordPress opsætningen: https://www.digitalocean.com/community/articles/how-to-install-wordpress-with-nginx-on-ubuntu-12-04

Sørme om Digital Ocean ikke også har en vejledning til WordPress på Nginx.

Herefter er det bare at give sig i kast med at opsætte ens wordpress med de plugins og indhold man måtte ønske.

 

2 tanker om "peter.binderup.dk nu på egen server."

    1. peter_binderup Forfatter

      For mig er det lidt smag og behag.

      Når jeg laver vejledende artikler, så foretrækker jeg de lange URL’er (specielt hvis der er flere links brugeren skal følge for at få den korrekte opsætning).

      Noget andet er at jeg ofte sidder i Google Drive og skriver teksten, og der paster jeg altid de fulde links ind, og så griber dovenskaben ind, og jeg orker ikke at finde på en fornuftig linktekst 🙂

      Men i denne post var det med fuld overlæg, da jeg føler at linkets egen tekst fremhæver det man lander på.

      Svar

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *