In diesem Folientutorial werden wir Magento optimieren, einen Redis-Cache, einen SSL- und einen DNS-Aliasnamen hinzufügen und die Anwendung für Benchmarking und Produktion skalieren. Im Folgenden wird davon ausgegangen, dass Sie bereits das erste Tutorial verwendet haben, um eine grundlegende Magento-Cloud-Anwendung auf Pagoda Box zu starten. Bereit zu optimieren?
Sie können den fertigen Code für dieses Lernprogramm herunterladen oder Magento von einem Schnellstart aus installieren, um eine Arbeitsseite zu testen.
Fair Warning: Pagoda Box ist kein traditionelles Hosting. Dieses Tutorial optimiert nicht nur Magento, sondern schafft auch die Voraussetzungen für einen fortschreitenden kontinuierlichen Integrationsworkflow.
Durch Aktivieren eines Bytecode-Caches wird die Leistung insbesondere bei großen Codebases wie Magento optimiert. Sie können eAccelerator oder XCache-Bytecode-Caching verwenden, Magento empfiehlt jedoch APC. Um APC zu aktivieren, fügen Sie es einfach wie folgt zur Liste der PHP-Erweiterungen in der Box-Datei hinzu:
web1: php_extensions: - apc
Ihre neue Boxdatei sollte folgendermaßen aussehen:
web1: name: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - icon - - 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: name : mag-db typ: mysql
Standardmäßig befinden sich Magento-Sitzungen in Pagoda Box in beschreibbarem Speicher und sind für alle Ihre Webinstanzen verfügbar. In diesem Lernprogramm werden Sitzungen nach Redis verschoben, einem "erweiterten Schlüsselwertspeicher". Redis bietet extrem leistungsfähige Zwischenspeicherung im Arbeitsspeicher, gepaart mit persistenten Daten für eine weitaus bessere Lese-, Schreib- und Sitzungsleistung.
Aktivieren Sie zunächst die Redis-Erweiterung durch Hinzufügen - Redis
in der Erweiterungsliste in der Boxdatei, genau wie bei APC. Dadurch können sich Ihre PHP-Komponenten mit Redis verbinden. Fügen Sie Ihrer Boxfile auch eine Redis-Cache-Komponente hinzu:
cache1: name: mag-cache typ: redis
Ihre aktualisierte Boxdatei sollte folgendermaßen aussehen:
web1: name: 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 : name: mag-db typ: mysql cache1: name: mag-cache typ: redis
Wenn eine Redis-Komponente in der Box-Datei enthalten ist, wird Ihrer Infrastruktur automatisch ein Redis-Cache hinzugefügt, wenn Sie Updates bereitstellen.
Sie können einen Redis-Cache auch vom Pagoda Box Dashboard aus erstellen. Im Dashboard skalieren Sie auch die Redis-Komponente.
Klicken Sie zunächst im Dashboard auf "Cache hinzufügen".
… Dann wähle Redis.
Sobald Ihre neue Cache-Komponente bereitgestellt wurde, klicken Sie im Dashboard darauf, und wählen Sie dann die gewünschte Menge an Arbeitsspeicher aus:
Die Daten bleiben bei Redis erhalten, sodass Sie die Größe des Caches ändern können, ohne dass Sitzungen verloren gehen oder Daten im Zwischenspeicher abgelegt werden.
In diesem Lernprogramm wird eine einzige Redis-Komponente für Magento-Sitzungen und Zwischenspeicherung verwendet. Wenn Ihre Site ausreichend Datenverkehr erhält, kann das Erstellen einer separaten Redis-Komponente für beide Sitzungen und das Zwischenspeichern ein zusätzliches Maß an Leistung bieten.
Konfigurieren Sie Magento-Sitzungen für die Verwendung von Redis.
Wenn Sie die Magento-Standarddateien überschreiben müssen (wie wir es hier tun werden), ändern Sie die Kerndateien von Magento nicht. Überschreiben Sie Dateien immer im lokalen Verzeichnis von Magento, um die Funktionalität und zukünftige Aktualisierungen zu schützen.
Bearbeiten Sie den Session-Handler-Abschnitt Ihres local.xml
Datei für die Verwendung von Redis und legen Sie den Sitzungsspeicherpfad wie folgt fest:
Als Nächstes fügen Sie Redis-Unterstützung zu Magento hinzu, indem Sie eine Magento-Kerndatei überschreiben. Kopieren Sie die Datei:
App / Code / Kern / Mage / Kern / Modell / Sitzung / Zusammenfassung / Varien.php
Dann erstellen Sie Ihre eigene lokale Version unter:
app / code / local / Mage / Kern / Modell / Sitzung / Zusammenfassung / Varien.php
Fügen Sie in der neuen Datei um Zeile 62 Folgendes hinzu:
case 'redis': ini_set ('session.save_handler', 'redis'); session_save_path ($ this-> getSessionSavePath ()); brechen;
Konfigurieren Sie jetzt den Magento-Cache für die Verwendung von Redis.
Fügen Sie die Credis-Bibliothek und das Cm-Modul hinzu, um Redis als Magento-Cache zu aktivieren. Das Modul besteht aus einer Datei, die Sie hier herunterladen können. Obwohl der Autor des Cm-Moduls die Installation über Modman empfiehlt, registriert Modman nicht alle Submodule korrekt in Pagoda Box. Speichern Sie die Datei stattdessen als: app / code / community / Cm / Cache / Backend / Redis.php
.
Fügen Sie die Credis-Bibliothek als Git-Submodul zu Ihrem Projekt hinzu:
$ cd your_site_dir $ git-Untermodul add git: //github.com/colinmollenhour/credis.git lib / Credis
Bearbeiten Sie erneut die local.xml
Datei. Ändern Sie die Cache-Speicherung und ihren Inhalt wie folgt:
Cm_Cache_Backend_Redis tunnel.pagodabox.com 6379 0 0 0 1 1 20480 gzip
Legen Sie die Option "Weit in der Zukunft" fest, um die Anzahl der Anfragen pro Besucher beim Durchsuchen Ihrer Website zu reduzieren. Tun Sie dies, nachdem Sie das Frontend-Thema abgeschlossen haben. Folgendes hinzufügen static_expire
Anweisung an die web1
In einem Abschnitt Ihrer Boxdatei verfallen statische Asset-Caches nach einem Jahr.
web1: static_expire: 31536000
Fügen Sie die aktualisierten Dateien zu git, commit und zur Pagoda Box hinzu.
$ git add. $ git commit -m 'installiert und konfiguriert die $ git-Push-Pagode von "redis" --all
Löschen Sie nach der Bereitstellung den Magento-Systemcache, indem Sie sich bei Ihrem Magento-Administrator anmelden und zu System -> Cache Management gehen. Klicken Sie anschließend auf "Magento Cache leeren"..
Magento verfügt über einige Optimierungsprogramme, die Javascript- und CSS-Dateien zusammenführen und dann in den gemeinsam beschreibbaren Speicher der Pagoda Box ablegen. Meistens ist dies kein Problem, aber bei hohem Datenaufkommen kann Pagoda Box auf Dateien von verteilten Webinstanzen viel schneller zugreifen als Dateien in gemeinsamem beschreibbaren Speicher. Um eine hohe Traffic-Performance zu erzielen, übertrifft die Beibehaltung von Javascript und CSS im Repo die Minifizierung.
Um das Zusammenführen von Dateien zu deaktivieren, melden Sie sich in Ihrem Magento-Administrationsfenster an und navigieren Sie zu: System> Configuration> Developer
Wählen Sie unter JavaScript-Einstellungen und CSS-Einstellungen "Nein" aus:
Nachdem Magento für Redis konfiguriert ist, überprüfen Sie, ob alles funktioniert. Folgen Sie dieser Redis-Anleitung, um einen sicheren Tunnel einzurichten, und verwenden Sie das Terminal, um auf Redis in der Pagoda Box zuzugreifen. Führen Sie nach dem Herstellen der Verbindung den folgenden Befehl aus, um eine Liste aller gespeicherten Schlüssel anzuzeigen.
$ keys *
Vorausgesetzt, Sie haben die udpated-Site durchsucht, sollten Sie eine Liste mit verschiedenen Schlüsseln sehen. Wenn Sie nur Sitzungsschlüssel, nur Cache-Schlüssel oder überhaupt keine Schlüssel sehen, überprüfen Sie Ihre Konfigurationseinstellungen und stellen Sie sicher, dass Sie den Magento-Cache gelöscht haben.
Eine vollständige Liste nützlicher Befehle bei der Verwendung von Redis finden Sie in der offiziellen Dokumentation.
Piggyback SSL ist kostenlos und automatisch für jede App in Pagoda Box in der Subdomain ihrer App (appname.pagodabox.com). Es ist zwar möglich, mit Piggyback SSL ein Benchmarking durchzuführen, aber wir aktivieren SSL von Drittanbietern für die Zwecke des Lernprogramms. Wildcard-Zertifikate und selbstsigniertes SSL werden in diesem DNS / SSL-Handbuch beschrieben.
Beginnen Sie mit der Schaltfläche "Hinzufügen eines SSL-Zertifikats" unter der Registerkarte "DNS / SSL" im Pagoda Box-Dashboard.
Wählen Sie anschließend aus, ob Sie ein Zertifikat erstellen oder ein vorhandenes SSL-Zertifikat verwenden. Wenn Sie ein vorhandenes Zertifikat haben, klicken Sie auf "Vorhandene übertragen"..
Fügen Sie anschließend die relevanten Informationen in das entsprechende Feld ein und aktivieren Sie sie. Ihr SSL-Zertifikat wird jetzt mit Ihrer Anwendung gespeichert.
Nachdem Sie ein SSL-Zertifikat eingegeben haben, wird es in der Liste der verfügbaren SSL-Zertifikate angezeigt. Falls noch nicht geschehen, fügen Sie Ihrer Anwendung Ihre benutzerdefinierte Domäne als DNS-Alias hinzu. Klicken Sie auf "Neuen Alias hinzufügen" und geben Sie Ihre registrierte Domäne als Alias ein. Pagoda Box weist standardmäßig eine gemeinsame IP-Adresse zu. Dies ändert sich jedoch, wenn Sie dem DNS-Alias ein SSL-Zertifikat zuordnen.
Verbinden Sie schließlich Ihr SSL-Zertifikat mit Ihrem DNS-Alias, indem Sie es in der SSL-Dropdown-Liste neben Ihrem DNS-Alias auswählen und dann auf "Speichern" klicken. Da das SSL-Zertifikat jetzt an Ihren DNS-Alias gebunden ist, erhält Ihr Alias eine eindeutige, dedizierte IP-Adresse.
Wenn Sie ein SSL-Zertifikat mit einem DNS-Alias verknüpfen, erhält dieser Alias eine dedizierte IP-Adresse. Stellen Sie sicher, dass Ihr A-Record mit der angegebenen IP-Adresse übereinstimmt, nachdem Sie Ihre SSL-Zertifikate hinzugefügt, gelöscht oder geändert haben.
Wir haben Blitz.io verwendet, um ein paar Magento-Anwendungen zu vergleichen. Es prüft sowohl HTTP-Antworten als auch Datenbankschreibvorgänge mithilfe von URLs und Cookies für Variablenlisten.
Erstellen Sie zunächst ein kostenloses Konto bei Blitz.io. Wenn Sie sich registriert haben, suchen Sie nach "START!" Schaltfläche am unteren Rand Ihrer Willkommensseite.
Klicken Sie auf "Start". Blitz bietet eine Reihe von einfachen Lernprogrammen, in denen die Variablen erläutert werden, die Sie in einer Abfrage-URL zum Testen Ihrer Anwendung verwenden. Für unsere Zwecke sollte Ihre Basis-Abfrage-URL in etwa wie folgt aussehen:
-p 1-24: 60 -r kalifornien -T 4000 -v: cookie list [d1b1530ff8694817e1f11f55e0a4a120,805d9a11f3b9f8ea35ee2db1d9aac3fc] -v: urls list [index.php, möbel.html, otomane.html cart / add? product = 51] -b "my-cookie = # cookie Ó http://magento-demo.pagodabox.com/#urls
Im Einzelnen testet diese Abfrage 1-24 gleichzeitige Besucher (kann bis zu 250 mit kostenlosem Konto testen) über 60 Sekunden, von Kalifornien aus, bei 4 Sekunden. Die Abfrage legt auch eine Liste von Cookies und URLs als Variablen sowie die von uns getestete Domäne fest. Wir haben eine Startseite, eine CMS-Seite, eine Katalogseite, eine Produktseite und eine Checkout-Seite zum Testen hinzugefügt.
Durch die Verwendung von Cookie-Variablen und einer Produkt-URL für Checkout / Warenkorb / Hinzufügen können wir die DB-Schreibvorgänge testen. Um eine Liste der gültigen Cookies zu erhalten, navigieren Sie auf Ihrer Website in Chrome> Inspect Element> Ressourcen> Cookies> [Ihre Site]> Frontend. Kopieren Sie den Schlüssel aus der Spalte "Value" (siehe unten):
Ersetzen Sie die Cookies, URLs und Domänen aus der obigen URL-Abfrage durch die entsprechenden Elemente Ihrer Website. Geben Sie dann die neue Abfrage in Blitz.io ein und klicken Sie auf "Ausführen"..
Wenn Sie Ihre App zum ersten Mal "in Eile" setzen, zeigt Blitz einen Autorisierungsfehler an und fordert Sie zum Nachweis des Inhabers auf, indem Sie Ihrer App eine bestimmte URL hinzufügen. Folgen Sie den Anweisungen auf dem Bildschirm, um eine eindeutige Autorisierungsdatei auf Ihrem lokalen Computer zu erstellen, und drücken Sie dann die Änderungen in die Pagoda Box.
$ git add. $ git commit -m "blitz auth file" $ git Push-Pagode --all
Stellen Sie sicher, dass die neue Datei vorhanden ist, indem Sie die URL in einem Browser aufrufen. Sie sollten "42" sehen. Beachten Sie, dass das "Stammverzeichnis Ihres WWW-Verzeichnisses" das Stammverzeichnis Ihres Projekts ist, sofern Sie es nicht konfiguriert haben Dokument Root
in Ihrer Boxdatei ein anderes Verzeichnis sein.
Sobald alles eingerichtet ist, können Sie die Blitz-Variablen anpassen und testen. Zum Beispiel ändern 1-24
zu 60-60
wird die Parallelität von einem stufenweisen Anstieg auf 24 Parallelität auf 60 kontinuierliche gleichzeitige Besucher ändern. Durch das Isolieren von URLs in der Variablenliste können Sie Leistungsengpässe erkennen, indem Sie verschiedene Seitentypen isolieren. Sie können sogar die DB-Schreibkapazität mithilfe von testen Kasse / Warenkorb / Hinzufügen?
url.
Natürlich ist Benchmarking einfach ein Indikator, um die Anwendung zu skalieren. Stellen Sie sicher, dass Sie während des Benchmarks auf verschiedene Ebenen skalieren, und beachten Sie die Änderung der Ergebnisse (siehe Skalieren von Magento-Video). Blitz.io sollte helfen, Anwendungsengpässe zu erkennen und den für Ihren erwarteten Datenverkehr geeigneten Umfang zu ermitteln.
Es hat schon einige Vorbereitungsarbeiten gegeben, um diese Phase zu erreichen, aber hier kommt alles zusammen. Kontinuierliche Integration, kontinuierliches Management und Skalierbarkeit sind jetzt viel einfacher. Denken Sie beim Benchmarking daran, dass die Gebühren stündlich sind. Die Skalierung für einen kurzen Test kostet nur wenige Dollar.
Um Ihre Webanwendung für mehr Datenverkehr zu skalieren, öffnen Sie Ihre Webkomponente über das Pagoda Box-Dashboard wie folgt:
Klicken Sie dann auf den Schieberegler, ziehen Sie ihn auf die gewünschte Anzahl von Instanzen und klicken Sie auf "Speichern". Pagoda Box wird Magento von Ihrem Repository für neue Instanzen bereitstellen. Nachdem alle Instanzen erstellt und überprüft wurden, leitet die Routing-Schicht den Verkehr auf die neuen Instanzen um und stellt die alten ohne Ausfallzeiten außer Betrieb (siehe Skalieren eines Magento-Videos)..
Hinweis: Während Sie ihn verwenden, scheint der Schieberegler bei 25 Instanzen maximal auszusteigen, wird jedoch für eine größere Skalierung zurückgesetzt, nachdem der obere Grenzwert gespeichert wurde.
Um Ihre Cloud-Datenbank zu skalieren, öffnen Sie Ihre Databsase-Komponente wie folgt über das Pagoda Box-Dashboard:
Beachten Sie, dass das rote Gesicht unglücklich ist, weil der RAM-Verbrauch zu hoch ist. Um den Arbeitsspeicher zu erhöhen, klicken Sie auf den grünen Pfeil "Ändern", wählen Sie die gewünschte Arbeitsspeichermenge aus und klicken Sie auf "Speichern"..
Pagoda Box erstellt eine größere Datenbank, migriert Daten, synchronisiert die Master-Master-Replikation und leitet Ihre Anwendung an die neue Datenbank weiter. Ihre Website ist während der gesamten Migration live.
Um Ihre private Datenbank zu skalieren, öffnen Sie Ihre Databsase-Komponente wie folgt über das Pagoda Box-Dashboard:
Wählen Sie die gewünschten Ressourcen für Ihre Datenbank aus, legen Sie fest, ob Sie eine Replikation wünschen, und klicken Sie auf "Speichern"..
Pagoda Box erstellt eine größere Datenbank, migriert Daten, synchronisiert die Master-Master-Replikation und leitet Ihre Anwendung an die neue Datenbank weiter. Ihre Website ist während der gesamten Migration live.
Beachten Sie, dass die Bestellung einer privaten Datenbank mehr als 20 Minuten dauern kann, da ein Server nach Ihren Vorgaben bereitgestellt wird.
Hinweis: Derzeit erfordert das Skalieren von einer Cloud-Datenbank in eine private Datenbank einige Ausfallzeiten, da Sie Daten manuell migrieren. Die Skalierung von Cloud zu Cloud oder von Privat zu Privat erfolgt immer automatisch.
Das ist es! Ihre Magento-Anwendung ist jetzt sofort vollständig skalierbar, und Updates lassen sich problemlos bereitstellen $ git Push Pagode - alle
. Genießen!