La sauvegarde de données est une composante essentielle dans le process de développement d'un site internet vous le savez bien. En effet, que cela soit pendant vos tests en préproduction ou lors de la mise en production de votre projet, vous avez constamment besoin d'effectuer des sauvegardes de votre base de données.

A plus forte raison après la mise en ligne de votre projet, puisque il serait préjudiciable en cas de crash, de n'avoir qu'une sauvegarde à J+10. Cela signifierait que vous auriez perdu toutes les modifications effectuées sur votre site sur 10 jours ! Impensable.

Si vous n'êtes pas encore familiarisé à l'utilisation des lignes de commandes sauvegarder une base de donnée est (certainement) pour vous une opération complexe, chronophage, et nécessite peut-être l'utilisation d'un logiciel tiers dont vous n'avez réellement pas besoin ! (si, si, croyez-moi ...).

Lors de mon précédent tutoriel je suis revenu sur les commandes SSH fondamentales qui vous permettent d'utiliser de façon productive le terminal, vous familiariser avec les lignes de commandes et remplir une multitude de tâches que vous faisiez peut-être manuellement auparavant. Si vous n'avez pas encore eu l'occasion de découvrir ce tutoriel je vous invite à le lire, il vous sera certainement utile.

Maintenant que nous avons vu comment travailler avec notre terminal ou que c'est quelque chose qui vous parle déjà, vous savez désormais comment effectuer les opérations principales que vous faisiez avec votre logiciel FTP très limité avouons-le. Et si il n'était pas encore K.O. patiente, ce qui suit ne laissera plus aucune place au doute.

Voilà une vérité universelle : Votre logiciel FTP est limité et ne travaillera certainement pas aussi vite que vous !

Voyons tout de suite comment effectuer des opérations simples en lignes de commandes pour travailler avec un serveur de base de données MySQL et effectuer des sauvegardes en un claquement de doigts (Clin d'œil Thanos!).

Comme il faut bien commencer quelque part, je vous propose de commencer par le plus simple, se connecter à un serveur de base de données, et effectuer des requête SQL simples. Nous verrons ensuite (en bas de page) comment effectuer une sauvegarde en quelques secondes. En bonus je vous explique même comment avoir une jolie petite barre de progression !

Se connecter à la base de données

Voyons les arguments de cette commande ensemble :

  • mysql : indique que l'on travaille sur un serveur de base de données
  • -h ou --host : indique que l'on fait passer un host à notre commande
  • dbhost : C'est l'adresse IP de votre serveur (localhost si votre base de donnée est sur le même serveur que celui auquel vous êtes connecté)
  • -u : indique que l'on précise un utilisateur
  • dbuser : correspond à votre identifiant pour accéder à la base de données
  • dbpassword : (optionnel) correspond au mot de passe de votre identifiant pour accéder à la base de données. Lisez le paragraphe suivant sur ce point, c'est vraiment important !
  • dbname : indique la table sur laquelle vous souhaitez vous connecter

Avec la commande ci-dessus vous êtes prêt à interagir avec votre base de données et effectuer des requêtes (ex. Select, Update, etc...).

Petite note de sécurité : Si vous ne le saviez pas déjà, sachez que chaque commande que vous tapez en SSH est stockée dans un fichier d'historique de commandes. Il est donc assez simple pour un administrateur réseau un peu qualifié d'arriver à retrouver les commandes que vous auriez pu saisir.

Dans cette optique je vous recommande de remplacer le « --password=dbpassword » par « -p » pour indiquer que votre commande nécessite un mot de passe. Votre mot de passe ne sera donc pas renseigné dans l'historique de commandes cependant vous serez invité à le saisir lorsque vous appuierez sur Entrée pour executer votre commande.

Disons qu'en terme de sécurité il est beaucoup plus propre de masquer ce type d'éléments critiques. Je souhaitait tout de même vous montrer la commande pour que l'on fasse ce petit point sécurité car pour les commandes suivantes j'utiliserais le « -p » sur les commandes nécessitant ce type d'informations critiques, ne soyez donc pas étonnés.

Lister toutes les tables de votre base de données

Maintenant que vous êtes connecté, vous disposez dans votre terminal de l'accès aux requêtes SQL.

Vous n'avez pas d'interface mais il s'agit de la même chose que l'onglet « SQL » d'un phpMyAdmin de base.

Pour lister toutes les tables de votre base de données vous taperez donc la commande qui suit, attention, chaque requête devra se terminer par un point-virgules « ; » sans quoi vous verrez une erreur de syntaxe apparaitre.

Effectuer une requete simple sur une table

Pour effectuer une requête SQL en SSH cela se passera exactement de la même manière que sur phpMyAdmin dans votre onglet « SQL ».

Disons par exemple que je veux sélectionner toutes les informations d'une table « users » je taperais donc la commande suivante dans mon terminal :

Un tableau apparait avec toutes les informations, disons maintenant que je ne veux que les utilisateurs de ma table « users » qui ont pour adresse email une adresse en « @gmail » je taperais donc exactement la même commande en rajoutant un WHERE avec les arguments dont j'ai besoin, par exemple :

Si vous n'êtes de base pas très à l'aise avec MySQL je vous recommande de vous renseigner sur cette partie car c'est vraiment primordial de pouvoir effectuer des requêtes de base. J'aurais peut-être l'occasion de faire un petit tutoriel sur cette partie plus tard !

Exporter une base de donnée en « .sql »

Bon, nous allons attaquer la partie la plus importante de ce tutoriel ! Un peu plus haut je vous expliquais que l'on pouvait effectuer des backups (fr: sauvegardes) de la base de données en quelques secondes.

Dans mon cas, j'aime bien avoir une information sur la progression de ma commande. Bah oui ! Admettons qu'on sauvegarde une base de données de 2GB (Gigas)... si vous n'avez pas de barre de progression ou un indicateur visuel qui vous permet d'indiquer l'état de votre commande, comment savoir si vous avez le temps de passer un coup de fil, ou boire un café ?!

Plus sérieusement, dans notre métiers le temps c'est de l'argent. Pardon d'être pragmatique mais la rentabilité est une notion fondamentale dans la recherche d'optimisation.

Imaginez que vous deviez produire un planning précis à votre client en lui indiquant un temps de migration pour la mise en production de son site. Si vous n'avez même pas cette information... bref vous m'avez compris.

Nous allons donc commencer par ajouter une petite fonctionnalité qui nous permettra visuellement d'obtenir une barre de progression indiquant l'état d'avancement de notre commande d'export. Pour cela ouvrez votre terminal et tentez de taper la commande suivante :

Dans la plupart des cas vous devriez obtenir par défaut le message d'erreur suivant : « pv: command not found ». Pas de panique, c'est normal. Cette commande ne fait pas partie des paquets installés par défaut alors installons-là ensemble. Toujours dans votre terminal tapez :

Une fois l'installation terminée (cela ne prend que quelques secondes), re-tentez de taper la commande « pv » et là vous devriez voir apparaitre une barre de progression vide. Normal puisqu'elle n'indique la progression d'aucune tâche... pour le moment !

Maintenant que notre petit bonus est en place, nous pouvons effectuer une requête d'export SQL, je vous laisse découvrir la commande d'export ci-dessous :

Alors, revenons un instant dessus. Comme pour nous connecter à notre base de données, nous devons ici envoyer quelques arguments à notre commande pour lui indiquer sur quel serveur travailler, avec quels identifiants, etc etc. Vous devriez avoir compris la majorité des arguments présents dans la commande je ne vais donc me concentrer que sur les arguments que nous n'avions pas encore vu jusque là :

  • mysqldump : l'export se fait avec mysqldump, l'import avec mysql.
  • -e : (optionnel) permet d'indiquer que l'export s'effectue avec de multiples INSERT
  • | : le séparateur pipe (ou la barre droite pour les néophytes) à ne pas confondre avec un L minuscule (séparateur pipe : | vs la lettre minuscule L : l ), il permet dans des commandes SSH de filtrer ou effectuer plusieurs opérations sur une même commande
  • pv : c'est du coup notre petit bonus « Barre de progression »
  • > : le chevron vers la droite indique que nous envoyons le résultat de notre commande vers un fichier
  • nomDuFichier.sql : c'est le nom du fichier en sortie que nous obtiendrons. Précédé du chevron vers la droite il indique à notre commande « Envoi le résultat de ma commande dans le fichier nomDuFichier.sql ».

Petite précision : Pour votre fichier en sortie vous pouvez préciser un chemin relatif vers un dossier précis. Par exemple si vous vouliez envoyer votre backup dans un dossier précis, en partant de l'exemple ci-dessus l'argument « nomDuFichier.sql » pourrait être « /var/www/vhost/backups/nomDuFichier.sql ».

Importer une base de donnée depuis un fichier en « .sql »

OK ! Maintenant que vous savez effectuer un backup en quelques secondes vous allez voir que le restaurer, ou tout simplement l'installer est tout aussi simple. La commande est quasiment similaire à la précédente seul l'ordre change donc vous devriez arriver à la comprendre assez facilement.

Cette syntaxe d'import est vraiment propre à l'utilisation de la commande « pv » je vais donc tout de même vous donner la commande d'import SQL sans le pipe, sait-on jamais, vous n'aimez peut-être pas les barres de progression :

Comme je le disais plus haut, la commande est identique à celle de l'export. Rappelez-vous que « mysqldump » correspond à un export, et « mysql » est utilisé pour se connecter (et effectuer des requêtes SQL) où importer un fichier « .sql ».

Le sens du chevron (chevon vers la gauche) indique ici que nous importons le contenu de notre fichier dans notre base de données. La ligne de commande fait sa tambouille et hop, cela devient un import SQL !

La Conclusion de tout ça ?

Vous êtes maintenant un pro de l'export/import de fichier MySQL, mais allons un peu plus loin et mettons définitivement K.O votre logiciel FTP. Disons que vous avez un site de Préproduction, vous avez travaillé dessus de longs mois, maintenant il est prêt ! Vous devez effectuer la migration, mais voici quelques problématiques :

  • Vous avez travaillé votre version de Préprod sur un serveur A
  • Vous devez migrer votre travail sur le site de production, mais il se trouve sur un serveur B
  • Vous devez migrer vos bases de données, et les réinstaller !

Alors en temps normal vous auriez procédé de la manière suivante :

  • Vous transférez avec un logiciel FTP tous vos fichiers
  • Vous les importez sur le serveur B
  • Vous faites un backup SQL du serveur A
  • Vous le téléchargez puis le renvoyez sur le serveur B ou arrivez à l'installer sans trop de difficulté avec un logiciel de base de données type Navicat

OK. Génial, mais. Parce que Oui il y à un mais. Toutes ces étapes sont chronophages, il vous aura fallu au moins deux heures si les fichiers sont un peu lourds !

Si vous n'aviez pas d'autres méthodologie, voici ce que vous devriez faire, et aucune de ces étapes ne nécessite d'utiliser autre chose que votre terminal :

  • Exporter votre base de données avec la commande « mysqldump » que vous venez d'apprendre
  • Créer une archive « .tar.gz » de vos fichiers
  • Transférer votre archive et votre backup SQL directement vers votre serveur de Prod avec la commande « scp »
  • Importer votre base de données en ligne de commandes

Ce process en plus d'être beaucoup plus rapide, vous permet de faire un échange de données direct entre vos deux serveur.

Ô magie, Ô stupéfaction ! Vous venez d'importer en quelques secondes vos fichiers de Préprod et votre base de données et n'avez même pas eu à ouvrir une seule fois votre logiciel FTP ! Il en dit quoi FileZila ? xD

Bon. Nous allons aborder l'une des meilleures astuces qu'il m'ai été donnée depuis le début de ma carrière. Si vous avez suivi mes précédents tutoriels sur les commandes SSH ou encore l'installation de Magento 2 avec composer, vous avez du découvrir une multitude de commandes qui vous ont déjà facilité la vie. 

Eh bien aujourd'hui nous allons aller encore plus loin sur notre apprentissage du terminal et je vais vous introduire une nouvelle notion qui est l'alias de commande. Alors oui, dit comme ça ça ne parle pas forcément, pourtant vous allez voir que c'est un gain de temps énorme dans votre méthodologie.

Personnellement c'est un indispensable pour moi pour tout bon développeur. Par définition, un développeur doit être fainéant. Alors je vous vois déjà avec un petit sourire en coin, mais Non ! Je ne parle pas de l'envie (ou non) de travailler. Je parle ici de productivité. Un bon développeur doit avoir a sa disposition une suite d'outils qui lui permettent d'être pragmatique tant dans sa réflexion que dans sa méthodologie de travail.

Je reprends notre exemple Magento 2. Partons du principe que nous devons effectuer plusieurs opérations dans la même (demie) journée.

  • Accéder à un dossier
  • Installer une extension Magento 2
  • Vider les caches de Magento 2

Pour cet exemple je pars du principe que je travaille sur un serveur VPS hébergé chez OVH disposant de Plesk, disons que j'ai des dossiers de travail qui s'appelleraient Preprod & Prod. Mon dossier Preprod contiendra deux dossiers « preprod01 » et « preprod02 », mon dossier Prod quant à lui ne contiendra qu'un seul dossier qui sera « prod01 ». 

Petite précision, c'est un cas d'exemple, donc ne paniquez pas, inutile de reproduire mon arborescence de dossiers, vous pouvez adapter cet exemple à votre cas de figure sans aucun soucis !
Dernière précision, cet exemple est également valable en local. Donc si vous travaillez vos projets en local vous pourrez également (même si vous n'en n'aurez probablement pas autant besoin) adapter cette méthodologie à vos besoins.

Entrons maintenant dans notre exemple. Pour accéder à notre dossier « preprod01 » qui se trouve dans « Preprod » voilà la commande que l'on taperait habituellement :

Nous ferions la même chose pour nous rendre dans un autre dossier, et ainsi de suite. Génial... Mais sur notre machine nous disposons d'un fichier de configurations « .bashrc » qui est appelé à chaque fois qu'une ouverture de terminal s'effectue. L'utilité de ce fichier ? C'est simple, il peut contenir des tonnes de petites configurations (des alias) qui vont travailler pour vous.

Qu'est-ce qu'un alias ?

Un alias c'est un raccourci vers un élément ou une fonction donnée ! En clair, si vous indiquiez à un alias nommé d'effectuer une tâche, eh bien vous taperiez dans votre terminal le nom de votre alias et il effectuerait cette tâche pour vous ! Vous voyez où je veux en venir maintenant ?

Rappelez-vous notre exemple précédent, nous souhaitions nous rendre facilement dans différents dossiers, sans avoir à taper à chaque fois la totalité du chemin, puisque pour rappel lorsque vous travaillez avec votre terminal, vous devez entrer la totalité de votre chemin pour accéder à votre dossier. Pour le coup, vous n'allez taper que votre alias.

Alors voyons comment créer un alias. Tout d'abord vous devez créer un fichier « .bashrc » à la racine de votre installation s'il n'existe pas déjà. Pour cela, vous taperez la commande suivante :

Notez que j'utilise « nano », dans l'édition il existe également « vi » en remplacement de « nano » mais personnellement je trouve l'utilisation de « nano » beaucoup plus simple et facile à prendre en main. Vous trouverez chez OpenClassroom un très bon article traitant le sujet, mais ce n'est pas à l'ordre du jour !

Pour l'exemple, je vais créer des alias vers chacun des dossiers que j'ai listé dans mon exemple afin de bien comprendre le fonctionnement, vous pouvez le copier/coller et l'adapter à votre cas :

C omme nous travaillons avec « nano » pour enregistrer notre fichier faites « CTRL + X » puis taper sur « Y » (Y pour Yes, N pour No) puis sur Entrée pour valider. 

Votre fichier est maintenant sauvegardé, en revanche votre session n'utilise pas ce fichier de configuration pour l'instant ! pour cela vous devez le « synchroniser », pas de panique il y à également une commande pour cela, je vous laisse la chercher sur internet et je vais me faire un café en attendant ?!
Bon allez, tapez ceci :

Alors, revenons sur ce que nous avons fait ! La commande « nano » est comme un éditeur de texte. Elle permet de créer / modifier un fichier (texte, php, csv, etc...). Dans ce fichier « bashrc », vous avez rentré des alias de commande. Leur fonction sera d'effectuer un « cd » puis le nom de votre dossier. La commande « cd » pour rappel sert à se déplacer dans l'arborescence de notre serveur.

En clair cela signifie que, dans mon terminal, peu importe où je me trouve, je pourrais taper le nom de mon alias, et ce dernier me conduira directement dans le dossier souhaité ! Si je veux aller dans mon dossier « preprod01 » une fois que je serais connecté à mon serveur je pourrais donc taper « preprod01 » et pouf, je me retrouverais dans le bon dossier ! Magique non ? 

Application de Bashrc pour magento

Maintenant que vous avez appris à créer vos premiers alias, imaginez les possibilités d'applications dans le cas d'un projet Magento 2 par exemple. Comme je le disais, lorsque vous travaillez sur Magento, certaines commandes sont un peu redondantes, je pense notamment à celles qui ont pour objectif de vider les caches, effectuer des compilations ou encore générer des flux !

Pourquoi ne pas en faire des alias de commande alors ?!

Dans l'exemple ci-dessous je vais créer un alias sous forme d'inclusion de plusieurs commandes. Rappelez-vous que les commandes SSH ont la possibilité d'être chainées, c'est-à-dire mises les unes à la suites des autres sur un seul appel. Ce qui signifie qu'en une seule commande tapée, vous en effectuerez plusieurs.

Créons donc notre alias « générique »

Dans l'exemple ci-dessus, je n'ai pas modifié les alias de Preprod ni ceux de Prod, j'ai seulement rajouté mes alias génériques pour Magento 2. Grâce à eux, si je veux désormais utiliser une des commandes habituelles de Magento pour laquelle j'aurais habituellement tapé 

Désormais dans mon terminal je ne taperais plus que :

Continuons sur notre lancée pour exploiter pleinement le fameux système de « chain » (chainage) de nos commandes en rajoutant un niveau de complexité :

Dans l'exemple ci-dessus je vous ai rajouté trois alias :

  • cc : cet alias me sert à lancer la commande de cache clean de magento
  • emptyCache : permet de supprimer les dossiers contenant des fichiers statiques de magento (ils sont regénérés automatiquement si vous avez activé le mode développeur, ne les supprimez pas directement en production !)
  • emptyCacheAndClean : C'est là que la magie opère. Vous voyez que cet alias ne contient que quelques « mots » qui sont en fait des alias avec des opérateurs.

Dans notre alias « emptyCacheAndClean » vous pouvez voir que le premier élément est « pwd » qui nous retourne le chemin dans lequel nous nous trouvons afin d'être sur que nous travaillons dans le bon dossier, dans le cas présent voyez ça comme une commande informelle.
Cette commande est suivie de l'opérateur « && » qui nous permet de dire « Effectue telle action, et quand tu as finis passe à la suivante ». Ensuite vient notre alias « cc » qui vide le cache de magento.
En clair, vous pouvez voir qu'avec une seule commande vous effectuez plusieurs opérations d'un coup. Vous voyez qu'on est passé de commandes relativement longues et redondantes à des mots clé très simple à retenir que vous pouvez réutiliser sur n'importe quel projet d'une nature similaire. Pour cela vous n'aurez qu'à copier/coller le contenu de votre fichier « .bashrc » d'un serveur à l'autre.

Mon fichier bashrc Pour Magento 2

Comme Magento 2 est l'un des frameworks sur lequel je travaille le plus en ce moment, je vous propose de découvrir mon fichier « .bashrc » qui contient les commandes que j'utilise le plus souvent. C'est un fichier que je mets à jour régulièrement selon mes besoins, mais vous pouvez vous en inspirer pour vos projets Magento 2 et l'agrémenter selon vos propres besoins !

En conclusion

Ce tutoriel touche à sa fin, j'espère avoir été clair dans mes explications car je suis loin d'être un expert en ce qui concerne bash, cependant j'ai pu apprendre quelques petites choses que j'ai plaisir à partager avec vous. Si vous rencontrez des difficultés n'hésitez pas à me contacter.

Quoi qu'il en soit, même si de prime abord ces notions peuvent paraitre relativement complexes, c'est un réel gain de temps et une optimisation nette de votre productivité une fois pris en main.

Grâce à l'utilisation de votre terminal pouvez simplement effectuer des backups de vos bases de données sans avoir besoin d'acheter des licences pour des softwares tel que Navicat, ou encore perdre du temps à transférer vos fichiers en local pour conserver des backups de fichiers.

Bonjour à tous ! Aujourd'hui je vous propose de découvrir les fondamentaux de l'installation du framework Magento 2 avec Composer. Pour ce tutoriel je partirais du principe que vous avez déjà quelques bases sur l'utilisation du terminal et des commandes SSH, mais si ce n'est pas le cas, pas de panique vous pouvez toujours lire le tutoriel sur les fondamentaux SSH que j'ai rédigé spécialement pour vous et reprendre ce tutoriel dans la foulée. 

Sachez que pour ma part, lorsque j'ai commencé à utiliser composer je n'avais qu'un niveau de débutant, ce tutoriel s'adresse donc à tous les niveaux et je vais essayer au mieux de vous faire comprendre le fonctionnement de chaque étape.

Vous êtes prêt ? Allons-y !

Pré-recquis

Sachez que pour commencer Magento 2 requiert une configuration serveur minimum, ici je vais partir du principe que vous possédez un serveur client de Preprod sur lequel effectuer votre installation, ou que vous souhaitez effectuer cette installation sur votre ordinateur en local. Je vous donne donc deux cas de figure sur lesquels vous appuyer pour arriver à effectuer cette installation très simplement.

Comme je vous le disais, Magento 2 nécessite une certaine configuration pour fonctionner correctement, voici la liste des minimas à respecter :

Pour pouvoir installer magento2 il vous faut :

  • PHP 7 minimum (supporte PHP 7.2.11)
  • Activation des extensions PHP suivantes : php-bcmath, php-cli, ,php-common, php-curl, php-gd, php-intl, php-mbstring, php-mcrypt, php-opcache, php-openssl, php-pdo, php-soap, php-xml, php-xsl, php-zip.
  • Un serveur MySQL 5.6 ou supérieur

Si cette liste vous effraie, rassurez-vous, si vous travaillez sur un serveur en remote avec une interface Plesk vous pourrez rapidement obtenir ces configurations, de plus la plupart des serveurs récents disposent de ces configurations de base. Si vous travaillez sur MAMP/WAMP, vous devrez probablement effectuer une petite mise à jour de votre installation pour répondre à ces pré-requis mais rien de bien alarmant !

Installation en local de composer

La première étape sera d'effectuer l'installation de composer, partons du principe que vous êtes en local, que composer n'est pas encore installé sur votre machine. Commençons tout de suite, ouvrez votre terminal puis rendez-vous dans votre dossier de travail. Sur l'exemple ci-dessous je vais travailler dans mon dossier htdocs du logiciel MAMP pour Mac. Le principe est identique sous windows mais vous utiliserez WAMP.

Pour lancer l'installation de composer rentrez la ligne ci-dessous

Si le message d'erreur suivant apparait en local ou sur votre serveur : « Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 487424 bytes) in Standard input code on line 1211 » cela signifie que vous devez augmenter le paramètre « memory_limit » de votre fichier « php.ini ».

Une fois cette erreur corrigée vous obtenez un fichier « composer.phar ». Pour utiliser ce fichier de manière globale effectuez la commande suivante : 

Cette commande déplacera le fichier « composer.phar » dans un dossier spécifique qui permettra d'utiliser composer en dehors de votre dossier de travail. De cette manière vous pouvez appeler composer depuis n'importe quel dossier de votre machine locale.

Une fois composer installé, dans votre terminal si aucun message d'erreur n'est apparu, tapez simplement « composer » pour voir apparaitre une liste de fonctionnalités. Si tout s'est passé correctement voici ce que vous devriez obtenir :

Capture d’écran 2019 04 01 à 09.29.19 - Installer Magento 2 avec Composer

Je ne vais pas rentrer dans les détails concernant composer, ce n'est pas l'objet de ce tutoriel, cependant pour résumer on pourrait voir composer comme un utilitaire de téléchargement qui permettra d'installer rapidement des framework type Magento, Laravel, etc, mais également les extensions qui les accompagnent. 

C'est un utilitaire relativement pratique qui vous évite de devoir passer par un logiciel FTP et gérer des fichiers « .zip » ou des dossiers. Composer s'occupe de tout pour vous. Un autre avantage non-négligeable concerne la désinstallation de ces même extensions. S'il est relativement simple d'installer des extensions Magento 2 avec composer, il sera tout aussi rapide et simple de les désinstaller en cas de besoin !

Maintenant que vous êtes prêts à utiliser composer nous allons pouvoir entrer dans le vif du sujet, l'installation de Magento 2 !

Installation de magento 2 avec composer

Rendez-vous dans votre dossier de travail, celui ou vous souhaitez effectuer l'installation de Magento 2 puis tapez simplement la commande suivante dans votre dossier de destination : 

Magento étant très capricieux, vous aurez besoin ensuite d'attribuer les bonnes permissions aux dossiers de votre installation. Pour ce faire rentrez la commande suivante :

A ce stade nous en avons terminé avec les fichiers & dossiers. Nous n'avons plus qu'à lancer l'installeur de Magento 2 qui s'occupera de créer le shéma de base de données, et mettre en place notre plateforme en tant que telle. Pour cela, créez une table sur votre base de donnée si ce n'est pas déjà fait puis allons-y :

La commande ci-dessous execute l'installeur de Magento 2 qui selon moi est plus rapide et efficace que l'installation par l'interface en ligne. Voici le détail de chaque ligne :

  • --base-url : Cela correspond à votre domaine contenant le http:// (ou https:// si vous disposez d'un certificat SSL)
  • --db-host : Il s'agit de l'IP de votre serveur de base de données (laissez localhost si votre serveur de base de données et votre serveur de fichier sont identiques)
  • --db-name : Remplacez la valeur entre guillemets par le nom de votre base de données
  • --db-user : Remplacez la valeur entre guillemets par le nom d'utilisateur de votre base de données
  • --db-password : Remplacez la valeur entre guillemets par le mot de passe de votre utilisateur base de données
  • --admin-firstname : Remplacez la valeur entre guillemets par le prénom de votre compte administrateur
  • --admin-lastname : Remplacez la valeur entre guillemets par le nom de votre compte administrateur
  • --admin-email : Remplacez la valeur entre guillemets par l'adresse email de votre compte administrateur
  • --admin-user : Remplacez la valeur entre guillemets par l'identifiant de votre compte administrateur. Cet identifiant vous servira à vous connecter à votre backoffice Magento 2
  • --admin-password : Remplacez la valeur entre guillemets par le mot de passe de votre compte administrateur. Préférez des mots de passe relativement complexes de 8 à 16 caractères... pas le nom de votre chat, ou votre date de naissance
  • --backend-frontname : Remplacez la valeur entre guillemets par le chemin de votre futur backoffice. Ici vous pouvez taper ce que vous voulez. Cependant ne mettez ni accent, ni majuscules, ni espaces. Evitez de rentrer « admin » car cela serait trop simple de trouver l'URL de votre backoffice. Choisissez quelque chose d'un peu plus compliqué ! Un bon exemple pourrait être : « gestion1989 ». L'url de votre backoffice serait alors « http://www.monsite.com/gestion1989 ».

Ne modifiez pas les autres valeurs pour l'instant, nous les ajusterons une fois Magento 2 installé. À ce stade, vous en avez fini avec l'installation de Magento 2. Vous pouvez maintenant vous connecter à votre backoffice en vous rendant sur l'URL que vous avez déterminé lors de l'installation sur la clé « --backend-frontname ».

Dans votre backoffice Magento 2 vous trouverez les paramètres des locales (langues) dans le menu « Stores > Configuration > General ». Vos paramètres de devises (pour mettre votre boutique en Euros (€) seront quant à eux dans « Stores > Configuration > Currency Setup ».

Quelques commandes de base
à connaitre à tout prix !

Gestion du cache

Vide tous les types de cache

Vide les dossiers de cache générés par les types de cache

Check le status des caches et retourne un tableau

Désactive le cache (tous par défaut).

Désactive le cache (tous par défaut)

Bon à savoir : Pour chacune des commandes ci-dessus vous pouvez spécifier le nom du cache sur lequel agir en récupérant l'identifiant du cache visé en utilisant la commande « cache:status » citée plus haut, puis effectuez la commande désirée, par exemple pour vider le cache de type « full_page » vous feriez :

Il est bien entendu possible d'agir sur plusieurs types en même temps (si vous ne souhaitez pas tous les vider d'un coup). Par exemple pour ne vider que 2 types de cache (full_page et block_html) vous feriez :

Installation des packages français

Cette commande installe les packages Français pour Magento, ils sont indispensables si vous devez installer la langue Française sur votre store. Ils permettront également d'obtenir une interface backoffice.

Changer l'URL de votre backoffice

Vous souhaitez sécuriser votre backoffice ? Quoi de plus logique que d'en changer l'URL d'accès ? Pour cela entez la commande ci-dessus et remplacez la valeur entre guillemets de « --backend-frontname » par l'URL que vous souhaitez obtenir. Pour avoir par exemple « https://www.maboutique.com/gestion » en URL de backoffice vous ferez donc :

NB. Je vais être chiant une dernière fois, mais par sécurité veillez à ne pas laisser des URLs trop simple d'accès comme « administration », « admin » et consorts est à proscrire absolument. Cela mérite d'être spoilé du dernier Avengers !

En bref, n'hésitez pas à mettre une URL un peu plus compliquée, par exemple « management2019 » ou autre, tant que je n'arrive pas à y avoir accès en tapant « /admin » dans mon navigateur. Vous serez déjà sur la bonne voie de la sécurisation.

Switcher en mode développeur ou production

Le mode développeur sera utilise lors de votre phase de développements & tests cependant souvenez-vous qu'avant de passer votre version de Preprod en production il faudra effectuer le petit switch du mode de Magento. Pour cela voici les deux commandes possibles :

Cette commande passe votre boutique en mode Développeur

Cette commande-ci la passe en mode Production. Elle s'occupera de générer les fichiers statiques, et effectuer les compilations nécessaires. Une fois ce mode activé, cela signifie que (pour vous) votre boutique est prête à être mise en ligne, que vous avez testé le fonctionnement de votre boutique, les modes de livraison et de paiement, les règles de prix catalogue et panier, configuré Varnish si vous l'utilisez (vous devriez toujours l'utiliser...). 

En bref, cette commande c'est la clé que vous mettez dans la porte pour fermer à double tour.

Activer les path hints

Abordons le cas du debug. Personnellement, j'adore travailler sur des intégrations magento, créer des blocs et y insérer des contenus dynamiques etc. On en parlera un peu plus tard dans un autre tutoriel mais en clair, pour créer des blocs de contenus Magento utilise une architecture XML. Debbuger des fichiers XML peut s'avérer rapidement chiant en fonction du nombre de blocs présents ou de la page sur laquelle vous travaillez.

Pour simplifier cette tâche, Magento dispose de son propre système de debbug de templates, cela s'appelle les Path Hints. Mais à quoi ça ressemble concrètement ? Voici un exemple :

3 template path hints enabled on frontend 1024x549 - Installer Magento 2 avec Composer

Alors Oui ! concrètement ces blocs rouges, c'est moche ! Mais comme vous le voyez sur cette capture, cela affiche un petit bloc rouge dans lequel vous trouvez une info intéressante, c'est le chemin du template qui est utilisé par Magento pour construire votre thème.

Comme je le disais précédemment, votre thème est composé par un fichier XML qui s'occupe de mettre en place une imbrication de fichiers « .phtml » qui composent votre thème final. Lorsque vous ajoutez un fichier « .phtml » à votre fichier « .xml » vous le verrez apparaitre dans les paths hints.

Pour aller un peu plus loins je vous invite à découvrir la super extension de Reach Digital, H&O Magento 2 Advanced Template Hints module

Cette extension est simplement géniale, personnellement je l'utilise pour chaque projets. En gros, c'est la même chose en plus évolué. En plus de vous retourner le nom des templates, cela remonte dans votre console le modèle PHP utilisé par votre bloc. Testez-là vous en serez vite accro.

installer les sample data (contenus de démo)

Vous pourriez en avoir besoin alors je vous présente cette petite commande qui effectue l'import des sample data de Magento 2. Cela va par exemple créer en backoffice des produits, et des catégories qui vous permettront de tester Magento 2. C'est très utile si vous devez créer un nouveau thème Magento 2 « from scratch » en vous appuyant sur un peu de contenu pour faire vos tests.

Pour aller plus loin,
et gagner en productivité

Durant vos phases de développement certaines opérations peuvent s'avérer redondantes. Le principe est simple, vous développez... super, mais vous avez besoin de visualiser le résultat en front-office ! Vous pourriez très bien désactiver tous les caches, mais croyez-moi vous n'en aurez pas fini si vous faites cela car votre site tout entier sera lent, autant en front office qu'en backoffice.

Pour cela, je vais vous donner ma technique pour gagner du temps ! Pour vous faire un petit « teasing » de ce que je vais vous montrer, nous allons créer un fichier qui contient des raccourcis, et plutôt que de taper la totalité de nos commandes, nous ne taperont que notre suite de raccourcis les uns à la suite des autres pour gagner du temps.

Vous voulez en savoir plus ? Je vous donne alors rendez-vous sur mon article dédié à ce sujet : Gagner en productivité avec bashrc