Optimera Magento i molnet

I denna uppföljningstutorial optimerar vi Magento, lägger till ett Redis-cache, SSL och DNS-alias, sedan skala applikationen för benchmarking och produktion. Följande förutsätter att du redan har använt den första handledningen för att starta en grundläggande Magento cloud-applikation på Pagoda Box. Klar för att optimera?


Krav

Du kan ladda ner den färdiga koden för denna handledning, eller installera Magento från en snabbstart för att testa en arbetsplats.

  • Ett Pagoda Box-konto (gratis)
  • En funktionell lokal Magento Install
  • Lokal utvecklingsprogramvara (MAMP eller WAMP)
  • Git installerad (kan använda SFTP)
  • Pagoda Terminal Client Installed

Fair Warning: Pagoda Box är inte traditionell värd. Denna handledning optimerar inte bara Magento, det lägger grunden för ett progressivt kontinuerligt integrations arbetsflöde.


Steg 1: Aktivera eAccelerator, XCache eller APC Cache

Aktivera en bytecode-cache optimerar prestanda, speciellt med stora kodbaser som Magento. Du kan använda eAccelerator eller XCache bytecode caching, men Magento rekommenderar APC. För att aktivera APC, lägg det enkelt till i listan med php-tillägg i rutfilen enligt följande:

 web1: php_extensions: - apc

Din nya Boxfile ska se ut så här:

 web1: namn: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - curl - tvål - 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: namn : mag-db-typ: mysql

Steg 2: Skapa en Redis-komponent

Som standard finns Magento-sessioner på Pagoda Box i skrivbar lagring och är tillgängliga för alla dina webbinstanser. Denna handledning flyttar sessioner till Redis, vilket är en "avancerad nyckelvärdesbutik". Redis ger extremt kraftfull caching i minnet, i kombination med långvarig data för bättre läsning, skrivning och övning.

Skapa en Redis Cache från Boxfile

Först aktivera Redis-förlängningen genom att lägga till - redis till extensionslistan i Boxfile, precis som vi gjorde för APC. Detta gör att dina PHP-komponenter kan anslutas till Redis. Lägg också till en Redis-cachekomponent i din Boxfile enligt följande:

 cache1: namn: mag-cache-typ: redis

Din uppdaterade Boxfile ska se ut så här:

 web1: namn: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - curl - tvål - 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 : namn: mag-db-typ: mysql cache1: namn: mag-cache-typ: redis

När en Redis-komponent ingår i Boxfile, läggs en Redis-cache automatiskt till din infrastruktur när du distribuerar uppdateringar.

Alternativ: Skapa en Redis Cache från instrumentpanelen

Du kan också skapa en Redis-cache från Pagoda Box Dashboard. Dashboard är också där du skalar Redis-komponenten.

Klicka först på "Lägg till cache" i instrumentpanelen.

... välj sedan Redis.

När din nya cachekomponent har installerats klickar du på den i instrumentpanelen och väljer sedan din önskade mängd RAM enligt följande:

Data är beständig med Redis, så du kan ändra storlek på cacheminnet utan att förlora sessioner eller cache data som finns i minnet, till skillnad från Memcache.


Steg 3: Konfigurera Magento för Redis Sessioner och Cache

Denna handledning delar en enda Redis-komponent för Magento-sessioner och caching. Om din webbplats får tillräckligt med trafik kan du skapa en separat Redis-komponent för både sessioner och cachning, vilket ger en extra mått av prestanda.

Redis sessioner

Konfigurera Magento sessioner för att använda Redis.

Om du någonsin behöver överväga Magento-standardfiler (som vi kommer här), ändrar inte Magentos kärnfiler. Åsidosätta filer bor alltid i Magentos lokala katalog för att skydda funktionalitet och framtida uppgraderingar.

  • Redigera avsnittet för sessionhanteraren i din local.xml fil för att använda Redis och ange sessionsbesparingsvägen enligt följande:

      
  • Sedan lägger du till Redis support till Magento genom att överdriva en kärna Magento-fil. Kopiera filen:

     app / kod / kärna / Mage / Kärna / Modell / session / Abstract / Varien.php

    Skapa sedan din egen lokala version på:

     app / code / local / Mage / Kärna / Modell / Session / Abstract / Varien.php

    Lägg till följande i den nya filen, runt rad 62:

     fallet "redis": ini_set ("session.save_handler", "redis"); session_save_path ($ this-> getSessionSavePath ()); ha sönder;

Redis Cache

Konfigurera nu Magento-cachen för att använda Redis.

  • Lägg till Credis-biblioteket och Cm-modulen för att aktivera Redis som en Magento-cache. Modulen består av en fil, som du kan hämta här. Även om Cm-modulen författaren rekommenderar att installera via modman, registrerar modman inte alla submoduler med Pagoda Box korrekt. I stället spara filen som: app / code / community / cm / Cache / Backend / Redis.php.

    Lägg till Credis-biblioteket som en Git-submodul till ditt projekt:

     $ cd din_site_dir $ git submodule lägg till git: //github.com/colinmollenhour/credis.git lib / Credis
  • Ännu en gång, redigera local.xml fil. Ändra cache delcaration och det är innehåll enligt följande:

      Cm_Cache_Backend_Redis  tunnel.pagodabox.com 6379 0 0 0 1 1 20480 gzip  
  • Ange långt framtid upphör att drastiskt minska antalet begäranden per besökare när de bläddrar på din webbplats. Gör detta efter att ha avslutat temat arbete på framsidan. Lägger till följande static_expire direktiv till web1 delen av din Boxfile kommer att löpa ut statiska tillgångs cacher efter 1 år.

     web1: static_expire: 31536000
  • Lägg till de uppdaterade filerna för att git, commit och tryck till Pagoda Box.

     $ git lägg till. $ git commit -m 'installerad och konfigurerad redis' $ git push pagoda --all
  • Efter installationen, radera Magento-systemets cache genom att logga in på din Magento admin och gå till System -> Cache Management och klicka sedan på 'Flush Magento Cache'.

OBS! Undvik JS & CSS i skrivbar lagring

Magento har några optimeringsverktyg som sammanfogar javascript och css-filer och placerar dem i Pagoda Boxs delade skrivbara lagringsutrymme. För det mesta är det ett problem, men med hög trafikvolym kan Pagoda Box få tillgång till filer från de distribuerade webbinstanserna mycket snabbare än filer i delad skrivbar lagring. För hög trafikprestanda, hålla javascript och css i repo bättre än minifiering.

Om du vill aktivera filen slår du in på din Magento-administratörspanel och navigerar sedan till: System> Konfiguration> Utvecklare

Välj "Nej" under JavaScript-inställningar och CSS-inställningar enligt följande:


Steg 4: Verifiera Redis fungerar

Nu när Magento är konfigurerat för Redis, verifiera att allt fungerar. Följ denna Redis guide för att skapa en säker tunnel, använd sedan terminalen för att komma till Redis på Pagoda Box. När du är ansluten kör följande kommando för att visa en lista över alla lagrade nycklar.

 $ nycklar *

Förutsatt att du har bläddrat den utpated webbplatsen, bör du se en lista med olika nycklar. Om du bara ser sessionsnycklar, bara cachenycklar eller om du inte ser några tangenter alls, granska dina konfigurationsinställningar och se till att du har raderat Magento-cachen.

För en fullständig lista över användbara kommandon när du använder Redis, se deras officiella dokumentation.


Steg 5: Lägga till DNS / SSL

Piggyback SSL är gratis och automatiskt för varje app på Pagoda Box i appens underdomän (appname.pagodabox.com). Medan det är möjligt att jämföra med Piggyback SSL, aktiverar vi tredje partens SSL med tanke på handledningen. Wildcard Certs och Självtecknad SSL finns detaljerad i den här DNS / SSL-guiden.

Lägg till SSL

Börja med att klicka på "Lägg till ett SSL-certifikat" -knapp under fliken DNS / SSL i panelen Pagoda Box.

Välj sedan om du skapar ett certifikat eller använder ett befintligt SSL-certifikat, som vi är här. Om du antar att du har ett existerande certifikat, klicka på "Överför befintlig".

Slutligen klistra in relevant information i lämpligt fält och aktivera. Ditt SSL-certifikat sparas nu med din ansökan.

Lägg till ett DNS-alias

När du har angett ett SSL-certifikat visas det i listan över tillgängliga SSL-certifikat. Om du inte redan har lagt till, lägg till din anpassade domän som ett DNS-alias till din ansökan. Klicka på "Lägg till nytt alias" och ange din registrerade domän som alias. Pagoda Box kommer som standard att tilldela en gemensam IP-adress, men detta kommer att ändras när du kopplar ett SSL-certifikat med DNS Alias.

Slutligen associera ditt SSL-certifikat med ditt DNS-alias genom att välja det från listrutan SSL bredvid ditt DNS-alias och klicka sedan på "Spara". Med SSL-certifikatet kopplat nu till ditt DNS-alias får ditt alias en unik, dedikerad IP-adress.

När du associerar ett SSL-certifikat med ett DNS-alias, kommer det här aliaset att få en dedicerad IP-adress. Kontrollera att din A-Record överensstämmer med IP-skivan efter att du har lagt till, raderat eller ändrat SSL-certifikat.


Steg 6: Benchmark med Blitz.io

Vi har använt Blitz.io för att benchmarka några Magento-applikationer. Den tester både http-svar och databasskrivningar med hjälp av variabla listor URL och Cookies.

Börja skapa ett gratis konto på Blitz.io. När du har registrerat, leta efter "START!" knappen längst ner på din välkomstsida.

Klicka på "Start", och Blitz kommer att ge en serie enkla handledning som förklarar variablerna du ska använda i en frågeadress för att testa din ansökan. För vårt ändamål bör din basfrågningsadress se ut så här:

 -p 1-24: 60 -r california -T 4000 -v: cookie list [d1b1530ff8694817e1f11f55e0a4a120,805d9a11f3b9f8ea35ee2db1d9aac3fc] -v: urls lista [index.php, furniture.html, ottoman.html, om-magento-demo-butik, kassa / vagn / lägg till? product = 51] -b "my-cookie = # cookie Ó http://magento-demo.pagodabox.com/#urls

Specifikt testar den frågan gradvis 1-24 samtidiga besökare (kan testa till 250 med kostnadsfritt konto) över 60 sekunder, från Kalifornien, timing out vid 4 sekunder. Frågan innehåller också en lista över cookies och webbadresser som variabler, plus domänen vi testar. Vi har inkluderat en hemsida, en CMS-sida, en katalogsida, en produktsida och en utcheckningssida för att testa.

Med hjälp av cookies variabler och en check / cart / add? Produkt URL kan vi testa DB skriver. Hämta en lista med giltiga cookies genom att navigera på din webbplats i Chrome> Inspektera element> Resurser> Cookies> [yoursite]> frontend. Kopiera nyckeln från kolumnen Värde, som anges nedan:

Byt ut cookies, webbadresser och domän från URL-frågan ovan med lämpliga element från din webbplats, skriv sedan in den nya frågan på Blitz.io och klicka på "Kör".

Första gången du "Rush" din app, kommer Blitz att visa ett auktoriseringsfel och be dig att bevisa ägande genom att lägga till en specifik URL till din app. Följ instruktionerna på skärmen Blitz för att skapa en unik behörighetsfil på din lokala dator och tryck sedan på ändringar i Pagoda Box.

 $ git lägg till. $ git commit -m "blitz auth fil" $ git push pagoda - all

Bekräfta att den nya filen är på plats genom att besöka webbadressen i en webbläsare. Du borde se "42". Observera att "roten till din www-katalog" är roten till ditt projekt om du inte har konfigurerat det DOCUMENT_ROOT i din Boxfile för att vara en annan katalog.

När allt är på plats kan du justera Blitz-variabler och testa. Till exempel ändras 1-24 till 60-60 kommer att ändra samtidighet från en gradvis ökning till 24 samtidighet till 60 långvariga samtidiga besökare. Genom att isolera URL-adresser i variabellistan kan du identifiera prestandaflaskhalsar genom att isolera olika sidtyper. Du kan även testa DB-skrivkapacitet genom att använda kassan / varukorg / add? url.

Naturligtvis är benchmarking helt enkelt en indikator för att hjälpa till att skala applikationen. Se till att skala till olika nivåer som referenspunkt och notera ändringen i resultat (se Scaling Magento video). Blitz.io ska hjälpa till att identifiera programflaskhalsar och bestämma lämplig skala för din förväntade trafik.


Steg 7: Skalning på pagodan

Det har varit en hel del initialt prep-arbete att komma till det här skedet, men det här är det där allt kommer samman. Kontinuerlig integration, löpande hantering och skalbarhet är nu mycket enklare. Som riktmärke, kom ihåg att avgifterna är timme. Skalning för att testa kort kommer bara att kosta några dollar.

Scaling Web Instances

För att skala din webbapplikation för mer trafik öppnar du din webbkomponent från Pagoda Box-instrumentpanelen enligt följande:

Klicka sedan och dra glidreglaget till önskat antal instanser och klicka på "Spara". Pagoda Box kommer att distribuera Magento från ditt repository till nya instanser. När alla instanser är byggda och verifierade, kommer routningsskiktet att omdirigera trafiken till de nya instanserna, och avveckla den gamla utan viloläge (se Scaling Magento video igen).

Obs! När du använder den verkar glidaren maximera vid 25 instanser, men återställs för större skalning efter att den övre gränsen har sparats.

Skalning av en databas: Cloud (Cacheskomponenter är identiska)

För att skala din molndatabas öppnar du din Databsase Component från Pagoda Box-instrumentpanelen enligt följande:

Observera att Red Face är olyckligt eftersom RAM-användningen är för hög. För att öka RAM, klicka på den gröna "Ändra" -pilen, välj önskad mängd RAM och klicka på "Spara".

Pagoda Box kommer att skapa en större databas, migrera data, synkronisera via master-master replication och peka sedan din ansökan på den nya databasen. Din webbplats är live under hela migreringen.

Skalning av en databas: Privat

För att skala din privata databas öppnar du din Databsase Component från Pagoda Box-instrumentpanelen enligt följande:

Välj de resurser du vill ha för din databas, bestämma om du vill ha replikering, klicka sedan på "Spara".

Pagoda Box kommer att skapa en större databas, migrera data, synkronisera via master-master replication och peka sedan din ansökan på den nya databasen. Din webbplats är live under hela migreringen.

Tänk på att beställning av en privat databas kan ta mer än 20 minuter, eftersom en server är avsedd för dina specifikationer.

Obs! Skalning från en Cloud-databas till en privat databas kräver för närvarande lite driftstopp när du manuellt migrerar data. Skalning från moln till moln, eller privat till privat är alltid automatiskt.


Sammanfattning

Det är allt! Din Magento-applikation är nu fullt skalbar i ett ögonblick, och uppdateringar kan enkelt distribueras med $ git push pagoda - all. Njut av!