Andrei Chira

Blog personal

Cum îți faci un CDN pentru WordPress

Am promis ca o sa scriu un articol despre cum iti poti face singur un CDN pentru site-ul tau WordPress ca sa te pregatesti de Black Friday asa ca hai sa vedem cat de greu e.

Nu e vorba de un CDN propriu-zis, in sensul ca nu o sa ai o distributie geografica, dar daca ai doar vizitatori din Romania nu ai nevoie de distributie geografica.

Chestia asta e similara cu WordPress Accelerator-ul celor de la StudioPress, insa e o varianta rudimentara, fara un panou de control fancy.

Primul pas este sa iei un VPS fara management pe care sa ai acces root. Eu am testat pe Digital Ocean, cel mai ieftin server costa $0.007 pe ora, deci intr-o saptamana de Black Friday n-o sa cheltui mai mult de $2.

Ne logam ca root pe server si incepem…

Step 1. install nginx

apt-get install nginx

Step 2. mergi in folderul /etc/nginx/conf.d si fa backup la fisierele conf

mkdir backups
mv *.conf backups

Step 3. Creeaza un nou fisier conf

nano pass.conf

Step 4. Introdu textul urmator in fisier (inlocuieste domain.com cu domeniul tau)

server {
listen 80;
server_name cdn.domain.com;
location ~* \.(gif|jpg|jpeg|png|wmv|avi|mpg|mpeg|mp4|htm|html|js|css|mp3|swf|ico|flv)$ {
expires max;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass ;
proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
proxy_store /var/www/cache$uri;
proxy_store_access user:rw group:rw all:r;
}
}

Step 5. Salveaza cu ctrl+x, y si Enter. Verifica cu nginx -t daca nu exista erori

nginx -t

Step 6. Adauga Nginx la startup

update-rc.d nginx defaults

Step 7. Porneste Nginx

service nginx start

Step 8. Creeaza un folder /var/www si seteaza permisiunile

chown -R www-data:www-data /var/www/cache/

Step 9. Creeaza un subdomeniu cdn.domain.com si aloca IP-ul serverului

In editorul DNS al domeniului tau adauga o intrare A pentru cdn.domain.com cu IP-ul VPS-ului.

Step 10. Instaleaza pluginul CDN Linker

Descarca pluginul de pe github, instaleaza-l si activeaza-l in WordPress apoi seteaza la CDN url-ul cdn.domain.com

Se mai poate folosi si CDN Enabler, WP Super Cache sau W3 Total Cache, nu mai retin acum dar cred ca W3 Total Cache are optiune de Purge.

Final

Viziteaza cateva pagini ale site-ului, verifica daca se afiseaza corect, verifica sursa paginii pentru a vedea daca se incarca de pe CDN elementele statice.

Poti intra si pe VPS ca sa verifici daca s-a populat folderul var/www/cache. Daca da, inseamna ca totul e ok.

Asta-i tot!

8 răspunsuri

  1. Avatar garetbora
    garetbora

    Ce pacat ca nu vorbesc aceeasi limba.

  2. Avatar Yamasha

    Super, merci :)

  3. Avatar George Jipa
    George Jipa

    Pentru stergerea cache-ului, trebuie sa ai HttpLuaModule activat si poti face ceva de genul (n-am verificat sintaxa, o scriu din amintiri… dar e un pct de plecare):

    location /delete-cache {
    content_by_lua ‘os.execute(„rm -rf /var/www/cache/*”)’;
    }

    Apoi accesezi cdn.domain.com/delete-cache. De asemenea, daca vrei sa fie ceva mai safe… se poate adauga autentificare http, ori accesare pe baza de IP.

    http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html
    http://nginx.org/en/docs/http/ngx_http_access_module.html

    Si pornind de la accesarea pe baza de IP, in config-ul nginx al cdn-ul se adauga ip-ul blogului. Apoi se face un plugin simplu care sa se conecteze la URL si sa poata fi accesat via dashboard. De fiecare data cand vrei sa stergi cache… just press the right button! Endless ideas! :D

    1. Avatar Andrei Chira
      Andrei Chira

      Ehe, ce bine e sa fii programator. :)

    2. Avatar Catalin

      Si accesarea respectiva se poate baga banuiesc intr-un Cronjob, cu un timer si sanatate :) Sau gresesc eu ?

    3. Avatar George+Jipa
      George+Jipa

      Da, se poate pune si intr-un cronjob… cu wget / curl catre path-ul respectiv. :)

  4. Avatar Catalin

    Sau pentru toate astea, folosesti CloudFlare, care ofera si CDN Geolocalizat etc.. Cel putin pentru a evita excesul de trafic care vine de Black Friday.

  5. Avatar Malin

    Sau poti sa-ti iei un VPS mai puternic sau chiar un server dedicat si ai resurse si fara sa te complici, iar daca intr-adevar te astepti la spike-uri de trafic severe poti merge pe un build de local caching si folosesti Apache sa servesti paginile, nginx sa gestionezi straficul, iar Varnish pentru cache.
    Pentru cPanel/WHM a existat un plugin ce facea treaba asta, dar fiindca s-a dovedit extrem de vulnerabil nu prea-l mai foloseste si recomanda nimeni.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *