Le 16/08/2016

Zend Server, Z-Ray and Magento..un bon choix ?

Aujourd'hui on va parler un peu de Zend Server car Zend à annoncé à la ZendCon ce même jour, un module pour Zend Server qui permet d'ajouter un peu de profiling spécifique Magento avec Z-Ray. En ce moment j’apprends énormément de choses donc vous devriez avoir régulièrement de nouveaux tutoriels...
N'hésitez pas à vous inscrire à la newsletter (a gauche sur cette page) pour recevoir la liste des derniers articles du blog, chaque fin de mois.
Bref...et si on rentrait dans le vif du sujet ?
Déjà commençons par présenter la solution Zend Server.

Zend Server

Zend Server c'est un serveur d'application web développé par Zend Technologies (les créateurs de PHP) en 2009. Il est disponible sur Windows, mac, Linux.. Pour faire ULTRA simplifié, c'est une sorte de d'apache beaucoup plus puissant qui contient une interface d'administration vous permettant de configurer PHP, de déployer vos application (ou gérer vos mises en recette/prod) plus facilement. Il parait également qu'on obtient bien souvent des meilleures performances avec Magento sous Zend Server...à vérifier car pour l'instant je n'ai pas encore assez d'expérience sur Zend Server pour l'affirmer. Si vous avez un retour d'expérience sur le sujet des perfs & Zend Server n'hésitez pas à le partager en laissant un commentaire en bas de cette page ca m’intéresse fortement !
Nous, développeurs magento, ce qui nous intéresse ici c'est surtout Z-Ray ! Zend & NBS ont animés une conférence ensemble sur le sujet au bargento 2014.

Z-Ray c'est quoi ?

Z-Ray c'est une barre d'outil qui vous permet d'avoir une vision de ce qui se passe lors du chargement de votre page. Zend a placé des petits écouteurs dans votre serveur php (un peu comme la CIA dans votre iphone ;) ) ce qui vous permettra d'avoir pleins d'informations.
Prenons par exemple la homepage ! En gros lorsque vous chargez votre homepage sous magento, Z-ray vous donnera des informations comme le temps de chargement de la page coté serveur, le nombre de requettes SQL effectuées (et vous les listera), la mémoire utilisée pour le chargement de votre page....
ok ok un peu comme l'extension Wee_Toolbar en fait ? oui c'est exactement cela ! Sauf que c'est comme si en plus vous aviez Xhprof d'activé (Merci Olivier Garcia - @0livier - pour m'avoir parlé de cet outil il y a quelques mois) qui vous permet d'avoir plus de détails que le profiler de magento...Quelle fonction consomme quoi ? elle est appelée combien de fois ?
Ok ok mais du coup si j'installe l'extension Liip_Xhprof de Fabian Vogler théoriquement j'ai déjà ce qui faut..Qu'est ce que cela a m'apporter de plus Z-Ray ?
Oui vous avez raison moi aussi je me suis dit ça au début...(d’ailleurs c'est le message juste avant). Jusqu'à ce que je reçois ce tweet cet après-midi :

Ok...une extension Z-Ray pour Magento qui me permet d'analyser plus facilement un site magento en me donnant des indicateurs comme Xhprof mais directement au niveau de mes objets magento :
- information sur les blocs chargés : quelle classe est utilisée ? ou se trouve le template ?
- quels events sont déclenchés, quel Observer est concerné par cet event, combien de temps de chargement mon event consomme ?
- quels sont les handles de ma page ?
- les détails de la configuration
- les informations de l'objet request

Bon là ça à l'air intéressant...outils indispensable, léger confort en plus ou carrément useless ?...c'est parti pour le test !

Installation de Zend Server

L'installation est assez simple, je télécharge Zend Server depuis le site ici. Je vais ensuite dans le répertoire ou je l'ai téléchargé et je dézippe le fichier (je suis sous linux mais ca fonctionne aussi sur Mac ou Windows...faut juste adapter). Je vais ensuite dans le répertoire que j'ai dézippé et je lance le script d'installation en précisant que je veux qu'il installe la version 5.5 de PHP et que Zend Server utilisera un serveur Apache (vous pouvez aussi mettre nginx en mettant l'option "nginx" derriere ( ou si vous ne mettez rien c'est nginx par défaut).

tar xvf ZendServer-8.0.2-RepositoryInstaller-linux.tar.gz
cd ZendServer-RepositoryInstaller-linux/
./install_zs.sh 5.5 apache
Attention, si vous avez cette erreur :

Message:
Zend Server failed during initialization: An exception was raised while creating "Configuration\License\ZemUtilsWrapper"; no instance returned

An exception was raised while creating "Configuration\License\ZemUtilsWrapper"; no instance returned

db SELECT query 'SELECT "ZSD_DIRECTIVES".* FROM "ZSD_DIRECTIVES" WHERE NAME IN ("zend.serial_number","zend.user_name")' failed with the following error: SQLSTATE[HY000]: General error: 5 database is locked
C'est que vous avez déjà installé Zend Server et que la licence avait expiré...du coup il vous fait galérer. Stoppez zend-server, supprimer le fichier /usr/local/zend/var/db/zsd.db et redémarrez zend-server, puis c'est résolu !

service zend-server stop
rm -rf /usr/local/zend/var/db/zsd.db
service zend-server start
L'installation est lancée. Il crée tout ce qu'il faut et je peux me rendre à cette adresse :
http://127.0.0.1:10081/ZendServer/

pour finir mon installation.
Ici j'ai mon panel d'installation, je rempli les cases et je met "suivant"..rien de plus facile.

J'accepte les conditions d'utilisations (que vous lirez..comme tout le monde..bien entendu !!):


Je sélectionne le mode "développement" qui va me permettre d'avoir un environnement de adapté pour développer


Je défini mon user, mon mot de passe et je remarque qu'il installe des librairies pour Symfony2, Zend Framework 1 et 2. Toujours utile...même si pour l'instant magento c'est Zend Framework 1.

Et mon installation est déjà terminée !

Je me rend ensuite sur 127.0.0.1:10081 et j'arrive sur le dashboard de mon Zend Server !
Ok maintenant que j'ai Zend Server dessus, je veux installer Magento pour qu'il tourne sur mon serveur donc je commence par créer un vhost.

Créer un Vhost pour mon site Magento dans Zend Server

Dans Applications > Virtual Hosts et je clique sur "Add Virtual Host" puis je remplis mes infos suivntes:
- Virtual Host Name : mymagento.lan
- Listen on port : 80
- This virtual host does not use SSL
- Use the default virtual host configuration template
Je valide...et hop ! Mon vhost est crée ! Je le vois apparaître dans la liste de mes vhosts :


[Note]: OK déjà rien que ça, c'est déjà cool par rapport à Apache..c'est Super Facile (bien que ça aille relativement vite sur Apache..là c'est vraiment top !)

Vous remarquerez que le site est en orange et qu'on me demande de redémarrer en haut à gauche :


Une fois redémarré, mon vhost est bien en vert...signe que tout est OK !


Comme le nom de domaine mymagento.lan n'existe pas je rajoute la ligne suivante dans mon fichier /etc/hosts :

127.0.0.1 www.mymagento.lan mymagento.lan

et je vais sur mymagento.lan...et ca fonctionne !

Installer magento sur mon vhost Zend Server


Alors maintenant j'installe magento de façon plutot standard...je ne vais pas revenir sur l'installation de magento dans ce tutoriel mais vous pourrez trouver facilement de la documentation sur ce point sur le site de magento.
Téléchargez ensuite l'archive de magento sur www.magentocommerce.com/download/
puis rendez vous dans le dossier ou vous l'avez enregistré, dézippé le, :

  tar -xvf magento-1.9.0.1.tar.gz

Il faut comprendre que sous Zend Server, chaque site web est une "application", on peu la déployer à l'infini sur des serveurs différents ce qui rend très facile les déploiements entre les différentes versions de votre site, les mises en recette ou les mises en prod...Pour faciliter le travail de Zend, on va créer un fichier "mymagento.zpk" qui contiendra les sources qui seront déployées sur le serveur et on va l'importer dans Zend Server pour créer notre application .

Créer un fichier Zend Package (".zpk") pour votre application Zend Server

Identifiez votre dossier comme une application Zend avec la commande suivante :

/usr/local/zend/bin/zdpack create mymagento magento/

vous devriez avoir comme résultat :

Skeleton files were generated into mymagento

bougez ensuite le contenu de votre dossier magento dans le répertoire mymagento/data/ qui vient d’être crée. C'est ce repertoire qui contiendra les fichiers de notre application.
Puis Créez le Zend Package (".zpk") avec la commande suivante :

/usr/local/zend/bin/zdpack pack mymagento

vous devriez avoir comme résultat :

scripts-dir is set to        : mymagento/scripts
src-dir is set to            : mymagento/data
package-descriptor is set to : mymagento/deployment.xml
Created ./mymagento.zpk

Importer son fichier Zend Package (".zpk") pour créer son application Zend Server

Retournez ensuite sur la page "applications" de votre interface d'administration Zend Server puis cliquez sur Deploy Application.
Cliquez sur "parcourir" puis importez votre fichier .zpk crée à l'étape précédente. Vous devriez normalement avoir ce résultat :

Choisissez ensuite le nom de votre application et le vhost crée dans les étapes précédentes :

Cochez ensuite la case d'acceptation de la licence, vérifiez la configuration de votre systeme, puis renseignez les infos de base de données.

Cliquez ensuite sur déployez ! Votre Zend Server redémarre et déploie l'application.

Une fois le server redémarré, votre application apparaît maintenant comme "déployée" :


Vous n'avez plus qu'a lancer l'installation de magento..."comme d'habitude" ;)

N'oubliez pas également d'installer un serveur mysql à coté :

sudo apt-get install mysql-server php5-mysql

et de créer votre base de donnée :

mysql -u votreLogin -p
// Puis une fois connecté
> create database mymagento;

Z-Ray, l'outil ultime pour vous aider à régler vos problèmes de perf sous magento

Alors effectivement, j'ai une petite barre qui s'affiche en bas de ma page :

C'est tout pour le moment mais je continuerai mon article bientôt...Pour le moment ce que je retiens c'est que sans le plugin magento Z-Ray est surtout pratique en production pour pouvoir avoir identifier un problème spécifique en production en temps réel et Zend Server c'est une tuerie pour le déploiement...bonne découverte pour le moment.
En attendant la suite, si vous voulez tester la version "magento" du plugin c'est par ici !!
RDV sur cet article dans quelques jours quand j'aurai réalisé un peu plus de tests...je compléterai ce même article.
A bientôt...
Pierre.
Les livres qui peuvent vous aider :
  • Livre Magento Developer's Guide by Alan Mc Gregor
  • Livre Magento Performance Optimization
  • Livre Grokking Magento Vinai
Commentaires sur cet article
Pas encore de commentaires pour cet article. Soyez le premier !

Vous devez être connecté pour commenter un article.