Hur Super-Scale Magento i molnet

Denna handledning hjälper dig att förbereda en Magento-installation för hög trafik, bättre lastningstider och enklare pågående webbplatshantering. Redo?


Krav

Du kan ladda ner den färdiga koden för denna handledning, eller starta "magento-basic" Quickstart från ditt Pagoda Box-konto 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

Rättvis varning: Denna handledning kan förändra ditt liv. Pagoda Box är inte traditionell värd. Lärorna i den här artikeln kommer inte bara att hjälpa skalan Magento, men den lägger också grunden för ett progressivt arbetsflöde från utveckling till produktionen.


Steg 1: Ställ in Git lokalt (SFTP fungerar som en alternativ)

Obs! Om du redan använder Git kan du hoppa över det här avsnittet. Om inte, innehåller guiden Setting Up Git specifika instruktioner för att skapa en SSH-nyckel, liksom länkar för nedladdning och installation av Git (även nedan).

Medan det är möjligt att bara använda SFTP på Pagoda Box, integrerar den officiellt rekommenderade (och mest effektiva) arbetsflödet Git till din dagliga utveckling. Git möjliggör funktioner som samarbete, enhetlig koddistribution, deployer, distribuera historia och rulla tillbaka kod. Medan de flesta av dessa funktioner är tillgängliga för FTP-användare, använder Git integration sömlös.

Om du vill utnyttja Pagoda Box fullt ut, ladda ner Git och Lär dig grunderna. Beroende på ditt operativsystem kan uppställningen variera något. Oberoende av ditt operativsystem är kommandona identiska när Git har installerats.

Att använda Git för att hantera samarbete och versionskontroll kan innebära en kort inlärningskurva. Det finns emellertid i allmänhet bara tre kommandon som vi kontinuerligt använder för att begå förändringar lokalt och sedan distribuera till Pagoda Box:

  • git lägg till . - Lägger till lokala filer i ditt förråd
  • git commit -m "något meddelande om vad du har gjort" - Håller dina ändringar
  • git push pagoda - all - Pushes ändringar till Pagoda Box Repository (automatiskt inbyggd som standard)

Vi använder dem senare.


Steg 2: Installera Pagoda Box Terminal Client

 * / \ / \ + _ / / / | \ \ \ _ + || * ||| * || | + || * || + | / \ + _ / / / | \ \ \ _ + || * ||| * || | + || * || + | _____ _______ ____ _ ____ _____ __ | _ \ / \ / ___ | / _ \ | _ \ / \ | __) / _ \ \ / / | | _) / _ \ | | _ | | | | | | | / _ \ | _ \ | | | \ / | __ / ___ \ | _ | | | _ | | | _ | / ___ \ | | _) | | _ | / \ | _ | / _ / \ _ \ ____ | \ ___ / | ____ / _ / \ _ \ ____ / \ ___ / _ / \ _ \ Välkommen till din Pagoda Box Terminal Client. ----------------------------------------------- --- -------------------------------------- ------------ --------------------- Njut av.

Pagoda Box tillhandahåller en terminalklient som låter dig klona, ​​skapa, distribuera, förstöra, byta namn på och återställa en applikation från kommandoraden. Senare i denna handledning använder vi klienten för att skapa en säker tunnel till den levande Magento-databasen med Sequel Pro (processen är likadan för andra databashanteringsverktyg som HeidiSQL).

Pagoda Box Terminal Client är en rubygem, så installationen är ganska enkel. Först måste Ruby installeras. Installation är olika för varje operativsystem.

  • Mac - Ruby and RubyGems kommer förinstallerade på Mac OSX. Så länge du kör v10.5 eller senare ska du vara bra att gå.
  • Windows - Det finns ett par olika sätt att installera Ruby i Windows. Vi rekommenderar denna automatisk installatör. Om det inte fungerar för din konfiguration, kommer en Google-sökning att ge dig en ganska bra lista över installationsgenomgångar.
  • Linux - Använd din föredragna pakethanterare för att ladda ner Ruby-paketet. För Ubuntu-användare är pärlan tillgänglig via getdeb.net.

Installera och verifiera Terminal Client

När Ruby är installerat, kör helt enkelt följande kommando för att installera Pagoda RubyGem:

På Mac eller Linux:

 $ sudo pärla installera pagoda

På Windows:

 $ gem installationspagoda

Sedan, för att verifiera att du har Pagoda Gem monterad korrekt, kör:

 $ pagodlista

Om det här är första gången du har använt pärlan, kommer den att fråga om ditt Pagoda Box Användarnamn och Lösenord. När du har angett dem, räknar du med att se en lista över dina Pagoda Box-applikationer. Om du inte har skapat några program är listan tom.

Om du får ett fel är det troligtvis ogiltiga uppgifter. Du kan verifiera eller ändra vilka referenser som gemmen använder genom att redigera filen som finns på din lokala dator på ~ / .Pagodarc. Se till att exakt matcha de behörighetsuppgifter du använder i ditt Pagoda Box-konto. (Obs! Det här är en dold fil, så du måste aktivera dolda filer eller öppna via terminalen. Observera också att filen lagrar dina uppgifter två gånger, så redigera båda om det behövs.)


Steg 3: Installera Magento lokalt

Obs! Hoppa över det här steget om du redan har en fungerande lokal Magento-installation.

Om du inte redan har det, se till att du använder en lokal webbserver och databashanteringsprogram. Det finns flera alternativ tillgängliga, beroende på operativsystem. Ett vanligt alternativ för Mac är MAMP eller WAMP för Windows. Båda är fria och enkelt uppställda.

När din lokala utvecklingsmiljö är upprättad, fortsätt och ladda ner Magento, följ sedan den officiella guiden för att installera Magento lokalt.

Använd gärna Magentos automatiska installationsskript för att ställa in programmet i din lokala miljö. På grund av Pagoda Boxs distribuerade molnarkitektur kommer skriptet inte att installeras Magento direkt i din produktionsmiljö. Arbetsflödet och arkitekturen i Pagoda Box kräver att du gör kodändringar lokalt, begå och sedan distribuera till produktion. Detta arbetsflöde rymmer samarbete och utveckling> iscenesättning> produktion av bästa praxis.


Steg 4: Konfigurera PHP med hjälp av en Boxfile

Obs! På Pagoda Box kan en YAML Boxfile ingå i roten till ditt kodförteckning. Medan Boxfile är valfritt tillhandahåller det avancerade funktioner, som att manipulera din värdmiljö på varje implementering. Vi använder oss av Boxfile i denna handledning för att förenkla uppgifterna och för att göra anspråket återanvändbart på Pagoda Box.

Skapa en fil med namnet "Boxfile" i roten till din lokala Magento-installation, och kopiera sedan följande till din Boxfile (förklaring nedan):

 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

Skapa / namnge webbklustret

Denna Boxfile tjänar flera syften. Först skapar det en web1 komponent, så namnger den mag-app.

Delade skrivbara kataloger

För det andra identifierar Boxfile media och var som delade skrivbara kataloger. Detta gör det möjligt för användare att ladda upp bilder, video och andra media till en distribuerad Magento moln webbplats utan att skriva ut sig själva från synkronisering.

När en katalog är markerad som skrivbar, distribueras innehållet inte längre till Pagoda Box från ditt lokala arkiv. Närhelst lokala filer måste distribueras till dessa kataloger måste de kopieras manuellt via SSH eller SFTP. Du kan också använda SSH / SFTP för att överföra filer från Pagoda Box till din lokala dator efter behov.

PHP-version och -tillägg

Boxfile förklarar också vilken PHP-version och tillägg som kommer att inkluderas i dina webbinstanser när de distribueras. På detta sätt är både miljön och applikationen versionerade tillsammans, så att rulla tillbaka till en tidigare implementering inkluderar rätt PHP-version och tillägg. Listan över PHP-tillägg i denna Boxfile togs från Magentos officiella systemkrav.

Tips! När Git har installerats i din lokala miljö använder du .gitignore fil för att ignorera skrivbara kataloger som anges i din Boxfile. Identifiera dessa kataloger inuti .gitignore filen bidrar till att minska storleken på din repo och din implementeringstid. Förutom de skrivbara katalogerna kan du också lägga till dataöverföring katalog till .gitignore filen, eftersom den används lokalt, och inte på Pagoda Box.

När du har installerat Git och Terminal Client, konfigurerat Boxfile och slutfört din lokala källkod, är du redo att starta på Pagoda Box.


Steg 5: Skapa ett gratis pagodåda konto

Om du inte redan har en, skapa ett gratis Pagoda Box-konto. Du behöver inte ange ett kreditkort för att installera Magento för testning.

Om du inte redan har gjort det, följ den här handboken för att lägga till en SSH-nyckel i din Pagoda Box Admin-panel. Guiden kommer att ge specifika instruktioner för hur du skapar en SSH-nyckel på antingen Mac eller Windows.


Steg 6: Ladda upp Magento till Pagoda Box

När du har skapat ett Pagoda Box-konto och skapat en SSH-nyckel, gå till Hemsidan i ditt nya konto och klicka på knappen "Ny applikation" för att skapa en ny applikation.

Obs! Den här handledningen beskriver vår proverapplikation "magento". Appnamnet används också för Pagoda Box-förvaret, underdomänen för den nyligen distribuerade applikationen (magento.pagodabox.com) och användarnamnet i SFTP-läget. Ersätt "magento" med "ditt-app-namn-här" där det är lämpligt under resten av denna handledning.

Ladda upp till en tom repo (rekommenderas för denna handledning)

Välj sedan de 3 alternativen för att starta din Magento-webbplats. Eftersom du redan har en anpassad version av Magento lokalt, välj "Tom Repo" för att distribuera med SFTP eller Git, namnge din ansökan och klicka på "Starta program".

Du kommer att bli ombedd att välja din föredragna installationsmetod (Git eller SFTP). Klicka på din inställning och följ instruktionerna på skärmen.

Git Alternativ

Du kan kopiera och klistra in instruktionerna på skärmen från Pagoda Box-instrumentpanelen till din terminal efter att du har använt Terminal för att ändra katalog (cd) till roten till ditt projekt.

De klistrade kommandona gör följande:

  • git init - Initiera ditt Magento-projekt som ett Git-arkiv
  • git lägg till . - Lägg till alla filer från projektet till repo
  • git commit -m 'du begår meddelande " - Begå filer med ett meddelande som gör att du snabbt kan skanna distribuera historiken i framtiden, om du behöver återställa eller ändra ändringar
  • git fjärrkontroll lägg till pagoda [email protected]: magento.git - Lägg till Pagoda Box som fjärrkontroll (den specifika git-url för din applikation visas på både den här skärmen och i din app-instrumentpanel
  • git push pagoda - all - Skjut din lokala kod till Pagoda Box-fjärrförvaret. Så länge du är på "master" -grenen (som är standard), kommer Pagoda Box automatiskt att distribuera din kod och utföra de instruktioner som vi ställer in i Boxfile. Auto-implementering kan stängas av i Admin-instrumentpanelen, eller konfigureras att distribueras automatiskt från en Git-filial än Master.

SFTP-alternativ

Om du valde SFTP, kommer Pagoda Box att vägleda dig genom att skapa inloggningsuppgifter och lösenord. Anslut via SFTP till Pagoda Box, och ladda upp din Magento källkod i koda katalog.


Steg 7: Skapa en databas

Det finns två sätt att skapa en databas på Pagoda Box. Varje har fördelar, förklaras nedan:

Skapa en DB i Boxfile

Boxfile skapar automatiskt en databaskomponent vid distribuering, så länge den komponenten (db1, dB2, etc.) existerar inte redan. Att deklarera databasen i Boxfile sparar lite tid nu och gör det möjligt att distribuera flera Magento-webbplatser från en standardiserad kodbas i framtiden. (Obs! Bara Cloud DBs kan distribueras från Boxfile. Om du behöver en större, dedikerad eller överflödig databas, se alternativet Dashboard senare i det här steget.) Lägg till följande i din Boxfile:

 db1: namn: mag-db typ: mysql

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 - såp db1: namn: mag-db typ: mysql

Gör sedan ändringar i den uppdaterade filen och tryck ändringar till Pagoda Box:

 $ git commit -m "pagoda config" $ git push pagoda --all

Alternativ: Skapa en DB i Dashboard

Du kan också skapa en databas från Pagoda Box Dashboard. Här lägger du till en större, dedikerad eller överflödig databas.

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

Pagoda Box kommer att gå igenom en serie skärmar för att konfigurera din databas, beroende på dina val. Om du har valt alternativet Dedicated, kommer du att bli ombedd att dimensionera din databas enligt följande:

Cloud databaser brukar distribuera inom några minuter. Om du väljer Dedicated, bli inte otålig. Du kan vänta i upp till 90 minuter för att en stor server ska tillhandahållas enligt dina specifikationer.


Steg 8: Konfigurera DB-referenser för produktion

Din databas genererar automatiskt referenser när den är skapad på Pagoda Box. Vi använder dessa referenser för att konfigurera Magento i produktion.

Men eftersom Magento kommer att användas i både lokala miljöer och i produktion, måste vi tillhandahålla olika databasuppgifter för var och en. Vi använder Deploy Hooks i Boxfile för att förenkla denna process genom att utföra skript eller kommandon under implementering.

I fallet med Magento byter vi local.xml fil vid deployering. På så sätt, utan att manuellt byta referenser, app / etc / local.xml filen kommer automatiskt att ha lokala databasuppgifter i utveckling, men produktionsdatabasuppgifter på Pagoda Box.

Skapa en local.xml för Production

Skapa först en katalog som heter pagod i root, kopiera sedan Magento app / etc / local.xml till den nya katalogen.

Ändra sedan local.xml att inkludera Pagoda Box databasuppgifter från din kontos instrumentpanel. Observera att Pagoda Box använder 3 nivåer av autentisering, så att andra användare inte kan komma åt din databas även om dina referenser är äventyrade..

Byt local.xml Configs on Deploy

Lägg till följande i din Boxfile, under web1 avsnitt för att skapa implementeringshaken.

 after_build: "mv pagoda / local.xml app / etc / local.xml"

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 efter_build: - "mv pagoda / local.xml app / etc / local.xml "db1: namn: mag-db typ: mysql

Gör sedan för ändringar och tryck till Pagoda Box:

 $ git lägg till. $ git commit -m "pagoda config" $ git push pagoda --all

Steg 9: Migrera databasen

Med samma verktyg som du använder för att hantera en lokal databas kan du säkert hantera en levande databas på Pagoda Box. Vi använder Sequel Pro för det här exemplet, men processen är likadan för verktyg som HeidiSQL.

Exportera din lokala DB

När Magento installationsskript kördes lokalt skapade det flera tabeller i den lokala databasen. Dessa tabeller måste migreras till produktion.

Först exporterar du din lokala databas med din databashanterare: File> Export.

Välj nu en plats och Spara exporten.

Skapa en säker DB-anslutning

Skapa nu en databasstunnel. Använda Pagoda Box Terminal Client, ange appen vars databas du försöker få åtkomst till och databasen komponentens ID (t ex db1), som i det här exemplet:

 $ pagoda-en magento tunnel -c db1 --OR-- $ pagoda --app = magento tunnel - komponent = db1

När tunneln är etablerad använder du Sequel Pro (eller liknande) för att ansluta till databasen med hjälp av värden och porten som tillhandahålls av Pagoda Terminal Client ...

Och användarnamnet och lösenordet i din Pagoda-databasuppgifter. Dessa skapades automatiskt med din databas och kan hittas i Pagoda Box Dashboard under databaskomponenten (se exempel i steg 8).

Importera och uppdatera produktions DB

Därefter importerar du din databas till produktion med Sequel Pro (eller liknande): Arkiv> Importera. Välj nu databaseksportfilen och Öppna.

Slutligen, eftersom vi körde installationsskriptet lokalt, är det nödvändigt att justera basadressen direkt i databasen innan du surfar på webbplatsen. Medan du fortfarande är ansluten till Pagoda Box-databasen i Sequel Pro, navigera / filtrera till core_config_data bord och redigera värdet för följande banor:

 webb / osäker / base_url web / secure / base_url

Värdena för varje ska se ut så här:


Steg 10: Konfigurera Mail

För att skydda dina IP-adresser från att bli flaggad som skräppost använder Pagoda Box SMTP-postprotokollet för att skicka e-post via SMTP-behörigheter från tredje part. På engelska betyder det att du behöver ett företag (som Gmail) som tillhandahåller posttjänster.

Oavsett vilken postleverantör du väljer anger du kontouppgifter från den leverantören i din Pagoda Box-instrumentpanel. Det borde se ut så här:


Steg 11: Cronjobb (Valfritt)

Några återkommande uppgifter i Magento (t.ex. att skicka nyhetsbrev, loggrengöring, kundmeddelanden etc.) måste hända regelbundet. De cron.php filen som ligger i Magento rot kommer att utlösa dessa uppgifter. Vi ställer in ett Cron-jobb i administratörspanelen i Pagoda Box för att köra cron.php var 15: e minut. (Obs! För att konfigurera Magento-specifika uppgifter, se deras officiella guide.)

Cronjobb i Boxfile

Cron Jobs kan läggas till eller uppdateras via Boxfile, sedan distribueras till Pagoda Box. För att schemalägga en uppgift med 15 minuters intervall lägger du till följande i din Boxfile under web1: komponent (ändra "magento" för att peka på ditt eget appnamn / underdomän):

 cron: - "* / 15 * * * *": "curl -s -o / dev / null http://magento.pagodabox.com/cron.php"

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 efter_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

Alternativ: Cronjobb i instrumentpanelen

Lägg till följande i Pagoda Box-administratörspanelen under fliken Cron (ändra "magento" för att peka på ditt eget appnamn):

Kommando: curl -s -o / dev / null http://magento.pagodabox.com/cron.php

Schema: * / 15 * * * *

Det ska se ut så här:


Del 2 - Optimering: Redis, Scaling & Benchmarking

Du har redan fått det tunga att lyfta ur vägen. Din Magento-applikation är skalbar, och ändringar kan enkelt distribueras i alla fall med $ git push pagoda - all.

I uppföljningsartikeln optimerar vi Magento, lägger till en Redis-cache, SSL och Domain alias, sedan skala applikationen för benchmarking och produktion. Ses snart!