Optimiser Magento dans le nuage

Dans ce didacticiel de suivi, nous allons optimiser Magento, ajouter un cache Redis, un alias SSL et DNS, puis adapter l’application aux fins de l’analyse comparative et de la production. Ce qui suit suppose que vous avez déjà utilisé le premier tutoriel pour lancer une application cloud Magento de base sur Pagoda Box. Prêt à optimiser?


Exigences

Vous pouvez télécharger le code final de ce didacticiel ou installer Magento à partir d'un Quickstart pour tester un site de travail..

  • Un compte Pagoda Box (gratuit)
  • Une installation Magento locale et fonctionnelle
  • Logiciel de développement local (MAMP ou WAMP)
  • Git installé (peut utiliser SFTP)
  • Le client du terminal Pagoda installé

Avertissement juste: Pagoda Box n’est pas un hébergement traditionnel. Ce tutoriel optimise non seulement Magento, il jette les bases d’un flux de travail à intégration continue progressive.


Étape 1: Activer le cache eAccelerator, XCache ou APC

L'activation d'un cache bytecode optimisera les performances, en particulier avec les bases de code volumineuses telles que Magento. Vous pouvez utiliser la mise en cache de bytecode eAccelerator ou XCache, mais Magento recommande APC. Pour activer APC, ajoutez-le simplement à la liste des extensions php dans le fichier Box comme suit:

 web1: php_extensions: - apc

Votre nouveau fichier Boxfile devrait ressembler à ceci:

 web1: name: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 extensions_php: - 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: nom : type de mag-db: mysql

Étape 2: Créer un composant Redis

Par défaut, les sessions Magento sur Pagoda Box sont situées dans un espace de stockage inscriptible et sont accessibles à toutes vos instances Web. Ce tutoriel déplace les sessions vers Redis, qui est un "magasin clé-valeur avancé". Redis fournit une mise en cache en mémoire extrêmement puissante, associée à des données persistantes pour des performances de lecture, d'écriture et de session bien meilleures.

Créer un cache Redis à partir du fichier Boxfile

Tout d’abord, activez l’extension Redis en ajoutant - redis à la liste des extensions dans le Boxfile, comme nous l'avons fait pour APC. Cela permet à vos composants PHP de se connecter à Redis. Ajoutez également un composant de cache Redis à votre fichier Box comme suit:

 cache1: nom: type de mag-cache: redis

Votre fichier Boxfile mis à jour devrait ressembler à ceci:

 web1: nom: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 extensions_php: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - curl - soap - apc - redis après_build: - "mv pagoda /local.xml app / etc / local.xml "cron: -" * / 15 * * * * ":" curl -s -o / dev / null http://magento.pagodabox.com/cron.php "db1 : nom: type de mag-db: mysql cache1: nom: type de mag-cache: redis

Lorsqu'un composant Redis est inclus dans Boxfile, un cache Redis est automatiquement ajouté à votre infrastructure lorsque vous déployez des mises à jour..

Autre: créer un cache Redis à partir du tableau de bord

Vous pouvez également créer un cache Redis à partir du tableau de bord Pagoda Box. Le tableau de bord est également l'endroit où vous redimensionnez le composant Redis.

Tout d'abord, cliquez sur "Ajouter un cache" dans le tableau de bord.

… Puis choisissez Redis.

Une fois que votre nouveau composant de cache a été déployé, cliquez dessus dans le tableau de bord, puis choisissez la quantité de mémoire RAM souhaitée, comme suit:

Les données sont persistantes avec Redis, vous pouvez donc redimensionner le cache sans perdre de sessions ni mettre en cache les données conservées en mémoire, contrairement à Memcache..


Étape 3: Configurer Magento pour Redis Sessions and Cache

Ce tutoriel partage un seul composant Redis pour les sessions Magento et la mise en cache. Si votre site reçoit suffisamment de trafic, la création d'un composant Redis distinct pour les deux sessions et la mise en cache peuvent fournir une mesure supplémentaire des performances..

Redis Sessions

Configurer les sessions Magento pour utiliser Redis.

Si vous avez besoin de remplacer les fichiers par défaut de Magento (comme nous le ferons ici), ne modifiez pas les fichiers principaux de Magento. Les fichiers de substitution doivent toujours résider dans le répertoire local de Magento pour protéger les fonctionnalités et les mises à niveau futures..

  • Modifiez la section du gestionnaire de session de votre local.xml fichier à utiliser Redis et définissez le chemin d’enregistrement de la session comme suit:

      
  • Ajoutez ensuite le support Redis à Magento en remplaçant un fichier Magento principal. Copiez le fichier:

     app / code / core / Mage / Core / Modèle / Session / Abstract / Varien.php

    Créez ensuite votre propre version locale sur:

     app / code / local / Mage / Noyau / Modèle / Session / Abstrait / Varien.php

    Dans le nouveau fichier, autour de la ligne 62, ajoutez ce qui suit:

     case 'redis': ini_set ('session.save_handler', 'redis'); session_save_path ($ this-> getSessionSavePath ()); Pause;

Cache Redis

Maintenant, configurez le cache Magento pour utiliser Redis, ainsi.

  • Ajoutez la bibliothèque Credis et le module Cm pour activer Redis en tant que cache Magento. Le module consiste en un fichier, que vous pouvez télécharger ici. Bien que l'auteur du module Cm recommande d'installer via modman, modman n'enregistre pas correctement tous les sous-modules avec Pagoda Box. Enregistrez plutôt le fichier sous: app / code / communauté / Cm / Cache / Backend / Redis.php.

    Ajoutez la bibliothèque Credis en tant que sous-module Git à votre projet:

     $ cd your_site_dir $ git submodule add git: //github.com/colinmollenhour/credis.git lib / Credis
  • Encore une fois, éditez le local.xml fichier. Modifiez la formulation du cache et son contenu comme suit:

      Cm_Cache_Backend_Redis  tunnel.pagodabox.com 6379 0 0 0 1 1 20480 gzip  
  • Set far future expires afin de réduire considérablement le nombre de requêtes par visiteur qui navigue sur votre site. Faites cela après avoir terminé le travail sur le thème frontal. Ajout de ce qui suit static_expire directive à la web1 section de votre Boxfile va expirer les caches d'actifs statiques après 1 an.

     web1: static_expire: 31536000
  • Ajouter les fichiers mis à jour à git, commit et push à Pagoda Box.

     $ git add. $ git commit -m 'installé et configuré redis' $ git push pagoda --all
  • Après le déploiement, effacez le cache système Magento en vous connectant à votre administrateur Magento et en accédant à Système -> Gestion du cache, puis en cliquant sur "Vider le cache Magento"..

REMARQUE: Évitez JS & CSS dans le stockage en écriture

Magento possède quelques utilitaires d'optimisation qui fusionnent les fichiers javascript et css, puis les placent dans le stockage accessible en écriture partagé de Pagoda Box. La plupart du temps, il ne s'agit pas d'un problème, mais avec un volume de trafic élevé, Pagoda Box peut accéder aux fichiers à partir d'instances Web distribuées beaucoup plus rapidement que les fichiers stockés en écriture. Pour des performances de trafic élevées, conserver javascript et css dans le référentiel surpasse la minification..

Pour désactiver la fusion de fichiers, connectez-vous à votre panneau d'administration Magento, puis accédez à: Système> Configuration> Développeur.

Choisissez "Non" sous Paramètres JavaScript et Paramètres CSS comme suit:


Étape 4: Vérifiez que Redis fonctionne

Maintenant que Magento est configuré pour Redis, vérifiez que tout fonctionne. Suivez ce guide Redis pour établir un tunnel sécurisé, puis utilisez le terminal pour accéder à Redis sur Pagoda Box. Une fois connecté, exécutez la commande suivante pour afficher une liste de toutes les clés stockées..

 $ clés *

En supposant que vous ayez navigué sur le site mis à jour, vous devriez voir une liste de clés assorties. Si vous voyez uniquement des clés de session, des clés de cache uniquement ou si vous ne voyez aucune clé, vérifiez vos paramètres de configuration et assurez-vous que vous avez effacé le cache de Magento..

Pour une liste complète des commandes utiles lors de l’utilisation de Redis, consultez leur documentation officielle..


Étape 5: Ajout de DNS / SSL

Piggyback SSL est gratuit et automatique pour chaque application de Pagoda Box située dans le sous-domaine de l'application (appname.pagodabox.com). Bien qu'il soit possible de faire l'analyse comparative à l'aide de Piggyback SSL, nous activerons le protocole tiers pour les besoins du didacticiel. Les certificats de caractères génériques et le protocole SSL auto-signé sont détaillés dans ce guide DNS / SSL.

Ajouter SSL

Commencez par cliquer sur le bouton "Ajouter un certificat SSL" sous l'onglet DNS / SSL du tableau de bord de la pagode..

Ensuite, choisissez si vous créez un certificat ou utilisez un certificat SSL existant, comme nous le sommes ici. En supposant que vous ayez un certificat existant, cliquez sur "Transférer un existant".

Enfin, collez les informations pertinentes dans le champ approprié et activez-les. Votre certificat SSL est maintenant enregistré avec votre application.

Ajouter un alias DNS

Une fois que vous avez entré un certificat SSL, il apparaîtra dans votre liste de certificats SSL disponibles. Si vous ne l'avez pas déjà fait, ajoutez votre domaine personnalisé en tant qu'alias DNS à votre application. Cliquez sur "Ajouter un nouvel alias" et entrez votre domaine enregistré comme alias. Pagoda Box attribuera une adresse IP partagée par défaut, mais cela changera lorsque vous associez un certificat SSL à l'alias DNS..

Enfin, associez votre certificat SSL à votre alias DNS en le sélectionnant dans la liste déroulante SSL située en regard de votre alias DNS, puis cliquez sur "Enregistrer". Avec le certificat SSL maintenant lié à votre alias DNS, votre alias obtient une adresse IP dédiée unique.

Une fois que vous associez un certificat SSL à un alias DNS, celui-ci obtiendra une adresse IP dédiée. Assurez-vous de vérifier que votre A-Record correspond à l'IP fournie après avoir ajouté, supprimé ou modifié vos certificats SSL..


Étape 6: référence avec Blitz.io

Nous avons utilisé Blitz.io pour évaluer quelques applications Magento. Il teste à la fois la réponse http et les écritures dans la base de données en utilisant des listes de variables, URL et cookies.

Pour commencer, créez un compte gratuit sur Blitz.io. Une fois que vous vous êtes inscrit, recherchez "START!" bouton en bas de votre page d'accueil.

Cliquez sur "Démarrer", et Blitz fournira une série de tutoriels simples expliquant les variables que vous utiliserez dans une URL de requête pour tester votre application. Pour nos besoins, votre URL de requête de base devrait ressembler à ceci:

 -p 1-24: 60 -r california -T 4000 -v: liste de cookies [d1b1530ff8694817e1f11f55e0a4a120,805d9a11f8ea35ee2db1d9aac3fc] -v: liste des adresses URL [index.php, furniture.html panier / add? product = 51] -b "mon-cookie = # cookie a http://magento-demo.pagodabox.com/#urls

Plus précisément, cette requête testera progressivement 1 à 24 visiteurs simultanés (pouvant en tester jusqu'à 250 avec un compte gratuit) sur 60 secondes, en Californie, avec un délai d'attente de 4 secondes. La requête définit également une liste de cookies et d'URL sous forme de variables, ainsi que le domaine que nous testons. Nous avons inclus une page d'accueil, une page CMS, une page de catalogue, une page produit et une page de paiement pour tester.

L'utilisation de variables de cookie et d'une URL de produit d'extraction / cart / add? Nous permet de tester les écritures dans la base de données. Obtenez une liste des cookies valides en naviguant sur votre site dans Chrome> Inspecter élément> Ressources> Cookies> [votre site]> frontend. Copiez la clé dans la colonne Valeur, comme indiqué ci-dessous:

Remplacez les cookies, les URL et le domaine de la requête d'URL ci-dessus par les éléments appropriés de votre site, puis entrez la nouvelle requête sur Blitz.io, puis cliquez sur "Exécuter"..

La première fois que vous "précipitez" votre application, Blitz affiche une erreur d'autorisation et vous demande de prouver sa propriété en ajoutant une URL spécifique à votre application. Suivez les instructions à l'écran pour créer un fichier d'autorisation unique sur votre ordinateur local, puis appliquez les modifications apportées à Pagoda Box..

 $ git add. $ git commit -m "fichier d'authentification blitz" $ git push pagoda --all

Confirmez que le nouveau fichier est en place en visitant l'URL dans un navigateur. Vous devriez voir "42". Notez que la "racine de votre répertoire www" est la racine de votre projet sauf si vous avez configuré document_root dans votre Boxfile pour être un autre répertoire.

Une fois que tout est en place, vous êtes libre d’ajuster les variables Blitz et de les tester. Par exemple, changer 1-24 à 60-60 passera d'une augmentation progressive à une augmentation simultanée de 24 à 60 visiteurs simultanés. L'isolation des URL dans la liste de variables vous permet d'identifier les goulots d'étranglement liés aux performances en isolant différents types de page. Vous pouvez même tester la capacité d’écriture de la base de données en utilisant le caisse / panier / ajouter? url.

Bien entendu, l’analyse comparative est simplement un indicateur pour aider à l’échelle de l’application. Assurez-vous de faire évoluer la balance à différents niveaux, en notant les changements dans les résultats (voir Vidéo de la mise à l'échelle de Magento). Blitz.io devrait vous aider à identifier les goulots d'étranglement des applications et à déterminer l'échelle appropriée pour votre trafic prévu..


Étape 7: Mise à l'échelle sur la boîte à pagodes

Il y a eu pas mal de travail préparatoire initial pour arriver à ce stade, mais c'est là que tout se passe. L'intégration continue, la gestion continue et l'évolutivité sont maintenant beaucoup plus simples. Lorsque vous comparez, gardez à l'esprit que les frais sont calculés toutes les heures. La mise à l'échelle pour tester brièvement ne coûtera que quelques dollars.

Mise à l'échelle d'instances Web

Pour adapter votre application Web à un trafic plus important, ouvrez votre composant Web à partir du tableau de bord de la pagode comme suit:

Ensuite, cliquez sur le curseur et faites-le glisser jusqu'au nombre d'instances souhaité, puis cliquez sur "Enregistrer". Pagoda Box déploiera Magento à partir de votre référentiel vers de nouvelles instances. Une fois toutes les instances construites et vérifiées, la couche de routage redirigera le trafic vers les nouvelles instances et mettra hors service l'ancienne sans interruption (à nouveau, voir Mise à l'échelle de la vidéo Magento)..

Remarque: au fur et à mesure que vous l'utilisez, le curseur semble atteindre un maximum de 25 occurrences, mais sera réinitialisé pour une mise à l'échelle plus grande une fois la limite supérieure enregistrée..

Mise à l'échelle d'une base de données: Cloud (les composants du cache sont identiques)

Pour mettre à l'échelle votre base de données cloud, ouvrez votre composant Databsase à partir du tableau de bord Pagoda Box comme suit:

Notez que la face rouge est malheureuse parce que l'utilisation de la RAM est trop importante. Pour augmenter la RAM, cliquez sur la flèche verte "Modifier", sélectionnez la quantité de RAM souhaitée, puis cliquez sur "Enregistrer"..

Pagoda Box va créer une base de données plus volumineuse, migrer les données, synchroniser via une réplication maître-maître, puis diriger votre application vers la nouvelle base de données. Votre site est en ligne tout au long de la migration.

Mise à l'échelle d'une base de données: privée

Pour redimensionner votre base de données privée, ouvrez votre composant Databsase à partir du tableau de bord Pagoda Box comme suit:

Sélectionnez les ressources souhaitées pour votre base de données, déterminez si vous souhaitez une réplication, puis cliquez sur "Enregistrer"..

Pagoda Box va créer une base de données plus volumineuse, migrer les données, synchroniser via une réplication maître-maître, puis diriger votre application vers la nouvelle base de données. Votre site est en ligne tout au long de la migration.

N'oubliez pas que la commande d'une base de données privée peut prendre plus de 20 minutes, car un serveur est configuré selon vos spécifications..

Remarque: pour le moment, le passage d'une base de données Cloud à une base de données privée nécessite un certain temps d'indisponibilité lors de la migration manuelle des données. La mise à l'échelle du cloud vers le cloud, ou de privé à privé, est toujours automatique.


Résumé

C'est tout! Votre application Magento est maintenant totalement évolutive en un instant et les mises à jour sont facilement déployées avec $ git push pagoda --all. Prendre plaisir!