Déployer Magento2 dans MS Azure avec #zendServer et #docker ! @DarkmiraTour

Embed Size (px)

Citation preview

  1. 1. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservs La tte dans les nuages avec ZendServer, Magento2, MS Azure et Docker!
  2. 2. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Pierre Fay Expert technique Magento, @Itelios Membre de la Z-Team Blog : www.pierrefay.fr / www.pierrefay.com Twitter : @pierrefay
  3. 3. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Spcialiste du commerce connect et digital Itelios c'est : - Socit de service et conseil - Accompagne les distributeurs et les marques Jules, Jennifer, Lacoste, Bizbee, Kenzo, Maje, Sandro - 100 experts rpartis sur 4 sites Lille, Paris, Macn, Sao Paolo - Plateformes ecommerce, mobile, tablettes magasins, crm, marketplace ... Site web : www.itelios.com Twitter : @itelios
  4. 4. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
  5. 5. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Docker c'est quoi? - Une sorte de VM allge - Base sur un systme d'exploitation - Installation uniquement de ce qui est ncessaire - Cration d'une Image permettant de lancer des containers - Possibilit de partager un dossier, ouvrir un port, lier les containers entre eux, etc..
  6. 6. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs A faire: Enattente Enattente Enattente Enattente
  7. 7. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Container Le process Dockerfile Image Container BUILD RUN Container
  8. 8. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Installer docker wgetqOhttps://get.docker.com/|sh Sur Ubuntu, se loguer dans Ubuntu avec les privilges sudo puis :
  9. 9. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Les principales commandes dockerbuildt. BUILD RUN STOP RM dockerrundp3306:3306v/data/mysql:/var/lib/mysql name dockerstop dockerrm
  10. 10. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Crer un container partir d'une image dockerrunbusybox/bin/echohi On utilise docker run : Docker va alors automatiquement rcuprer l'image busybox et excuter /bin/echo hi au dmarrage.
  11. 11. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Crer sa propre image Rappel du process : Dockerfile : C'est le fichier qui dcrit le container Sur quel systme d'exploitation je me base ? Quels applications j'installe ? Quels fichier j'ajoute dans mon container et quel endroit ? Quels ports je vais ouvrir ? Quels dossiers de mon container vont tre partags et avec quels dossiers de ma machine ? Quel port de ma machine va correspondre un port de mon container ? Qu'est ce que je lance au dmarrage ? Container Dockerfile Image Container BUILD RUN Container
  12. 12. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Creer la base de donne Dockerfile fromubuntu RUNaptgetupdate RUNDEBIAN_FRONTEND=noninteractiveaptgetydistupgrade RUNDEBIAN_FRONTEND=noninteractiveaptgetinstallymysqlserver5.6 mysqlclient5.6expect ADD./startup.sh/usr/local/bin/startup.sh RUNchmod+x/usr/local/bin/startup.sh VOLUME["/var/lib/mysql"] EXPOSE3306 CMD["/bin/bash","/usr/local/bin/startup.sh"]
  13. 13. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs startup.sh #!/bin/bash /usr/sbin/servicemysqlstart /usr/bin/mysqld_safe sedie"s/^bindaddresss*=s*127.0.0.1/bindaddress=0.0.0.0/" /etc/mysql/my.cnf if[!f/usr/share/mysql/mydefault.cnf];then cp/etc/mysql/my.cnf/usr/share/mysql/mydefault.cnf fi mysql_install_db echo"GRANTALLON*.*TOpfay@'%'IDENTIFIEDBY'pfay123'WITHGRANT OPTION;FLUSHPRIVILEGES"|mysql Creer la base de donne
  14. 14. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs startup.sh servicemysqlrestart echo"DROPDATABASEIFEXISTSmagento2">/createdb.sql mysql/createdb.sql mysqlshowdatabases; ++ |Database| ++ |information_schema| |magento2|
  15. 16. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Avancement OK Enattente Enattente Enattente
  16. 17. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Ajouter ZendServer RUNDEBIAN_FRONTEND=noninteractiveaptgetinstallywget RUNwgethttp://repos.zend.com/zend.keyO|aptkeyadd RUNecho"debhttp://repos.zend.com/zendserver/8.0.2/deb_apache2.4 servernonfree">>/etc/apt/sources.list.d/zendserver.list RUNDEBIAN_FRONTEND=noninteractiveaptgetupdate RUNDEBIAN_FRONTEND=noninteractiveaptgetinstallylibapache2mod php5.6zendserverzendserverphp5.6 RUNDEBIAN_FRONTEND=noninteractive/usr/local/zend/bin/zendctl.shstop A rajouter dans le Dockerfile les lignes suivantes:
  17. 18. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs EXPOSE80 EXPOSE10081 EXPOSE10082 Dockerfile (suite) Ajouter ZendServer
  18. 19. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Dans startup.sh, ajouter tout au dbut : exportPATH=/usr/local/zend/bin:$PATH source/etc/zce.rc Ajouter ZendServer servicezendserverrestart tailf/var/log/apache2/*.log>/var/www/html/logsserver.log Puis la fin du fichier, on redmarre le serveur et on change le tail -f pour prendre les logs apache.
  19. 20. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs On reteste dockerbuildtpierrefay/magento2cloud. Les commandes lancer depuis le dossier qui contient le Dockerfile. Dabord on cre l'image avec la commande build : Puis on lance le container avec la commande run partir de l'image cre prcdemment : On voit : Donc on vrifie que tout fonctionne en se connectant sur : - http://172.17.0.9/ - http://172.17.0.9:10081/ZendServer/ dockerrunnamemagento2cloudpierrefay/magento2cloud domainname,using172.17.0.9.Setthe'ServerName'directiveglobally
  20. 21. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Avancement OK OK Enattente Enattente
  21. 22. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Installer magento2 RUNDEBIAN_FRONTEND=noninteractiveaptgetinstallywgetphp5php5 cligitcurl RUNDEBIAN_FRONTEND=noninteractivecurlsS https://getcomposer.org/installer|php RUNDEBIAN_FRONTEND=noninteractivemvcomposer.phar /usr/local/bin/composer ADD./000default.conf/etc/apache2/sitesavailable/000default.conf VOLUME["/var/www/magento2"] Dockerfile
  22. 23. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs #!/bin/bash echo$BASE_URL echo$TOKEN_GITHUB Installer magento2 On affiche les variables d'environnements (qu'on passera via docker RUN) startup.sh
  23. 24. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs if['find/var/www/magento2pruneempty'] then rmrf/var/www/magento2 cd/var/www/&&gitclonehttps://github.com/magento/magento2.git chmod755R/var/www/magento2/var/ chmod755R/var/www/magento2/pub/ chmod755R/var/www/magento2/app/etc/ chmod755R/var/www/magento2/media/ cd/var/www/magento2&&composerconfigggithuboauth.github.com $TOKEN_GITHUB cd/var/www/magento2&&composerinstallnointeraction cd/var/www/magento2&&composerupdate else echo'Directorymagento2notempty,skipinginstallation' fi Installer magento2 Si le dossier est vide, on tlcharge depuis le repository public de magento2 et on installe avec composer. startup.sh (suite)
  24. 25. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs phpfbin/magentosetup:install baseurl=http://$BASE_URL/ backendfrontname=admin dbhost=localhost dbname=magento2 dbuser=pfay dbpassword=pfay123 adminfirstname=Mage adminlastname=Admin [email protected] adminuser=admin adminpassword=admin123 language=fr_FR currency=EUR timezone=Europe/Paris Installer magento2 On installe magento en CLI pour ne pas passer par l'installeur HTTP. startup.sh (suite)
  25. 26. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs cd/var/www/magento2&&composerconfigrepositories.magentocomposer http://packages.magento.com cd/var/www/magento2&&composerrequiremagento/sampledata:0.74.0 beta12 cd/var/www/magento2&&phpfbin/magentosetup:upgrade cd/var/www/magento2&&phpfbin/magentosampledata:installadmin rmrf/var/www/magento2/var/cache/* chmod777R/var/www/magento2/var/ chmod777R/var/www/magento2/pub/ chmod777R/var/www/magento2/app/etc/ chmod777R/var/www/magento2/media/ Installer magento2 On installe les samples datas, on redonne les droits puis on vide le cache. startup.sh (suite et fin)
  26. 27. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs ServerNamewww.magento2cloud.lan ServerAdminwebmaster@localhost DocumentRoot/var/www/magento2 OptionsIndexesFollowSymLinksMultiViews AllowOverrideAll Orderallow,deny allowfromall ErrorLog${APACHE_LOG_DIR}/error.log CustomLog${APACHE_LOG_DIR}/access.logcombined Installer magento2 On cre le fichier 000-default.conf pour faire pointer
  27. 28. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs On reteste dockerbuildtpierrefay/magento2cloud. Les commandes lancer depuis le dossier qui contient le Dockerfile. Dabord on cre l'image avec la commande build : Puis on lance le container avec la commande run partir de l'image cre prcdemment : On voit : On rajoute dans /etc/hosts et on se connecte sur www.magento2-cloud.lan dockerrunnamemagento2cloud envBASE_URL="www.magento2cloud.lan" envTOKEN_GITHUB="" pierrefay/magento2cloud domainname,usingSetthe'ServerName'directiveglobally
  28. 29. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Avancement OK OK OK Enattente
  29. 30. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs PourquoiMicrosoft Azure? Crdit Photo : openclassrooms.com - Dploiement de vos containers docker directement - Amliorer les performances de votre site - Adapter les capacits de l'hbergement vos besoins rels (monte en charge) temporaire (soldes) ou non, facturation en consquence - Avoir trs bonne disponibilit - Avoir une grande ractivit volution des capacits de votre hbergement trs rapidement, la demande - Se concentrer sur l'application, plutt que sur l'hbergement
  30. 31. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Rendre mon container accessibledepuis l'extrieur Environnement local Magento2-cloud :80 (http) :10081 (zendserver) :10082 (zendserver) :3306 (mysql) OK Environnement Azure Magento2-cloud ( ???) :80 (http) :10081 (zendserver) :10082 (zendserver) :3306 (mysql) Connectes toi magento2-cloud.cloudapp.net (ou magento2-cloud.lan) XNOK je retrouve le chemin de mon container car il est dfini manuellement dans /etc/hosts Environnement local Je me connecte la machine OK,mais comment je retrouve ton container ?
  31. 32. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs La solution Le container est sur un rseaux interne 172.17.0.XXX Solution: on va mapper les ports exposs aux ports du serveur dockerrundnamemagento2cloud p80:80 p10081:10081 p10082:10082 envBASE_URL="magento2cloud.cloudapp.net" envTOKEN_GITHUB="" pierrefay/magento2cloud
  32. 33. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Persistance des donnes A chaque fois que je redmarre mon container, mes donnes sont rinitialises Solution: on va monter des volumes pour sauvegarder /var/www/html et /var/lib/mysql/ Puis on va vrifier dans startup.sh si les fichier existent dj avant de refaire les oprations d'installation v/data/magento2cloud/mysql/:/var/lib/mysql v/data/magento2cloud/html/:/var/www/magento2
  33. 34. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Installer Azure CLI sudoaptgetinstallnpm sudoaptgetinstallnodejslegacy npminstallazureclig Installer le programme pour se connecter via npm Tlcharger les donnes du compte = mon adresse mail, = mon login itelios azureaccountdownload info:Executingcommandaccountdownload info:Launchingbrowsertohttp://go.microsoft.com/fwlink/?LinkId=254432 help:Savethedownloadedfile,thenexecutethecommand help:accountimport info:accountdownloadcommandOK azureaccountimport azureaccountlist
  34. 35. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Crer sa VM Azure Pour lister les images disponibles pour crer ma VM : azurevmdockercreatee22l"NorthEurope"magento2cloud ""vmsizeBasic_A3iteliosSecretPassword234! Pour crer ma VM : On dmarre la VM : azurevmimagelist|grep'Ubuntu_DAILY_BUILDtrusty' azurevmstartmagento2inthecloud
  35. 36. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Envoyer un premier container hello world On utilise l'image busybox pour lancer echo hello world L'image n'tant pas prsente sur la VM docker va automatiquer faire un docker pull pour la rcuprer depuis le docker Hub. dockerHtcp://magento2cloud.cloudapp.net:4243tlsrunbusybox /bin/echohelloworld
  36. 37. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Envoyer son container docker sur docker Hub Docker Hub : Repository d'images Docker Il est possible d'avoir un Hub priv Pour pousser sur le hub : docker push dockerpushpierrefay/magento2cloud
  37. 38. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Rcuprer son container sur Azure On rcupre l'image depuis le docker hub : dockerHtcp://magento2cloud.cloudapp.net:4243tlspull pierrefay/magento2cloud
  38. 39. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs On lance notre container sur Azure Docker Hub : Repository d'images Docker Il est possible d'avoir un Hub priv Pour pousser sur le hub : docker push dockerHtcp://magento2cloud.cloudapp.net:4243tlsrunname magento2cloud envBASE_URL="magento2cloud.cloudapp.net" envTOKEN_GITHUB="" v/data/magento2cloud/mysql/:/var/lib/mysql v/data/magento2cloud/html/:/var/www/magento2 p80:80 p10081:10081 p10082:10082 pierrefay/magento2cloud
  39. 40. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs On ouvre les ports sur la VM azurevmendpointcreatemagento2cloud80 azurevmendpointcreatemagento2cloud3306 azurevmendpointcreatemagento2cloud10081 azurevmendpointcreatemagento2cloud10082
  40. 41. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs On lance notre container sur Azure Pour relancer un container : stop + rm + run runnamemagento2cloud envBASE_URL="magento2cloud.cloudapp.net" envTOKEN_GITHUB="" v/data/magento2cloud/mysql/:/var/lib/mysql v/data/magento2cloud/html/:/var/www/magento2 p80:80 p10081:10081 p10082:10082 pierrefay/magento2cloud
  41. 42. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservs THE END .maintenant vous de tester! Retrouvez les sources de cette confrence sur: https://github.com/pierrefay/magento2-azure-demo Retrouvez moi sur: Twitter: @pierrefay Blog: pierrefay.fr / pierrefay.com