Optimaliser Magento i Cloud

I denne oppfølgingsveiledningen optimaliserer vi Magento, legger til et Redis-hurtigbuffer, SSL og DNS-alias, og skaler deretter søknaden for benchmarking og produksjon. Følgende forutsetter at du allerede har brukt den første opplæringen til å starte et grunnleggende Magento-skyvapplikasjon på Pagoda-boksen. Klar til å optimalisere?


Krav

Du kan laste ned den ferdige koden for denne opplæringen, eller installere Magento fra en Quickstart for å teste et arbeidssted.

  • En Pagoda Box-konto (gratis)
  • En funksjonell lokal Magento Install
  • Lokal utviklingsprogramvare (MAMP eller WAMP)
  • Git installert (kan bruke SFTP)
  • Pagoda Terminal Client Installert

Fair Warning: Pagoda Box er ikke tradisjonell hosting. Denne opplæringen optimaliserer ikke bare Magento, den legger grunnlaget for en progressiv kontinuerlig integrasjons arbeidsflyt.


Trinn 1: Aktiver eAccelerator, XCache eller APC Cache

Aktivering av en Bytecode Cache vil optimalisere ytelsen, spesielt med store kodebaser som Magento. Du kan bruke eAccelerator eller XCache bytecode caching, men Magento anbefaler APC. For å aktivere APC, legg det bare til i listen over php-utvidelser i Boxfile som følger:

 web1: php_extensions: - apc

Din nye Boxfile skal se slik ut:

 web1: navn: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - krøll - såpe - apc after_build: - "mv pagoda / local .xml app / etc / local.xml "cron: -" * / 15 * * * * ":" curl -s -o / dev / null http://magento.pagodabox.com/cron.php "db1: navn : mag-db type: mysql

Trinn 2: Opprett en Redis-komponent

Som standard er Magento-økter på Pagoda-boksen plassert i skrivbar lagring, og er tilgjengelig for alle dine webinstanser. Denne opplæringen flytter økter til Redis, som er en "avansert nøkkelverdibutikk". Redis gir ekstremt kraftig caching i minnet, kombinert med vedvarende data for langt bedre lese-, skrive- og øktytelse.

Lag en Redis Cache fra Boxfile

Først aktiverer du Redis-utvidelsen ved å legge til - Redis til utvidelseslisten i Boxfile, akkurat som vi gjorde for APC. Dette gjør at PHP-komponentene dine kan koble til Redis. Legg også til en Redis cache-komponent i Boxfile som følger:

 cache1: navn: mag-cache type: redis

Din oppdaterte Boxfile skal se slik ut:

 web1: navn: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - krøll - såpe - apc - redis after_build: - "mv pagoda /local.xml app / etc / local.xml "cron: -" * / 15 * * * * ":" curl -s -o / dev / null http://magento.pagodabox.com/cron.php "db1 : navn: mag-db type: mysql cache1: navn: mag-cache type: redis

Når en Redis-komponent er inkludert i Boxfile, blir en Redis-hurtigbuffer automatisk lagt til infrastrukturen din når du distribuerer oppdateringer.

Alternativ: Lag en Redis Cache fra Dashboard

Du kan også opprette en Redis-hurtigbuffer fra Pagoda Box Dashboard. Dashbordet er også hvor du skaler Redis-komponenten.

Først klikker du på Legg til hurtigbuffer i oversikten.

... velg deretter Redis.

Når den nye hurtigbufferkomponenten har blitt distribuert, klikker du på det i oversikten, og velg deretter ønsket mengde RAM som følger:

Data er vedvarende med Redis, slik at du kan endre størrelsen på hurtigbufferen uten å miste økter eller cache data i minnet, i motsetning til Memcache.


Trinn 3: Konfigurer Magento for Redis Sessions og Cache

Denne opplæringen deler en enkelt Redis-komponent for Magento-økter og caching. Hvis nettstedet ditt mottar nok trafikk, kan det opprettes en ekstra måling av ytelse ved å skape en separat Redis-komponent for både økter og caching.

Redis Sessions

Konfigurer Magento økter for å bruke Redis.

Hvis du noen gang trenger å overstyre Magento-standardfiler (som vi vil her), må du ikke endre Magents kjernefiler. Overstyr filer bør alltid være lokalisert i Magento's Local Directory for å beskytte funksjonalitet og fremtidige oppgraderinger.

  • Rediger økthåndteringsdelen av din local.xml fil for å bruke Redis, og angi øktsparingsbanen som følger:

      
  • Deretter legger du til Redis-støtte til Magento ved å overstyre en kjerne Magento-fil. Kopier filen:

     app / code / core / Mage / core / modell / økt / abstrakt / Varien.php

    Deretter oppretter du din egen lokale versjon på:

     app / code / local / Mage / core / modell / økt / abstrakt / Varien.php

    I den nye filen, rundt linje 62, legger du til følgende:

     case 'redis': ini_set ('session.save_handler', 'redis'); session_save_path ($ dette-> getSessionSavePath ()); gå i stykker;

Redis Cache

Nå, konfigurer Magento cache for å bruke Redis, så vel.

  • Legg til Credis-biblioteket og Cm-modulen for å aktivere Redis som en Magento-cache. Modulen består av en fil, som du kan laste ned her. Selv om Cm-modulforfatteren anbefaler å installere via modman, registrerer modman ikke alle undermoduler med Pagoda-boksen. I stedet lagre filen som: app / kode / samfunn / Cm / Cache / Backend / Redis.php.

    Legg Credis-biblioteket som en Git-submodul til prosjektet ditt:

     $ cd your_site_dir $ git submodule legg til git: //github.com/colinmollenhour/credis.git lib / Credis
  • Enda en gang rediger du local.xml fil. Endre cache delcaration og innholdet som følger:

      Cm_Cache_Backend_Redis  tunnel.pagodabox.com 6379 0 0 0 1 1 20480 gzip  
  • Sett langt fremtid utløper for å drastisk redusere antall forespørsler per besøkende mens de surfer på nettstedet ditt. Gjør dette etter å ha fullført temaet for frontend. Legger til følgende static_expire direktiv til web1 delen av Boxfile utløper statisk eiendomsbuffer etter 1 år.

     web1: static_expire: 31536000
  • Legg til de oppdaterte filene for å git, commit og trykk til Pagoda Box.

     $ git add. $ git commit -m 'installert og konfigurert redis' $ git push pagoda --all
  • Etter distribusjon, fjern Magento-systembufferen ved å logge inn i Magento-administratoren din og gå til System -> Cache Management, og klikk deretter på "Flush Magento Cache".

MERK: Unngå JS & CSS i Writable Storage

Magento har noen optimaliseringsverktøy som fusjonerer javascript- og css-filer, og legger dem i Pagoda Boxs felles skrivbare lagring. Mesteparten av tiden, det er et ikke-problem, men med høyt trafikkvolum kan Pagoda Box få tilgang til filer fra distribuerte web-forekomster mye raskere enn filer i delt skrivbar lagring. For høy trafikkytelse, holder javascript og css i repo bedre enn minifisering.

For å slå av filen, logg inn på Magento-administrasjonspanelet, og naviger deretter til: System> Konfigurasjon> Utvikler

Velg "Nei" under JavaScript-innstillinger og CSS-innstillinger som følger:


Trinn 4: Kontroller at Redis er i bruk

Nå som Magento er konfigurert for Redis, må du kontrollere at alt fungerer. Følg denne redis-guiden for å etablere en sikker tunnel, og bruk deretter terminalen for å få tilgang til Redis on Pagoda Box. Når du er tilkoblet, kjør følgende kommando for å vise en liste over alle lagrede taster.

 $ nøkler *

Forutsatt at du har blått på det utpated nettstedet, bør du se en liste over forskjellige taster. Hvis du bare ser øktnøkler, bare cachenøkler, eller hvis du ikke ser noen nøkler i det hele tatt, må du gå gjennom konfigurasjonsinnstillingene og forsikre deg om at du har ryddet Magento-cachen.

For en fullstendig liste over nyttige kommandoer når du bruker Redis, se deres offisielle dokumentasjon.


Trinn 5: Legge til DNS / SSL

Piggyback SSL er gratis og automatisk for alle apper på Pagoda-boksen i appens underdomene (appname.pagodabox.com). Selv om det er mulig å benytte Piggyback SSL, aktiverer vi SSL fra tredjepart med tanke på opplæringen. Wildcard Certs og selvsignert SSL er beskrevet i denne DNS / SSL-veiledningen.

Legg til SSL

Begynn med å klikke på "Legg til et SSL-sertifikat" -knapp under DNS / SSL-fanen i Pagoda Box-dashbordet.

Deretter velger du om du lager et sertifikat, eller bruker et eksisterende SSL-certifikat, som vi er her. Forutsatt at du har et eksisterende sertifikat, klikk "Overfør eksisterende".

Til slutt lim inn relevant informasjon i riktig felt og aktiver. Ditt SSL-sertifikat er nå lagret med søknaden din.

Legg til et DNS-alias

Når du har angitt et SSL-sertifikat, vises det i listen over tilgjengelige SSL-sertifikater. Hvis du ikke allerede har lagt til, legger du til det egendefinerte domenet ditt som et DNS-alias til søknaden din. Klikk på "Legg til nytt alias" og skriv inn ditt registrerte domene som aliaset. Pagoda-boksen vil tildele en felles IP-adresse som standard, men dette vil endres når du knytter et SSL-sertifikat til DNS-aliaset.

Til slutt, tilknytt ditt SSL-sertifikat med DNS-aliaset ditt ved å velge det fra SSL-rullegardinlisten ved siden av DNS-aliaset ditt, og klikk deretter "Lagre". Med SSL-sertifikatet nå knyttet til DNS-aliaset ditt, får ditt alias en unik, dedikert IP-adresse.

Når du har tilknyttet et SSL-sertifikat med et DNS-alias, vil dette aliaset få en dedikert IP-adresse. Sørg for å verifisere at A-posten din samsvarer med IP-en etter at du har lagt til, slettet eller endret SSL-sertifikatene.


Trinn 6: Benchmark med Blitz.io

Vi har brukt Blitz.io til å benchmark noen Magento applikasjoner. Den tester både http-svar og database skriver ved hjelp av variabellister, URLer og informasjonskapsler.

For å starte, opprett en gratis konto på Blitz.io. Når du har registrert deg, se etter "START!" knappen nederst på velkomstsiden din.

Klikk på "Start", og Blitz vil gi en rekke enkle opplæringsprogrammer som forklarer variablene du vil bruke i en forespørselsadresse for å teste programmet. For vår hensikt, bør din base Query URL se slik ut som dette:

 -p 1-24: 60 -r california -T 4000 -v: cookie list [d1b1530ff8694817e1f11f55e0a4a120,805d9a11f3b9f8ea35ee2db1d9aac3fc] -v: urls liste [index.php, furniture.html, ottoman.html, om-magento-demo-butikk, kassa / handlevogn / legg til? produkt = 51] -b "min-cookie = # cookie Ó http://magento-demo.pagodabox.com/#urls

Spesielt vil forespørselen gradvis teste 1-24 samtidige besøkende (kan teste til 250 med gratis konto) over 60 sekunder, fra California, timing out på 4 sekunder. Spørringen stiller også en liste over informasjonskapsler og nettadresser som variabler, i tillegg til domenet vi tester. Vi har tatt med en startside, en CMS-side, en katalogside, en produktside og en utskriftsside for å teste.

Ved hjelp av Cookie-variabler og en kassa / handlevogn / legg til? Produkt-URL lar oss teste DB skriver. Få en liste over gyldige informasjonskapsler ved å navigere nettstedet ditt i Chrome> Kontroller element> Ressurser> Cookies> [ditt nettsted]> frontend. Kopier nøkkelen fra Verdi-kolonnen, som angitt nedenfor:

Erstatt informasjonskapslene, nettadressene og domenet fra URL-spørringen ovenfor med de aktuelle elementene fra nettstedet ditt, og skriv deretter inn det nye spørsmålet på Blitz.io, og klikk på "Kjør".

Første gang du "Rush" appen din, vil Blitz vise en godkjenningsfeil og be deg om å bevise eierskap ved å legge til en bestemt nettadresse i appen din. Følg Blitz-instruksjonene for å opprette en unik autorisasjonsfil på din lokale datamaskin, og trykk deretter på endringer i Pagoda-boksen.

 $ git add. $ git commit -m "blitz auth fil" $ git push pagoda - all

Bekreft at den nye filen er på plass ved å besøke nettadressen i en nettleser. Du bør se "42". Merk at "roten til din www-katalog" er roten til prosjektet ditt, med mindre du har konfigurert DOCUMENT_ROOT i Boxfile for å være en annen katalog.

Når alt er på plass, er du ledig til å justere Blitz-variabler og test. For eksempel, endring 1-24 til 60-60 vil endre samtidighet fra en gradvis økning til 24 samtidighet til 60 vedvarende samtidige besøkende. Ved å isolere nettadresser i variabellisten kan du identifisere ytelse flaskehalser ved å isolere ulike sidetyper. Du kan til og med teste DB skrivekapasitet ved å bruke kassa / vogn / legge? url.

Selvfølgelig er benchmarking rett og slett en indikator for å bidra til å skalere applikasjonen. Sørg for å skalere til ulike nivåer som referanse, og noter endringen i resultatene (se Scaling Magento video). Blitz.io skal hjelpe til med å identifisere programflaskehalser og bestemme riktig skala for forventet trafikk.


Trinn 7: Skalering på pagoda-boksen

Det har vært litt av det første prep-arbeidet som kommer til dette stadiet, men dette er hvor alt kommer sammen. Kontinuerlig integrasjon, kontinuerlig styring og skalerbarhet er nå mye enklere. Som målestokk må du huske på at kostnadene er per time. Skalering for å teste kort vil koste bare noen få dollar.

Scaling Web Instances

Hvis du skal skalere webapplikasjonen din for mer trafikk, åpner du webkomponenten fra Pagoda Box-dashbordet som følger:

Deretter klikker du og drar skyvekontrollen til ønsket antall forekomster, og klikker på "Lagre". Pagoda Box vil distribuere Magento fra lageret til nye forekomster. Etter at alle forekomster er bygget og verifisert, vil rutingslaget omdirigere trafikk til de nye forekomstene, og deaktivere den gamle uten nedetid (igjen, se Scaling Magento-video).

Merk: Når du bruker den, ser glidebryteren ut til maks. 25 ganger, men vil nullstille etter større skalering etter at den øvre grensen er lagret.

Skalering av en database: Cloud (hurtigbufferkomponenter er identiske)

Hvis du vil skalere nettskydatabasen, åpner du Databsase-komponenten fra Pagoda Box-dashbordet som følger:

Legg merke til at det røde ansiktet er ulykkelig fordi RAM-bruken er for høy. For å øke RAM, klikk på den grønne "Change" -pilen, velg ønsket RAM, og klikk "Lagre".

Pagoda-boksen vil opprette en større database, overføre data, synkronisere via master-master-replikasjon, og pek deretter søknaden din til den nye databasen. Nettstedet ditt er live gjennom hele overføringen.

Skalering av en database: Privat

For å skalere din Private database, åpner du Databsase Component fra Pagoda Box-dashbordet som følger:

Velg ressursene du vil ha for databasen, avgjør om du vil ha replikering, og klikk deretter på "Lagre".

Pagoda-boksen vil opprette en større database, overføre data, synkronisere via master-master-replikasjon, og pek deretter søknaden din til den nye databasen. Nettstedet ditt er live gjennom hele overføringen.

Husk at bestilling av en privat database kan ta mer enn 20 minutter, ettersom en server er gitt til dine spesifikasjoner.

Merk: for øyeblikket krever skalering fra en Cloud-database til en privat database noe nedetid når du manuelt overfører data. Skalering fra Cloud til Cloud, eller Private til Private, er alltid automatisk.


Sammendrag

Det er det! Din Magento-applikasjon er nå fullt skalerbar på et øyeblikk, og oppdateringer blir enkelt distribuert med $ git push pagoda - all. Nyt!