Come Super-Scale Magento nel Cloud

Questo tutorial ti aiuterà a preparare un'installazione Magento per un alto traffico, tempi di caricamento migliori e una gestione dei siti continua più semplice. Pronto?


Requisiti

Puoi scaricare il codice finito per questo tutorial, o avviare il Quickstart "magento-basic" dal tuo account Pagoda Box per testare un sito di lavoro.

  • Un account casella Pagoda (gratuito)
  • Un'installazione Magento locale funzionale
  • Software di sviluppo locale (MAMP o WAMP)
  • Git Installato (può usare SFTP)
  • Il client del terminale Pagoda installato

Fair Warning: questo tutorial potrebbe cambiarti la vita. Pagoda Box non è un hosting tradizionale. Gli insegnamenti contenuti in questo articolo non solo aiuteranno a ridimensionare Magento, ma gettano anche le basi per un progressivo flusso di lavoro tra sviluppo e produzione.


Passaggio 1: impostazione Git locale (SFTP funzionerà come alternativa)

Nota: se già usi Git, puoi saltare questa sezione. In caso contrario, la guida Impostazione di Git fornisce istruzioni specifiche per la creazione di una chiave SSH, nonché collegamenti per scaricare e installare Git (anche di seguito).

Mentre è possibile utilizzare solo SFTP su Pagoda Box, il flusso di lavoro ufficialmente raccomandato (e più efficiente) integra Git nel tuo sviluppo quotidiano. Git abilita funzionalità come la collaborazione, la distribuzione uniforme del codice, distribuisce, implementa la cronologia e ripristina il codice. Mentre la maggior parte di queste funzionalità sono disponibili per gli utenti FTP, l'utilizzo di Git rende l'integrazione perfetta.

Se vuoi sfruttare appieno Pagoda Box, scarica Git e impara le basi. A seconda del sistema operativo, la configurazione può variare leggermente. Indipendentemente dal tuo sistema operativo, i comandi sono identici una volta installato Git.

L'utilizzo di Git per gestire la collaborazione e il controllo della versione può comportare una breve curva di apprendimento. Tuttavia, ci sono generalmente solo tre comandi che useremo su base continuativa per commettere modifiche localmente, quindi distribuire in Pagoda Box:

  • aggiungi git . - Aggiunge file locali al tuo repository
  • git commit -m "qualche messaggio su quello che hai fatto" - Impegna le tue modifiche
  • git push pagoda --all - Sposta le modifiche al Pagoda Box Repository (distribuito automaticamente per impostazione predefinita)

Li useremo più tardi.


Passaggio 2: installare il client del terminale della casella Pagoda

 * / \ / \ + _ / / / | \ \ \ _ + || * ||| * || | + || * || + | / \ + _ / / / | \ \ \ _ + || * ||| * || | + || * || + | ____ _ ____ ___ ____ _ ____ _____ __ | _ \ / \ / ___ | / _ \ | _ \ / \ | __) / _ \ \ / / | | _) / _ \ | | _ | | | | | | | / _ \ | _ \ | | | \ / | __ / ___ \ | _ | | | _ | | | _ | / ___ \ | | _) | | _ | / \ | _ | / _ / \ _ \ ____ | \ ___ / | ____ / _ / \ _ \ ____ / \ ___ / _ / \ _ \ Benvenuto nel tuo terminale del box box Pagoda. ----------------------------------------------- --- -------------------------------------- ------------ --------------------- Godere.

Pagoda Box fornisce un Terminale Client che consente di clonare, creare, distribuire, distruggere, rinominare e rollback di un'applicazione dalla riga di comando. Più avanti in questo tutorial, utilizzeremo il client per creare un tunnel sicuro per il database Magento attivo con Sequel Pro (il processo è simile per altri strumenti di gestione database come HeidiSQL).

Il Pagoda Box Terminal Client è un rubygem, quindi l'installazione è piuttosto semplice. Prima di tutto, è necessario installare Ruby. L'installazione è diversa per ogni sistema operativo.

  • Mac: Ruby e RubyGems sono preinstallati su Mac OSX. Finché utilizzi la versione 10.5 o successiva, dovresti essere pronto.
  • Windows: ci sono un paio di modi diversi per installare Ruby in Windows. Raccomandiamo questo auto-installazione. Se non funziona per il tuo set-up, una ricerca su Google ti fornirà un elenco abbastanza buono di passaggi di installazione.
  • Linux: usa il tuo gestore di pacchetti preferito per scaricare il pacchetto Ruby. Per gli utenti di Ubuntu, la gemma è disponibile tramite getdeb.net.

Installa e verifica il client del terminale

Una volta installato Ruby, è sufficiente eseguire il seguente comando per installare il Pagoda RubyGem:

Su Mac o Linux:

 $ sudo gem install pagoda

Su Windows:

 $ gem installare la pagoda

Quindi, per verificare che la gemma Pagoda sia installata correttamente, esegui:

 $ elenco pagoda

Se è la prima volta che usi la gemma, ti chiederà il nome utente e la password della casella Pagoda. Dopo aver inserito quelli, aspettati di vedere un elenco delle tue applicazioni Pagoda Box. Se non hai creato alcuna applicazione, l'elenco sarà vuoto.

Se ricevi un errore, è probabile che siano credenziali non valide. È possibile verificare o modificare le credenziali utilizzate dalla gemma modificando il file che si trova sul computer locale all'indirizzo ~ / .Pagodarc. Assicurati di abbinare esattamente le credenziali che usi nel tuo account Pagoda Box. (Nota: questo è un file nascosto, quindi dovrai abilitare i file nascosti o aprirli tramite il terminale.Anche nota che il file memorizza le tue credenziali due volte, quindi modificale entrambe se necessario).


Passaggio 3: installa Magento localmente

Nota: saltare questo passaggio se si dispone già di un'installazione Magento locale funzionante.

Se non lo hai già, assicurati di utilizzare il server web locale e il software di gestione del database. Ci sono diverse opzioni disponibili, a seconda del tuo sistema operativo. Un'opzione comune per Mac è MAMP, o WAMP per Windows. Entrambi sono gratuiti e facilmente configurabili.

Una volta impostato l'ambiente di sviluppo locale, andare avanti e scaricare Magento, quindi seguire la guida ufficiale per installare Magento localmente.

Sentiti libero di usare lo script di installazione automatica di Magento per configurare l'applicazione nel tuo ambiente locale. Tuttavia, a causa dell'architettura cloud distribuita di Pagoda Box, lo script non installa Magento direttamente nell'ambiente di produzione. Il flusso di lavoro e l'architettura della Pagoda Box richiedono che si apportino modifiche al codice in locale, si impegni, quindi si distribuisca in produzione. Questo flusso di lavoro si adatta alla collaborazione e allo sviluppo> staging> best practice di produzione.


Passaggio 4: configura PHP utilizzando un file di casella

Nota: nella casella Pagoda è possibile includere un file YAML nella radice del repository di codice. Mentre Boxfile è opzionale, fornisce funzionalità avanzate, come la manipolazione dell'ambiente ospitato su ogni deploy. Utilizzeremo il file Box in modo estensivo in questo tutorial per semplificare le attività e per rendere il contenitore riutilizzabile su Pagoda Box.

Crea un file chiamato "Boxfile" nella root dell'installazione locale di Magento, quindi copia quanto segue nel tuo Box File (spiegazione sotto):

 web1: nome: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - curl - soap

Crea / nomina il Web Cluster

Questo Boxfile serve a diversi scopi. In primo luogo, crea a web1 componente, quindi lo nomina MAG-app.

Directory condivise scrivibili

In secondo luogo, il file Box identifica media e var come directory scrivibili condivise. Ciò consente agli utenti di caricare immagini, video e altri media su un sito cloud Magento distribuito senza che le istanze si scrivano fuori sincrono.

Quando una directory è contrassegnata come scrivibile, i contenuti non vengono più distribuiti in Pagoda Box dal repository locale. Ogni volta che i file locali devono essere distribuiti in queste directory, devono essere copiati manualmente tramite SSH o SFTP. È inoltre possibile utilizzare SSH / SFTP per trasferire i file dalla Pagoda Box al computer locale, se necessario.

Versione PHP ed estensioni

Il Boxfile dichiara anche quale versione ed estensioni PHP saranno incluse nelle istanze Web durante la loro distribuzione. In questo modo, sia l'ambiente che l'applicazione sono messi in versione insieme, quindi tornare a una distribuzione precedente include la versione e le estensioni PHP corrette. L'elenco delle estensioni PHP in questo Boxfile è stato preso dai requisiti di sistema ufficiali di Magento.

Suggerimento: una volta installato Git nell'ambiente locale, utilizzare .gitignore file per ignorare le directory scrivibili specificate nel file Box. Identificare queste directory all'interno di .gitignore il file aiuta a ridurre le dimensioni del repository e il tempo di implementazione. Oltre alle directory scrivibili, puoi anche aggiungere il downloader directory al .gitignore file, poiché è usato localmente e non su Pagoda Box.

Dopo aver installato Git e il client del terminale, configurato il file Box e finalizzato il codice sorgente locale, sei pronto per il lancio su Pagoda Box.


Passaggio 5: creare un account casella Pagoda gratuito

Se non ne hai già uno, crea un account gratuito Pagoda Box. Non è necessario inserire una carta di credito per installare Magento per i test.

Se non lo hai già fatto, segui questa guida per aggiungere una chiave SSH nel pannello di amministrazione della Pagoda Box. La guida fornirà istruzioni specifiche per l'impostazione di una chiave SSH su Mac o Windows.


Passaggio 6: carica Magento nella casella Pagoda

Dopo aver creato un account Pagoda Box e aver impostato una chiave SSH, vai alla Home Page nel tuo nuovo account e fai clic sul pulsante "Nuova applicazione" per creare una nuova applicazione.

Nota: questo tutorial assegna alla nostra applicazione di esempio "magento". Il nome dell'app viene anche utilizzato per il repository Pagoda Box, il sottodominio per l'applicazione appena implementata (magento.pagodabox.com) e il nome utente in modalità SFTP. Sostituisci "magento" con "nome-app-qui" dove appropriato durante il resto di questo tutorial.

Carica su un Repo vuoto (consigliato per questo tutorial)

Quindi, scegli tra le 3 opzioni per avviare il tuo sito Magento. Dato che hai già una versione personalizzata di Magento localmente, seleziona 'Empty Repo' per la distribuzione usando SFTP o Git, dai un nome all'applicazione e fai clic su "Avvia applicazione".

Ti verrà chiesto di selezionare il metodo di distribuzione preferito (Git o SFTP). Fai clic sulle tue preferenze e segui le istruzioni sullo schermo.

Opzione Git

Puoi copiare e incollare le istruzioni sullo schermo dal dashboard Pagoda Box al tuo terminale dopo aver usato Terminal per cambiare directory (cd) alla radice del tuo progetto.

I comandi incollati eseguono le seguenti operazioni:

  • git init - Inizializza il tuo progetto Magento come repository Git
  • aggiungi git . - Aggiungi tutti i file dal progetto al repository
  • git commit -m 'il tuo messaggio di commit' - Configura i file con un messaggio che ti consente di eseguire rapidamente la scansione della cronologia di distribuzione in futuro, nel caso in cui sia necessario ripristinare o modificare le modifiche
  • git remote aggiungi pagoda [email protected]: magento.git - Aggiungi Pagoda Box come remoto (l'url git specifico per la tua applicazione appare sia su questa schermata, sia nella dashboard dell'app
  • git push pagoda --all - Inserisci il tuo codice locale nel repository remoto Pagoda Box. Finché sei sul ramo "master" (che è l'impostazione predefinita), Pagoda Box distribuirà automaticamente il tuo codice ed eseguirà le istruzioni che abbiamo impostato nel file Box. La distribuzione automatica può essere disattivata nella dashboard di amministrazione o configurata per la distribuzione automatica da un ramo Git diverso da Master.

Opzione SFTP

Se hai optato per SFTP, Pagoda Box ti guiderà attraverso la creazione di credenziali e una password. Connettiti tramite SFTP a Pagoda Box e carica il tuo codice sorgente Magento in codice elenco.


Passaggio 7: creare un database

Ci sono due modi per creare un database su Pagoda Box. Ognuno ha vantaggi, spiegato di seguito:

Crea un DB nel file Box

Il file Box creerà automaticamente un componente del database durante l'implementazione, purché tale componente (db1, db2, ecc.) non esiste già. La dichiarazione del database nel file Box consente di risparmiare un po 'di tempo e rende la distribuzione di più siti Magento da una base di codice standardizzata molto più semplice in futuro. (Nota: solo i DB cloud possono essere distribuiti dal file Box. Se è necessario un database più grande, dedicato o ridondante, vedere l'opzione Dashboard più avanti in questo passaggio.) Aggiungere il seguente file Boxfile:

 db1: nome: mag-db type: mysql

Il tuo Boxfile aggiornato dovrebbe assomigliare a questo:

 web1: nome: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - curl - soap db1: nome: mag-db tipo: mysql

Quindi commetti le modifiche al file aggiornato e fai clic su Cambia in Pagoda Box:

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

Alternativo: crea un DB nella Dashboard

È inoltre possibile creare un database dal Dashboard della casella Pagoda. Qui è dove si aggiunge un database più grande, dedicato o ridondante.

Innanzitutto, fai clic su "Aggiungi database" nella Dashboard.

Pagoda Box passerà attraverso una serie di schermate per configurare il tuo database, a seconda delle tue scelte. Se hai scelto l'opzione Dedicato, ti verrà chiesto di ridimensionare il tuo database come segue:

I database cloud di solito vengono distribuiti in pochi minuti. Se hai scelto Dedicato, non diventare impaziente. È possibile attendere fino a 90 minuti per il provisioning di un server di grandi dimensioni alle specifiche.


Passaggio 8: Configurare le credenziali DB per la produzione

Il tuo database genera automaticamente le credenziali quando viene creato su Pagoda Box. Useremo queste credenziali per configurare Magento in produzione.

Tuttavia, dal momento che Magento verrà utilizzato in entrambi gli ambienti locali e in produzione, è necessario fornire credenziali di database diverse per ciascuno. Useremo Deploy Hooks nel file Box per semplificare questo processo eseguendo script o comandi durante l'implementazione.

Nel caso di Magento, scambiamo il local.xml file sulla distribuzione. In questo modo, senza cambiare manualmente le credenziali, il app / etc / local.xml il file avrà automaticamente le credenziali del database locale in fase di sviluppo, ma le credenziali del database di produzione su Pagoda Box.

Creare un local.xml per la produzione

Per prima cosa, crea una directory chiamata pagoda in root, quindi copia Magento app / etc / local.xml nella nuova directory.

Quindi, modifica local.xml per includere le credenziali del database Pagoda Box dalla dashboard dell'account. Nota che Box Pagoda utilizza 3 livelli di autenticazione, in modo che anche se le tue credenziali sono compromesse, altri utenti non possono accedere al tuo database.

Scambia local.xml Configs on Deploy

Aggiungi il seguente nel tuo file Box, sotto il web1 sezione per creare il deploy hook.

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

Il tuo Boxfile aggiornato dovrebbe assomigliare a questo:

 web1: nome: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - curl - soap after_build: - "mv pagoda / local.xml app / etc / local.xml "db1: nome: mag-db type: mysql

Quindi, effettua il commit delle modifiche e invia alla casella Pagoda:

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

Passaggio 9: migrazione del database

Con gli stessi strumenti che usi per gestire un database locale, puoi gestire in sicurezza un database live su Pagoda Box. Utilizzeremo Sequel Pro per questo esempio, ma il processo è simile per strumenti come HeidiSQL.

Esporta il tuo DB locale

Quando lo script di installazione di Magento è stato eseguito localmente, ha creato diverse tabelle nel database locale. Queste tabelle devono essere migrate in produzione.

Innanzitutto, esportare il database locale utilizzando il gestore database: File> Esporta.

Ora scegli una posizione e salva l'esportazione.

Stabilire una connessione DB sicura

Ora stabilisci un tunnel di database. Usando il Pagoda Box Terminal Client, specifica l'app di cui stai tentando di accedere al database e l'ID del componente del database (ad es. Db1), come in questo esempio:

 $ pagoda -a tunnel magento -c db1 --OR-- $ pagoda --app = magento tunnel --component = db1

Una volta stabilito il tunnel, utilizzare Sequel Pro (o simile) per connettersi al database utilizzando l'host e la porta forniti dal client Pagoda Terminal ...

E il nome utente e la password nelle credenziali del database Pagoda. Questi sono stati creati automaticamente con il tuo database, e possono essere trovati nella Pagoda Box Dashboard sotto il componente del database (vedi esempio al punto 8).

Importa e aggiorna il DB di produzione

Successivamente, importa il tuo database in produzione usando Sequel Pro (o simile): File> Importa. Ora seleziona il file di esportazione del database e Apri.

Infine, poiché abbiamo eseguito localmente lo script di installazione, è necessario regolare l'url di base direttamente nel database prima di navigare nel sito. Mentre sei ancora connesso al database Pagoda Box in Sequel Pro, naviga / filtra in core_config_data tabella e modificare il valore per i seguenti percorsi:

 web / unsecure / base_url web / secure / base_url

I valori per ognuno dovrebbero assomigliare a questo:


Passaggio 10: Configura posta

Per proteggere i tuoi IP dall'essere segnalati come spam, Pagoda Box utilizza il protocollo di posta SMTP per inviare e-mail tramite credenziali SMTP del fornitore di posta di terze parti. In inglese, significa che hai bisogno di una compagnia (come Gmail) che fornisce servizi di posta.

Indipendentemente dal provider di posta scelto, inserire le credenziali dell'account da quel fornitore nel dashboard della Pagoda Box. Dovrebbe assomigliare a qualcosa di simile a questo:


Passaggio 11: Cron Jobs (facoltativo)

Alcune attività ricorrenti in Magento (ad esempio l'invio di newsletter, la pulizia dei registri, le notifiche dei clienti, ecc.) Devono avvenire periodicamente. Il cron.php il file che si trova nella radice di Magento attiverà queste attività. Imposteremo un processo Cron nel pannello di amministrazione della Pagoda Box per l'esecuzione cron.php ogni 15 minuti. (Nota: per configurare le attività specifiche di Magento, vedere la loro Guida Ufficiale.)

Cron Jobs nel file Box

Cron Jobs può essere aggiunto o aggiornato tramite il file Box, quindi distribuito in Pagoda Box. Per pianificare un'attività a intervalli di 15 minuti, aggiungere quanto segue al file Box sotto il web1: componente (cambia il "Magento" in modo che punti al tuo nome / sottodominio della tua app):

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

Il tuo Boxfile aggiornato dovrebbe assomigliare a questo:

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

Alternativo: cron jobs in the dashboard

Nel pannello di amministrazione della Pagoda Box sotto la scheda Cron, aggiungi quanto segue (cambia il "Magento" in modo che punti al tuo nome app):

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

Programma: * / 15 * * * *

Dovrebbe sembrare come questo:


Parte 2 - Ottimizzazione: redis, ridimensionamento e benchmarking

Ti sei già liberato del peso. La tua applicazione Magento è scalabile e le modifiche sono facilmente implementabili in tutte le istanze con $ git push pagoda --all.

Nell'articolo di follow-up, ottimizzeremo Magento, aggiungeremo una cache Redis, gli alias di dominio e SSL, quindi ridimensioneremo l'applicazione per il benchmarking e la produzione. A presto!