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?
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.
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.
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
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.
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.
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.
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.
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;
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'.
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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!