FS Data

FS Data - webbhotell, domännamn, e-post, servrar


  • Om oss

  • Blogg

  • Panel

  • Webbmail

  • Support

mar 22 2013

Guide till en blixtsnabb WordPress-server

Även om våra webbhotellspaket är väldigt snabba och väl anpassade för WordPress så kan man ibland behöva något lite extra för att snabba upp sin WordPress-sida. Vi tänkte därför visa hur man sätter upp en blixtrande snabb WordPress-server, med de allra senaste tekniska programmen på marknaden.

Även om det är enkelt att följa denna guide så bör man ändå ha viss vana av att hantera en Linux-server sedan tidigare. Vi kommer köra program såsom MariaDB, Nginx, PHP-FPM och Redis på servern. Det är extremt snabba och optimerade program, men de kan även orsaka huvudvärk om man inte kan hantera dem ordentligt.

Använd denna guide på egen risk. 🙂

Vår kundtjänst har inte möjlighet att erbjuda support på denna installation, men ni får gärna lämna en kommentar här nedan om ni har några frågor. Om ni har förslag på förändringar/förbättringar i denna guide så mottas det givetvis tacksamt (och kan leda till fortsatta uppdateringar av denna guide).

Till vår WordPress-server använder vi en snabb och kraftfull VPS hos FS Data med Linux Ubuntu 12.04 som operativsystem. Samtliga kommandon nedan körs inloggad på servern via SSH som root-användare.

Guide till en blixtsnabb WordPress-server

Uppdatera servern

Börja med att uppdatera servern. Detta bör man fortsättningsvis göra åtminstone en gång i veckan.

apt-get update && apt-get upgrade

Om frågor uppstår under uppdateringen, svara ja på dessa. Det gör man antingen genom att trycka på Y eller enter-knappen. Detsamma gäller samtliga kommandon nedan, om inte annat anges.

Installera MariaDB

Vi börjar med att installera databasservern MariaDB, istället för MySQL. MariaDB är en snabbare databasserver än MySQL. Den utvecklas aktivt under ledning av tidigare MySQL-utvecklare och är fullt binärkompatibel med MySQL.

apt-get install python-software-properties
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
add-apt-repository 'deb http://mirror.netcologne.de/mariadb/repo/5.5/ubuntu precise main'
apt-get update
apt-get install mariadb-server

Ange ett säkert lösenord för root-användaren när detta efterfrågas.

Därefter säkerställer vi databasservern genom att ta bort databas/användare som skapas automatiskt med installationen av MariaDB. Vi tar även bort möjligheten till fjärranslutning mot databasservern som root-användare.

mysql_secure_installation

Följ instruktionerna på skärmen. Om du har angivit ett säkert lösenord så behöver du inte byta detta. Övriga frågor kan du svara ”Y” på.

Installera Nginx och PHP-FPM

Som webbserver använder vi Nginx istället för Apache. Nginx är mycket snabbare och mindre resurskrävande än Apache. WordPress fungerar alldeles utmärkt med Nginx, med vissa justeringar. För PHP använder vi PHP-FPM, av säkerhets- och prestandaskäl.

apt-get install nginx
apt-get install php5-cgi php5-cli php5-common php5-curl php5-fpm php5-gd php5-imap php5-mcrypt php5-mhash
php5-mysql php5-pspell php5-remctl php5-sqlite php5-suhosin php5-svn php5-tidy php5-xmlrpc php5-xsl
php-pear php-apc

Listan med PHP-tillägg ovan kan givetvis minskas om man så önskar det (för ännu bättre prestanda).

– Konfigurera Nginx

Nginx är rätt bra konfigurerad redan från början. Vi behöver därför bara göra några mindre justeringar.

nano /etc/nginx/nginx.conf

Uppdatera/lägg till följande variabler:

worker_connections 1024;
client_max_body_size 25m;

Avkommentera även samtliga rader som inkluderar gzip. Med gzip-stödet komprimeras samtliga filer, vilket ger en avsevärd förbättring av hastigheten på WordPress.

– Konfigurera PHP

Den observante såg att vi installerade PHP-tillägget APC. Till detta cache-tillägg tilldelar vi 256 MB minne så här:

echo "apc.shm_size="256"" >> /etc/php5/conf.d/apc.ini

Öppna därefter filen /etc/php5/fpm/php.ini med valfri textredigerare och uppdatera följande värden:

memory_limit = 128M
max_execution_time = 120
max_input_time = 300
post_max_size = 25M
upload_max_filesize = 25M

Lägg även in detta i slutet av filen:

cgi.fix_pathinfo = 0

Förändringarna i php.ini ger WordPress mer tid till att avsluta script, minskar eventuell minnesförlust och ökar storleken på filer som man kan ladda upp. Variabeln som läggs till i slutet kan ställa till problem med WordPress, det är därför vi inaktiverar den.

Lägg upp en webbsajt

Nu är det dags att skapa en WordPress-sajt på servern. Av säkerhetsskäl så kör vi denna sajt med en egen användare. På så sätt begränsas rättigheterna samtidigt som man bl a får möjlighet att logga in via SFTP med sin egen användare. I nedanstående instruktioner får ni byta ut exempel_se och exempel.se mot era egna användarnamn och domännamn.

adduser exempel_se

Välj ett säkert lösenord och tryck på enter-knappen för övriga frågor. Därefter skapar vi en databas för sajten.

mysql -u root -p

Ange det tidigare valda lösenordet för root-användaren till MariaDB. Väl inloggad, kör följande kommandon:

CREATE DATABASE exempel_se;
GRANT ALL PRIVILEGES on exempel_se.* TO "exempel_se"@"%" IDENTIFIED BY "lösenord";
FLUSH PRIVILEGES;
EXIT;

Byt givetvis ut ”lösenord” mot ett eget lösenord.

Nu ska vi skapa en PHP-konfiguration för webbsajten. Men vi börjar med att flytta undan standardkonfigurationen.

cd /etc/php5/fpm/pool.d/
mv www.conf ../

Sedan skapar vi en konfiguration för sajten med valfri textredigerare.

nano exempel.se.conf

Lägg in följande text och spara denna fil:

[exempel.se]
listen = 127.0.0.1:9000
listen.backlog = -1
listen.owner = exempel_se
listen.group = exempel_se
listen.mode = 0666
user = exempel_se
group = exempel_se
pm = dynamic
pm.max_children = 15
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 5
pm.max_requests = 50
request_slowlog_timeout = 60s
slowlog = /var/log/php-fpm.log.slow

De värden som anges i PHP-konfigurationen bör anpassas beroende på hur mycket minne man vill använda för PHP. Med denna konfiguration används ca 1 GB RAM-minne (i kombination med APC-cachen).

Därefter skapar vi konfigurationen för webbsajten i webbservern (Nginx).

nano /etc/nginx/sites-enabled/exempel.se

Nedanstående konfiguration gäller för en sajt, i kombination med PHP-konfigurationen ovan. Konfigurationen anger även denna sajt som standardsajt på servern, så att man kan surfa in till den direkt via sin egen IP-adress (med värdet ”default” under listen).

Om man vill ha fler sajter på samma server (och inte köra dem i ett WordPress-nätverk) så behöver man ändra portnummer för ytterligare sajter. Här använder vi t ex portnummer 9000. För extra sajter, öka detta till 9001, 9002 osv. Glöm inte bort att exkludera ”default” för extra sajter.

server {
listen 80 default deferred;
server_name exempel.se *.exempel.se;
index index.php;
charset utf-8;
root /home/exempel_se/exempel.se;

location / {
try_files $uri $uri/ /index.php?$args;
}

rewrite /wp-admin$ $scheme://$host$uri/ permanent;

location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}

rewrite /files/$ /index.php last;

if ($uri !~ wp-content/plugins) {
rewrite /files/(.+)$ /wp-includes/ms-files.php?file=$1 last;
}

if (!-e $request_filename) {
rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
rewrite ^/[_0-9a-zA-Z-]+.*(/wp-admin/.*.php)$ $1 last;
rewrite ^/[_0-9a-zA-Z-]+(/.*.php)$ $1 last;
}

location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
}

Ovanstående konfiguration anpassas givetvis efter eget användarnamn och domännamn. Konfigurationen fungerar med både en vanlig WordPress-sida och WordPress Multisite (nätverkssida).

Installera WordPress

Nu ska vi lite snabbt hämta ner och installera WordPress. För att automatiskt få den senaste versionen av WordPress så använder vi subversion. I dagsläget fungerar inte subversion med WordPress-översättningar, så där behöver man kontrollera senaste version och anpassa installationen därefter (vi hämtar den svenska översättningen för WordPress 3.5.1 här nedan).

apt-get install subversion
mkdir /home/exempel_se/exempel.se && cd /home/exempel_se/exempel.se
svn co http://core.svn.wordpress.org/tags/3.5.1/ .
mkdir wp-content/languages && cd wp-content/languages/
wget http://svn.automattic.com/wordpress-i18n/sv_SE/tags/3.5.1/messages/sv_SE.mo
cd -
mv wp-config-sample.php wp-config.php
nano wp-config.php

Ange uppgifterna för din databas. För att aktivera det svenska språkstödet, ändra denna variabel:

define ('WPLANG', 'sv_SE');

Spara och stäng wp-config.php. Denna fil kan med fördel även flyttas en mapp nedåt (av säkerhetsskäl). Dessutom så behöver vi sätta rätt ägare till samtliga WordPress-filer.

cd ..
mv exempel.se/wp-config.php .
chown -Rf exempel_se:exempel_se *

Nu är WordPress installerat och klart. Det enda som kvarstår är att slutföra installationen via WordPress webbgränssnitt.

För att våra ändringar av Nginx och PHP-FPM ska träda i kraft så behöver vi ladda om dessa tjänster. Så här gör vi det:

service nginx reload
service php5-fpm reload

Därefter är det bara att surfa till IP-adressen för servern och ange de uppgifter som där efterfrågas av WordPress. Om du har en WordPress-sida som du vill importera till denna nya server så är det en bra idé att göra det nu.

– Kort om tillägg

Installera inga WordPress-tillägg för cache (såsom WP Super Cache, W3 Cache osv). Cachen på denna server hanteras separat, via Redis, och konflikter kan uppstå med cache-tillägg.

Installation av WordPress-tillägget nginx Compatibility rekommenderas. Detta löser omskrivningar i WordPress med Nginx (WordPress är från grunden anpassat för omskrivningar med Apache).

WordPress-tillägg som är väldigt beroende av funktioner i Apache kanske inte fungerar med denna server. Det är som sagt en väldigt optimerad och specialanpassad server, så installera och testa nya tillägg på egen risk.

Installera och konfigurera Redis

Istället för en traditionell cache med WordPress-tillägg så ska vi köra Redis. Redis är en lokal cacheserver som lagrar data i RAM-minnet för maximal hastighet i t ex WordPress. Inspiration till detta kommer från Jim Westergrens utmärkta guide till WordPress med Redis.

Börja med att installera Redis.

apt-get install redis-server

Redis kommer att ligga och köra som en servertjänst i bakgrunden. För att kommunicera med denna server så använder vi PHP-biblioteket Predis.

cd /home/exempel_se/exempel.se/
wget http://uploads.staticjw.com/ji/jim/predis.php

Därefter ska vi ersätta WordPress egen index.php med en Redis-anpassad index-sida. Kopiera denna all text:

Skapa sedan en fil som heter index-with-redis.php.

nano index-with-redis.php

Klistra in den kopierade texten och spara filen. Som du kan se så finns det tre variabler som man kan definiera i toppen av denna fil. Testa gärna att t ex sätta debug-flaggan. Filen innehåller även information om hur man hanterar cachen (missa inte det).

Därefter tar vi en backup på den ursprungliga index-sidan och ersätter den med vår Redis-sida.

cp index.php index-backup.php
cp index-with-redis.php index.php
chown exempel_se:exempel_se *

Den enda egentliga nackdelen med att köra cache i WordPress med Redis, det är att man måste ersätta index-sidan varje gång man har uppdaterat till en ny version av WordPress (då index.php ersätts med uppdateringen).

Om du har satt debug-flaggan i din nya index-fil så är det bara att surfa till din WordPress-sida och njuta av den minimala laddningstid som visas längst ner på sidan.

Några avslutande ord

Det tål att upprepas att denna guide inte bör följas om man saknar grundläggande kunskap om Linux och inte är beredd att lägga ner en hel del tid på att lära sig mer om de olika programvarorna angivna ovan. Det finns utrymme för optimeringar och förbättringar, men med denna installation till grund så kommer man väldigt långt, väldigt snabbt.

Faktum är att ovanstående guide kommer att användas för det populära och vältrafikerade humornätverket Skyltat.se, som ligger på en VPS hos FS Data. När detta WordPress-nätverk är migrerat (tester pågår just nu) så kommer mer information och laddningstider även att läggas in här.

Lämna gärna en kommentar nedan om du har några frågor eller om du har förslag till ytterligare förbättringar!

Written by · Categorized: VPS, WordPress · Tagged: Blixtsnabb, Cache, Guide, MariaDB, Nginx, PHP-FPM, Redis, Server, VPS, WordPress

aug 01 2011

Vad kan man göra med en VPS?

Som vi har berättat tidigare så finns det både fördelar och nackdelar med en egen VPS (virtuell server). Om man inte vill behöva bry sig, utan bara vill att allt ska fungera och uppdateras automatiskt, så är ett webbhotell att föredra. Men om man är lite nyfiken, vill ha full frihet eller bara tycker om att testa saker så är en VPS ett bättre alternativ.

Faktum är att en VPS inte bara behöver användas till en klassisk LAMP-miljö (Linux, Apache, MySQL och PHP) för hemsidor osv. Med en VPS är det egentligen bara din fantasi som sätter gränserna. Här är några exempel på vad man kan göra med en egen VPS:

– Kör ett fjärrskrivbord

En VPS är i princip som vilken dator som helst (om än med bättre uppkoppling/prestanda). Det innebär att man kan installera/använda ett vanligt användargränssnitt med webbläsare, e-postprogram osv. Med ett fjärrskrivbord är det enkelt att t ex testa hur en hemsida uppfattas och fungerar utifrån sett. Det kan även användas för att t ex skapa manualer för programvaror/operativsystem man inte kör på sin egen dator.

– Testa något helt annat

Har du hört talas om CouchDB, Redis, Mercurial, Cassandra, Scala, Nginx, MariaDB eller Clojure? Med en VPS är du inte begränsad till MySQL, Apache, PHP osv utan kan fritt testa och använda en massa olika tekniska plattformar och lösningar. Det kanske t om är dags att damma av de gamla Erlang-kunskaperna?

– Sätt upp en spelserver

Man behöver inte ta allt på med stort allvar. Så varför inte sätta upp en spelserver för dig och dina vänner? Med en egen server kan ni spela Minecraft, Counter-Strike eller något annat spel utan att störas av otrevliga motspelare. För en spelserver är låg ping väldigt viktigt och det är givetvis något som alla våra VPS:er erbjuder.

– Kommunicera med omvärlden

Skype, MSN, ICQ m.m. i all ära; ibland är det en fördel att kunna kommunicera utan externa leverantörer. Med en VPS kan du sätta upp en egen IRC-, Ventrilo- eller VoIP-server och kommunicera helt ostört. Med full kontroll kan du ordna bra loggar, statistik och allt möjligt trevligt. Allt på dina egna villkor.

Det här är bara några av de saker som en egen VPS kan erbjuda. Om du vill lärda dig hur man installerar något av det som har nämnts här ovan, testa då bara att googla t ex ”lösning setup” (ersätt lösning med det du vill installera).

Kör du något roligt på en VPS, som vi inte har med här? Lämna gärna en kommentar om det!

Du har väl inte missat att vi erbjuder 50 % rabatt på våra VPS:er just nu? Erbjudandet är tidsbegränsat, så passa på och beställ din egen VPS idag!

Written by · Categorized: VPS · Tagged: Apache, Cassandra, Clojure, CouchDB, Counter-Strike, Erlang, Fjärrskrivbord, Frihet, MariaDB, Mercurial, Minecraft, MySQL, Nginx, PHP, Redis, Scala, Server, VNC, VPS, Webbhotell

© 2025 FS Data AB | Priser exkl. moms