In questa esercitazione di follow-up, ottimizzeremo Magento, aggiungeremo una cache Redis, l'alias SSL e DNS, quindi ridimensioneremo l'applicazione per il benchmarking e la produzione. Quanto segue presuppone che tu abbia già utilizzato il primo tutorial per avviare un'applicazione cloud Magento di base su Pagoda Box. Pronto per l'ottimizzazione?
Puoi scaricare il codice finito per questo tutorial o installare Magento da una Avvio rapido per testare un sito funzionante.
Fair Warning: Pagoda Box non è un hosting tradizionale. Questo tutorial non solo ottimizza Magento, ma pone le basi per un flusso di lavoro progressivo di integrazione continua.
Abilitare un Bytecode Cache ottimizzerà le prestazioni, specialmente con codebase di grandi dimensioni come Magento. È possibile utilizzare la cache bytecode di eAccelerator o XCache, ma Magento consiglia APC. Per abilitare APC, è sufficiente aggiungerlo all'elenco delle estensioni php nel file Box come segue:
web1: php_extensions: - apc
Il tuo nuovo file Box 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 - 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: nome : tipo mag-db: mysql
Per impostazione predefinita, le sessioni Magento su Pagoda Box si trovano nell'archivio scrivibile e sono accessibili a tutte le istanze Web. Questo tutorial sposta le sessioni su Redis, che è un "negozio di valori-chiave avanzato". Redis fornisce una cache in memoria estremamente potente, unita a dati persistenti per prestazioni di lettura, scrittura e sessione di gran lunga migliori.
Innanzitutto, abilita l'estensione Redis aggiungendo - Redis
all'elenco delle estensioni nel file Box, proprio come abbiamo fatto per APC. Ciò consente ai componenti PHP di connettersi con Redis. Aggiungi anche un componente cache Redis al tuo file Box come segue:
cache1: nome: mag-cache type: redis
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 - 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 : nome: mag-db type: mysql cache1: name: mag-cache type: redis
Quando un componente Redis è incluso nel file Box, una cache Redis viene automaticamente aggiunta all'infrastruttura quando si distribuiscono gli aggiornamenti.
È inoltre possibile creare una cache Redis dal dashboard della casella Pagoda. Il Dashboard è anche il punto in cui ridimensiona il componente Redis.
Per prima cosa, fai clic su "Aggiungi cache" nella Dashboard.
... quindi scegli Redis.
Una volta che il nuovo componente della cache è stato distribuito, fai clic su di esso nella Dashboard, quindi scegli la quantità di RAM preferita come segue:
I dati sono persistenti con Redis, quindi puoi ridimensionare la cache senza perdere sessioni o memorizzare nella cache i dati conservati in memoria, diversamente da Memcache.
Questo tutorial condivide un singolo componente Redis per le sessioni Magento e la memorizzazione nella cache. Se il tuo sito riceve traffico sufficiente, la creazione di un componente Redis separato per entrambe le sessioni e la memorizzazione nella cache può fornire una misura aggiuntiva delle prestazioni.
Configura le sessioni Magento per usare Redis.
Se hai mai bisogno di sovrascrivere i file di default di Magento (come faremo qui), non modificare i file principali di Magento. I file di sostituzione devono sempre risiedere nella directory locale di Magento per proteggere funzionalità e aggiornamenti futuri.
Modifica la sezione del gestore di sessione del tuo local.xml
file per utilizzare Redis e impostare il percorso di salvataggio della sessione nel modo seguente:
Successivamente, aggiungi il supporto Redis a Magento sostituendo un file Magento principale. Copia il file:
app / code / core / Mage / core / Modello / Session / Estratto / Varien.php
Quindi crea la tua versione locale a:
app / code / local / Mage / core / Modello / Session / Estratto / Varien.php
Nel nuovo file, attorno alla riga 62, aggiungere quanto segue:
case 'redis': ini_set ('session.save_handler', 'redis'); session_save_path ($ this-> getSessionSavePath ()); rompere;
Ora, configura la cache Magento per usare Redis.
Aggiungi la libreria Credis e il modulo Cm per abilitare Redis come cache Magento. Il modulo è costituito da un file, che puoi scaricare qui. Sebbene l'autore del modulo Cm raccomandi di installare tramite modman, modman non registra correttamente tutti i sottomoduli con Pagoda Box. Invece, salva il file come: app / code / comunità / CM / cache / backend / Redis.php
.
Aggiungi la libreria Credis come sottomodulo Git al tuo progetto:
$ cd your_site_dir $ git submodule add git: //github.com/colinmollenhour/credis.git lib / Credis
Ancora una volta, modifica il file local.xml
file. Cambia la cache delcaration e il suo contenuto come segue:
Cm_Cache_Backend_Redis tunnel.pagodabox.com 6379 0 0 0 1 1 20480 gzip
Imposta il futuro lontano per ridurre drasticamente il numero di richieste per visitatore mentre navigano nel tuo sito. Fallo dopo aver terminato il lavoro a tema frontend. Aggiungendo quanto segue static_expire
direttiva al web1
la sezione del tuo file box scadrà nella cache delle risorse statiche dopo 1 anno.
web1: static_expire: 31536000
Aggiungi i file aggiornati a git, commit e push su Pagoda Box.
$ git add. $ git commit -m 'installato e configurato redis' $ git push pagoda --all
Dopo la distribuzione, svuota la cache del sistema Magento accedendo al tuo amministratore Magento e vai a Sistema -> Gestione cache, quindi facendo clic su "Flush Magento Cache".
Magento ha alcune utilità di ottimizzazione che uniscono i file javascript e css, quindi li colloca nello storage scrivibile condiviso della Pagoda Box. La maggior parte delle volte è un non-problema, ma ad alto volume di traffico, Pagoda Box può accedere ai file dalle istanze web distribuite molto più velocemente dei file nella memoria scrivibile condivisa. Per prestazioni ad alto traffico, mantenendo javascript e css nel repository, si ottiene una sovraperformance minima.
Per disattivare la fusione dei file, accedi al pannello di amministrazione di Magento, quindi vai a: Sistema> Configurazione> Sviluppatore
Scegli "No" in Impostazioni JavaScript e Impostazioni CSS come segue:
Ora che Magento è configurato per Redis, verifica che tutto funzioni correttamente. Segui questa guida Redis per stabilire un tunnel sicuro, quindi usa il terminale per accedere a Redis su Pagoda Box. Una volta connesso, eseguire il seguente comando per visualizzare un elenco di tutte le chiavi memorizzate.
$ chiavi *
Supponendo che abbiate navigato nel sito udpato, dovreste vedere un elenco di chiavi assortite. Se vedi solo le chiavi di sessione, solo le chiavi della cache, o se non vedi nessuna chiave, rivedi le impostazioni di configurazione e assicurati di aver svuotato la cache di Magento.
Per un elenco completo di comandi utili quando si utilizza Redis, consultare la documentazione ufficiale.
Piggyback SSL è gratuito e automatico per ogni app su Pagoda Box nel sottodominio della loro app (appname.pagodabox.com). Mentre è possibile eseguire il benchmark utilizzando Piggyback SSL, abiliteremo SSL di terze parti per gli scopi del tutorial. Wildcard Certs e SSL autofirmato sono dettagliati in questa guida DNS / SSL.
Inizia facendo clic sul pulsante "Aggiungi un certificato SSL" sotto la scheda DNS / SSL nel pannello Pagoda Box.
Successivamente, scegli se stai creando un certificato o se utilizzi un certificato SSL esistente, poiché siamo qui. Supponendo che tu abbia un certificato esistente, fai clic su "Trasferisci esistente".
Infine, incolla le informazioni pertinenti nel campo appropriato e attiva. Il tuo certificato SSL è ora salvato con la tua applicazione.
Dopo aver inserito un certificato SSL, verrà visualizzato nell'elenco dei certificati SSL disponibili. Se non lo hai già fatto, aggiungi il tuo dominio personalizzato come alias DNS alla tua applicazione. Fai clic su "Aggiungi nuovo alias" e inserisci il tuo dominio registrato come alias. Pagoda Box assegnerà un indirizzo IP condiviso per impostazione predefinita, ma questo cambierà quando si associa un certificato SSL con l'alias DNS.
Infine associa il tuo certificato SSL al tuo alias DNS selezionandolo dall'elenco a discesa SSL accanto al tuo Alias DNS, quindi fai clic su "Salva". Con il certificato SSL ora legato al tuo Alias DNS, il tuo alias ottiene un indirizzo IP dedicato unico.
Una volta associato un certificato SSL con un alias DNS, tale alias otterrà un indirizzo IP dedicato. Assicurati di verificare che il tuo A-Record corrisponda all'IP fornito dopo aver aggiunto, cancellato o modificato i tuoi certificati SSL.
Abbiamo usato Blitz.io per confrontare alcune applicazioni Magento. Mette alla prova sia la risposta http che le scritture del database utilizzando gli elenchi di variabili URL e cookie.
Per iniziare, crea un account gratuito su Blitz.io. Dopo esserti registrato, cerca "START!" pulsante nella parte inferiore della tua pagina di benvenuto.
Fai clic su "Start" e Blitz fornirà una serie di semplici tutorial che spiegano le variabili che utilizzerai in un URL di query per testare la tua applicazione. Per i nostri scopi, l'URL di query di base dovrebbe essere simile a questo:
-p 1-24: 60 -r california -T 4000 -v: elenco cookie [d1b1530ff8694817e1f11f55e0a4a120,805d9a11f3b9f8ea35ee2db1d9aac3fc] -v: elenco url [index.php, furniture.html, ottoman.html, about-magento-demo-store, checkout / cart / add? product = 51] -b "my-cookie = # cookie Ó http://magento-demo.pagodabox.com/#urls
In particolare, tale query testerà gradualmente 1-24 visitatori simultanei (può testare fino a 250 con account gratuito) per oltre 60 secondi, dalla California, con un timeout di 4 secondi. La query imposta anche un elenco di cookie e URL come variabili, oltre al dominio che stiamo testando. Abbiamo incluso una pagina iniziale, una pagina CMS, una pagina catalogo, una pagina prodotto e una pagina di verifica.
Utilizzando le variabili Cookie e un checkout / carrello / aggiungi? URL prodotto ci consente di testare le scritture DB. Ottieni un elenco di cookie validi navigando il tuo sito in Chrome> Ispeziona elemento> Risorse> Cookie> [tuo sito]> frontend. Copia la chiave dalla colonna Valore, come indicato di seguito:
Sostituisci i cookie, gli URL e il dominio dalla query URL in alto con gli elementi appropriati dal tuo sito, quindi inserisci la nuova query su Blitz.io e fai clic su "Esegui".
La prima volta che esegui il "rush" della tua app, Blitz visualizzerà un errore di autorizzazione e ti chiederà di dimostrare la proprietà aggiungendo un URL specifico alla tua app. Segui le istruzioni Blitz su schermo per creare un file di autorizzazione univoco sul tuo computer locale, quindi invia le modifiche a Pagoda Box.
$ git add. $ git commit -m "file di autenticazione blitz" $ git push pagoda --all
Conferma che il nuovo file è attivo visitando l'URL in un browser. Dovresti vedere "42". Si noti che la "radice della directory www" è la radice del progetto, a meno che non sia stato configurato document_root
nel tuo file Box per essere un'altra directory.
Una volta che tutto è a posto, sei libero di regolare le variabili Blitz e testare. Ad esempio, cambiando 1-24
a 60-60
cambierà la concorrenza da un aumento graduale a 24 concorrenza a 60 visitatori simultanei sostenuti. L'isolamento degli URL nell'elenco delle variabili consente di identificare i colli di bottiglia delle prestazioni isolando vari tipi di pagina. È anche possibile testare la capacità di scrittura del DB utilizzando il comando checkout / cart / aggiungi?
url.
Naturalmente, il benchmarking è semplicemente un indicatore per aiutare a ridimensionare l'applicazione. Assicurati di ridimensionare a vari livelli come punto di riferimento, osservando il cambiamento nei risultati (vedi Scalatura del video Magento). Blitz.io dovrebbe aiutare a identificare i colli di bottiglia delle applicazioni e determinare la scala appropriata per il traffico previsto.
C'è stato un bel po 'di lavoro di preparazione iniziale per arrivare a questo stadio, ma è qui che tutto si unisce. L'integrazione continua, la gestione continua e la scalabilità sono ora molto più semplici. Come punto di riferimento, tieni presente che le tariffe sono orarie. Scalare per testare brevemente costerà solo pochi dollari.
Per ridimensionare l'applicazione Web per ottenere più traffico, apri il componente Web dal dashboard Pagoda Box come segue:
Quindi, fai clic e trascina il cursore sul numero desiderato di istanze e fai clic su "Salva". Pagoda Box distribuirà Magento dal tuo repository alle nuove istanze. Dopo che tutte le istanze sono state create e verificate, il livello di routing reindirizzerà il traffico verso le nuove istanze e rimuoverà il vecchio senza alcun tempo di inattività (di nuovo, vedi Scalatura del video di Magento).
Nota: mentre lo stai usando, il dispositivo di scorrimento appare al massimo a 25 istanze, ma si resetterà per una maggiore scalabilità dopo che il limite superiore è stato salvato.
Per ridimensionare il database cloud, aprire il componente Databsase dal dashboard Pagoda Box come segue:
Notare che la faccia rossa è infelice perché l'utilizzo della RAM è troppo alto. Per aumentare la RAM, fare clic sulla freccia verde "Cambia", selezionare la quantità di RAM desiderata e fare clic su "Salva".
Pagoda Box creerà un database più grande, eseguirà la migrazione dei dati, sincronizzerà la replica master-master, quindi indirizzerà l'applicazione al nuovo database. Il tuo sito è attivo durante la migrazione.
Per ridimensionare il tuo database privato, apri il tuo componente Databsase dal dashboard Pagoda Box come segue:
Seleziona le risorse che desideri per il tuo database, determina se desideri la replica, quindi fai clic su "Salva".
Pagoda Box creerà un database più grande, eseguirà la migrazione dei dati, sincronizzerà la replica master-master, quindi indirizzerà l'applicazione al nuovo database. Il tuo sito è attivo durante la migrazione.
Tieni presente che l'ordine di un database privato può richiedere più di 20 minuti, poiché un server viene fornito in base alle tue specifiche.
Nota: al momento, il ridimensionamento da un database Cloud a un database privato richiede alcuni tempi di inattività durante la migrazione manuale dei dati. Il passaggio da Cloud a Cloud o da privato a privato è sempre automatico.
Questo è tutto! La tua applicazione Magento è ora completamente scalabile in un istante e gli aggiornamenti sono facilmente implementabili con $ git push pagoda --all
. Godere!