Optimizați Magento în Cloud

În acest tutorial de urmărire, vom optimiza Magento, vom adăuga o memorie cache Redis, un alias SSL și DNS, apoi vom scala aplicația pentru benchmarking și producție. Următoarele presupun că ați folosit deja primul tutorial pentru a lansa o aplicație de bază pentru cloud Magento pe Pagoda Box. Gata de optimizare?


cerinţe

Puteți descărca codul terminat pentru acest tutorial sau instalați Magento dintr-o pornire rapidă pentru a testa un site de lucru.

  • Un cont de Pagoda Box (gratuit)
  • O instalare locală Magento funcțională
  • Software de dezvoltare locală (MAMP sau WAMP)
  • Git instalat (Poate utiliza SFTP)
  • Clientul Terminal Pagoda instalat

Târg Avertisment: Pagoda Box nu este hosting tradițional. Acest tutorial nu numai optimizează Magento, ci pune bazele unui flux de lucru progresiv de integrare continuă.


Pasul 1: Activați cache-ul eAccelerator, XCache sau APC

Activarea unei cache-uri Bytecode va optimiza performanța, în special cu baze de date mari precum Magento. Ați putea folosi eAccelerator sau XCache bytecode caching, dar Magento recomandă APC. Pentru a activa APC, pur și simplu adăugați-l la lista de extensii php din Boxfile după cum urmează:

 web1: php_extensions: - apc

Noul dvs. Boxfile ar trebui să arate astfel:

 web1: nume: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - curl - .xml app / etc / local.xml "cron: -" * / 15 * * * * ":" curl -s -o / dev / null http://magento.pagodabox.com/cron.php "db1: : tipul mag-db: mysql

Pasul 2: Creați o componentă Redis

Implicit, sesiunile Magento din Pagoda Box se găsesc în spațiu de stocare scris și sunt accesibile tuturor instanțelor web. Acest tutorial mută sesiunile la Redis, un magazin avansat de valoare-cheie. Redis oferă cache-ul extrem de puternic în memorie, asociat cu date persistente pentru o performanță mult mai bună de citire, scriere și sesiune.

Creați o memorie cache Redis din fișierul Box

Mai întâi, activați extensia Redis adăugând - Redis la lista extensiilor din Boxfile, la fel cum am făcut pentru APC. Acest lucru permite componentelor dvs. PHP să se conecteze cu Redis. Adăugați, de asemenea, o componentă cache Redis la fișierul dvs. de box, după cum urmează:

 cache1: nume: mag-cache tip: redis

Boxul dvs. actualizat ar trebui să arate astfel:

 web1: nume: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - /local.xml app / etc / local.xml "cron: -" * / 15 * * * * ":" curl -s -o / dev / null http://magento.pagodabox.com/cron.php "db1 : nume: mag-db tip: mysql cache1: nume: mag-cache tip: redis

Atunci când o componentă Redis este inclusă în Boxfile, o cache Redis este adăugată automat la infrastructura dvs. atunci când implementați actualizări.

Alternativă: Creați o memorie cache Redis din tabloul de bord

De asemenea, puteți crea o memorie cache Redis din tabloul de bord Pagoda Box. Tabloul de bord este, de asemenea, în cazul în care scalați componenta Redis.

Mai întâi, dați clic pe "Adăugați cache" în tabloul de bord.

... apoi alegeți Redis.

Odată ce noua componentă cache a fost instalată, faceți clic pe ea în tabloul de bord, apoi alegeți suma preferată a RAM după cum urmează:

Datele sunt persistente la Redis, astfel încât să puteți redimensiona memoria cache fără a pierde sesiunile sau datele cache stocate în memorie, spre deosebire de Memcache.


Pasul 3: Configurați Magento pentru sesiunile Redis și Cache

Acest tutorial împărtășește o singură componentă Redis pentru sesiunile Magento și cache. Dacă site-ul dvs. primește suficient trafic, crearea unui component separat Redis pentru ambele sesiuni și cache poate oferi o măsură suplimentară de performanță.

Redis sesiuni

Configurați sesiunile Magento pentru a utiliza Redis.

Dacă vreodată trebuie să înlocuiți fișierele implicite Magento (cum ar fi aici), nu modificați fișierele de bază ale Magento. Înlocuiți fișierele ar trebui să locuiască întotdeauna în directorul local Magento pentru a proteja funcționalitatea și viitoarele upgrade-uri.

  • Editați secțiunea handler de sesiune a dvs. local.xml fișier pentru a utiliza Redis și setați calea de salvare a sesiunii după cum urmează:

      
  • Apoi, adăugați suportul Redis către Magento prin suprimarea unui fișier Magento de bază. Copiați fișierul:

     app / code / core / Mage / Core / model / sesiune / Abstract / Varien.php

    Apoi creați propria versiune locală la:

     app / code / local / Mage / Core / model / sesiune / Abstract / Varien.php

    În noul fișier, în jurul liniei 62, adăugați următoarele:

     caz "redis": ini_set ('session.save_handler', 'redis'); session_save_path ($ this-> getSessionSavePath ()); pauză;

Redis cache

Acum, configurați cache-ul Magento pentru a utiliza Redis, de asemenea.

  • Adăugați biblioteca Credis și modulul Cm pentru a activa Redis ca cache Magento. Modulul constă dintr-un fișier, pe care îl puteți descărca aici. Deși autorul modulului Cm recomandă instalarea prin modman, modman nu înregistrează corect toate submodulele cu Pagoda Box. În schimb, salvați fișierul ca: app / code / comunitate / Cm / Cache / backend / Redis.php.

    Adăugați biblioteca Credis ca submodul Git în proiectul dvs.:

     $ cd your_site_dir $ git submodul adăugați git: //github.com/colinmollenhour/credis.git lib / Credis
  • Încă o dată, editați local.xml fişier. Modificați delcararea cache-ului și conținutul acestuia după cum urmează:

      Cm_Cache_Backend_Redis  tunnel.pagodabox.com 6379 0 0 0 1 1 20480 gzip  
  • Setarea viitorului îndepărtat expiră pentru a reduce drastic numărul de solicitări per vizitator pe măsură ce răsfoiesc site-ul dvs. Faceți acest lucru după terminarea lucrărilor tematice frontend. Adăugarea următoarelor static_expire directivă web1 secțiunea din fișierul dvs. cu fișiere va expira în memoria cache-urilor active după 1 an.

     web1: static_expire: 31536000
  • Adăugați fișierele actualizate la git, comiteți și împingeți la Pagoda Box.

     $ git add. $ git commit -m 'instalat și configurat redis' $ git push pagoda - toate
  • După instalare, ștergeți memoria cache a sistemului Magento conectându-vă la adminul Magento și mergând la System -> Cache Management, apoi făcând clic pe 'Flush Magento Cache'.

NOTĂ: Evitați JS & CSS în spațiul de stocare scris

Magento are câteva utilitare de optimizare care îmbină fișierele javascript și css, apoi le plasează în spațiul de stocare partajat partajat al Pagoda Box. De cele mai multe ori, aceasta este o problemă, dar la un volum mare de trafic, Pagoda Box poate accesa fișiere din instanțele distribuite web mult mai repede decât fișierele din spațiul de stocare partajat. Pentru performanța ridicată a traficului, păstrarea javascript și css în repo depășește minificarea.

Pentru a dezactiva fuzionarea fișierului, conectați-vă la panoul de administrare Magento, apoi navigați la: System> Configuration> Developer

Alegeți "Nu" în Setări JavaScript și Setări CSS după cum urmează:


Pasul 4: Verificați că Redis funcționează

Acum, că Magento este configurat pentru Redis, verificați dacă totul funcționează. Urmați acest ghid Redis pentru a stabili un tunel securizat, apoi utilizați terminalul pentru a accesa Redis pe Pagoda Box. După conectare, executați următoarea comandă pentru a afișa o listă cu toate cheile stocate.

 Cheile $ *

Presupunând că ați navigat pe site-ul dat, ar trebui să vedeți o listă cu chei asortate. Dacă vedeți numai cheile de sesiune, numai cheile de memorie cache sau dacă nu vedeți deloc chei, consultați setările de configurare și asigurați-vă că ați șters memoria cache Magento.

Pentru o listă completă de comenzi utile atunci când utilizați Redis, consultați documentația oficială.


Pasul 5: Adăugarea DNS / SSL

Piggyback SSL este gratuită și automată pentru fiecare aplicație din Pagoda Box la subdomeniul aplicației (appname.pagodabox.com). În timp ce este posibil să facem o comparație utilizând Piggyback SSL, vom permite SSL terță parte pentru scopurile tutorialului. Certificatele Wildcard și SSL cu semnătură automată sunt detaliate în acest ghid DNS / SSL.

Adăugați SSL

Începeți prin a da clic pe butonul "Adăugați un certificat SSL" sub fila DNS / SSL din tabloul de bord Pagoda Box.

Apoi, alegeți dacă creați un certificat sau utilizați un certificat SSL existent, deoarece suntem aici. Presupunând că aveți un certificat existent, faceți clic pe "Transferul existent".

În cele din urmă, lipiți informațiile relevante în câmpul corespunzător și activați. Certificatul dvs. SSL este salvat acum împreună cu aplicația.

Adăugați un Alias ​​DNS

După ce ați introdus un certificat SSL, acesta va apărea în lista dvs. de certificate SSL disponibile. Dacă nu ați făcut deja acest lucru, adăugați-vă propriul domeniu ca un Alias ​​DNS la aplicația dvs. Faceți clic pe "Adăugați alias nou" și introduceți domeniul dvs. înregistrat ca alias. Pagoda Box va atribui în mod implicit o adresă IP partajată, dar aceasta se va schimba atunci când asociați un certificat SSL cu DNS Alias.

În cele din urmă, asociați-vă certificatul SSL cu aliasul DNS selectând-l din lista verticală SSL de lângă Alias ​​DNS, apoi dați clic pe "Salvați". Cu certificatul SSL legat de Alias ​​DNS, aliasul dvs. obține o adresă IP dedicată și dedicată.

După ce asociați un certificat SSL cu un alias DNS, acest alias va primi o adresă IP dedicată. Asigurați-vă că ați verificat dacă înregistrarea dvs. A-corespunde cu adresa IP furnizată după ce adăugați, ștergeți sau modificați certificatele SSL.


Pasul 6: Benchmark cu Blitz.io

Am folosit Blitz.io pentru a evalua câteva aplicații Magento. Acesta testează atât răspunsul http, cât și baza de date scrie folosind URL-uri cu liste variabile și cookie-uri.

Pentru a începe, creați un cont gratuit pe Blitz.io. Odată ce v-ați înregistrat, căutați "START!" butonul din partea de jos a paginii dvs. de întâmpinare.

Faceți clic pe "Start", iar Blitz va oferi o serie de tutoriale simple care explică variabilele pe care le veți utiliza într-o adresă URL de interogare pentru a testa aplicația. Pentru scopurile noastre, adresa dvs. de bază pentru interogări ar trebui să arate astfel:

 -p 1-24: 60 -r california -T 4000 -v: lista cookie [d1b1530ff8694817e1f11f55e0a4a120,805d9a11f3b9f8ea35ee2db1d9aac3fc] -v: url lista [index.php, furniture.html, ottoman.html, about-magento-demo-store, checkout / cart / add? produs = 51] -b "my-cookie = # cookie Ó http://magento-demo.pagodabox.com/#urls

În mod specific, această interogare va testa treptat 1-24 de vizitatori concurenți (poate testa la 250 cu cont gratuit) peste 60 de secunde, din California, timp de 4 secunde. De asemenea, interogarea stabilește o listă de cookie-uri și adrese URL ca variabile, plus domeniul pe care îl testați. Am inclus o pagină de pornire, o pagină CMS, o pagină de catalog, o pagină de produs și o pagină de verificare pentru a testa.

Folosind variabilele Cookie și un URL de produs pentru checkout / cart / add? Ne permite să testați scrierea DB. Obțineți o listă de module cookie valide prin navigarea pe site-ul dvs. în Chrome> Inspectați elementul> Resurse> Cookies> [site-ul dvs.]> frontend. Copiați cheia din coloana Valoare, după cum se arată mai jos:

Înlocuiți cookie-urile, URL-urile și Domeniul de la interogarea URL de mai sus cu elementele corespunzătoare de pe site-ul dvs., apoi introduceți noua interogare pe Blitz.io și faceți clic pe "Run".

Prima dată când "Rush" aplicația, Blitz va afișa o eroare de autorizare și vă va cere să dovedească proprietatea adăugând o anumită adresă URL aplicației dvs. Urmați instrucțiunile Blitz de pe ecran pentru a crea un fișier de autorizare unic pe computerul dvs. local, apoi împingeți modificările în Pagoda Box.

 $ git add. $ git commit -m "fișier auth blitz" $ git push pagoda - toate

Confirmați că noul fișier este instalat vizitând adresa URL într-un browser. Ar trebui să vedeți "42". Rețineți că "rădăcina directorului www" este rădăcina proiectului dvs., dacă nu ați configurat-o DOCUMENT_ROOT în fișierul dvs. de box pentru a fi un alt director.

Odată ce totul este în vigoare, puteți să reglați variabilele Blitz și să le testați. De exemplu, schimbarea 1-24 la 60-60 va schimba concurentul de la o creștere graduală la 24 concurență la 60 de vizitatori concurentă susținută. Izolarea adreselor URL din lista de variabile vă permite să identificați blocajele de performanță prin izolarea diferitelor tipuri de pagini. Puteți chiar să testați capacitatea de scriere a datelor prin utilizarea funcției checkout / cos / add? URL-ul.

Desigur, benchmarking-ul este pur și simplu un indicator care ajută la scalarea aplicației. Asigurați-vă că scalați la diferite nivele pe măsură ce evaluați, notând schimbarea rezultatelor (consultați videoclipul Scaling Magento). Blitz.io ar trebui să vă ajute să identificați blocajele aplicațiilor și să stabiliți scara adecvată pentru traficul preconizat.


Pasul 7: Scalarea pe cutia de pagode

Au fost destul de puține lucrări de pregătire inițială pentru a ajunge la această etapă, dar aici se întâlnește totul. Integrarea continuă, gestionarea continuă și scalabilitatea sunt acum mult mai simple. Pe măsură ce comparați, rețineți că tarifele sunt orare. Scalarea pentru a testa pe scurt va costa doar câțiva dolari.

Scalarea instanțelor Web

Pentru a vă scala aplicația web pentru mai mult trafic, deschideți Componenta dvs. Web din tabloul de bord Pagoda Box după cum urmează:

Apoi, dați clic și trageți glisorul la numărul dorit de instanțe și faceți clic pe "Salvați". Pagoda Box va implementa Magento din depozit în noi instanțe. După ce toate instanțele sunt construite și verificate, stratul de rutare va redirecționa traficul către noile instanțe și va dezafecta vechiul, fără nici un timp de nefuncționare (din nou, vezi videoclipul Scaling Magento).

Notă: pe măsură ce o utilizați, cursorul apare la maxim la 25 de instanțe, dar va reseta pentru o scalare mai mare după ce limita superioară a fost salvată.

Scalarea unei baze de date: Cloud (Componentele cache sunt identice)

Pentru a scala baza de date cloud, deschideți Componenta dvs. de bază de date din tabloul de bord Pagoda Box după cum urmează:

Observați că chipul roșu este nefericit deoarece utilizarea RAM este prea mare. Pentru a mări memoria RAM, faceți clic pe săgeata verde "Schimbați", selectați suma dorită de memorie RAM și faceți clic pe "Salvați".

Pagoda Box va crea o bază de date mai mare, va migra date, se va sincroniza prin replicarea master-master, apoi va îndrepta aplicația către noua bază de date. Site-ul dvs. este live pe toată durata migrației.

Scalarea unei baze de date: privată

Pentru a scala baza de date privată, deschideți Componenta dvs. de bază de date din tabloul de bord Pagoda Box după cum urmează:

Selectați resursele pe care le doriți pentru baza de date, determinați dacă doriți replicarea, apoi faceți clic pe "Salvați".

Pagoda Box va crea o bază de date mai mare, va migra date, se va sincroniza prin replicarea master-master, apoi va îndrepta aplicația către noua bază de date. Site-ul dvs. este live pe toată durata migrației.

Rețineți că ordonarea unei baze de date particulare poate dura mai mult de 20 de minute, deoarece serverul este prevăzut cu specificațiile dvs..

Notă: în prezent, scalarea dintr-o bază de date Cloud într-o bază de date privată necesită unele perioade de nefuncționare, pe măsură ce migrați manual datele. Scalarea de la Cloud la Cloud sau Private to Private este întotdeauna automată.


rezumat

Asta e! Aplicația dvs. Magento este acum complet scalabilă într-o clipă și actualizările sunt ușor de implementat $ git push pagoda - tot. se bucura!

Cod