====== Installer Magento 2 sur Simple Hosting ====== Vous pouvez créer des sites de e-commerce avec Magento 2 sur Simple Hosting sur les instances PHP 5.6 / MySQL 5.6 (Percona) et PHP 7 / MySQL 5.6 (Percona). Cet article vous offre un guide détaillé sur comment installer et configurer Magento Community Edition 2 de deux manières (sFTP et SSH, ou avec Composer, git et SSH), et vous accompagne dans la configuration des paramètres avancés tel que le cache Varnish, les tâches de fond, les backups, l'utilisation du CLI Magento et l'optimisation de PHP. ===== Pré-requis ===== * Un compte Gandi (gratuit) * Une [[https://www.gandi.net/hebergement/simple?language=php&db=mysql|instance PHP / MySQL]] ((taille M ou supérieure recommandée) * PHP 5.6 / MySQL 5.6 (Percona) ou * PHP 7 / MySQL 5.6 (Percona) * Un VHOST (Adresse Web) déjà créé pour le domaine de votre site (par exemple, store.example.com) ([[:simple:vhost|voir le guide]]) * [[https://www.magentocommerce.com/products/customer/account/create/ |Un compte Magento]] (gratuit) * [[https://marketplace.magento.com/customer/accessKeys/list/ |Une "AccessKey" Magento]] (gratuite) * Une base de données et un utilisateur / MySQL déjà créés pour votre site Magento ([[:simple:mysql|voir le guide]]) ===== Méthode 1: copier les fichiers par sFTP ===== ==== Téléchargez Magento 2 sur votre ordinateur ==== Téléchargez la dernière version de Magento 2 depuis le site officiel, en optant pour le format "tar.gz". Il vous sera demandé de vous enregistrer gratuitement avant de pouvoir télécharger le fichier. https://www.magentocommerce.com/download Vous devriez maintenant avoir un fichier ".tar.gz" sur votre ordinateur. Par exemple sur Windows, ''C:\Users\Me\Downloads\Magento-CE-2.0.7-2016-05-24-12-15-40.tar.gz''. Ou, sur Linux ''~/Downloads/Magento-CE-2.0.7-2016-05-24-12-15-40.tar.gz''. ==== Accédez à votre instance par sFTP ==== Obtenez l'adresse sFTP de votre instance depuis sa page d'administration sur le site de Gandi.net. L'adresse ressemblera à : 123456789@sftp.dc2.gpaas.net Connectez-vous avec votre client sFTP préféré en entrant le mot de passe de votre instance, ou en utilisant votre clé SSH pour vous identifier. Vous pouvez en savoir plus sur [[:simple:sftp | notre guide d'utilisation de sFTP sur Simple Hosting ]]. ==== Copiez les fichiers sur votre instance ==== Une fois connecté, accédez à l'intérieur du répertoire ''htdocs'' du VHOST correspondant au domaine choisi pour Magento. Nous utiliserons toujours ''store.example.com'' dans les exemples. Par exemple : ''vhosts/store.example.com/htdocs''. Maintenant, copiez le fichier ''Magento-CE-2.0.7-2016-05-24-12-15-40.tar.gz'' sur votre instance avec votre client sFTP. Vous pourrez ensuite vous connecter par SSH pour décompresser le fichier directement sur l'instance, tel que décrit plus bas. Alternativement, vous pourriez décompresser le ficheir localement et déplacer le résultat, mais cela peut prendre plusieurs heures en raison du grand nombre de fichiers à copier (si vous optez tout de même pour cette option, pensez à ne pas copier le répertoire "dev" pour vous épargner plusieurs heures supplémentaires). En échange, vous n'aurez pas à vous connecter par SSH pour décompresser le fichier. ==== Décompressez le fichier sur votre instance ==== Obtenez les détails de connexion à la console SSH de votre instance depuis sa page d'administration sur le site de Gandi. Consultez notre guide d'utilisation de [[:simple:console | la console SSH sur Simple Hosting]] pour plus d'informations. me@laptop $ ssh 12345678@console.dc0.gpaas.net 12345678@console.dc0.gpaas.net's password: Asking for console, please wait Connected Grabbing terminal Ok Si vous avez installé [[https://github.com/Gandi/gandi.cli | Gandi CLI]], vous pouvez utiliser la commande suivante : $ gandi paas console {nom de l'instance} Une fois connecté à l'instance, accédez au répertoire ''htdocs'' du VHOST où vous avez placé le fichier contenant Magento Community Edition 2. Décompressez le fichier avec la commande ''tar'', puis supprimez le fichier. $ cd /srv/data/web/vhosts/store.example.com/htdocs $ tar xzf Magento-CE-2.0.7-2016-05-24-12-15-40.tar.gz $ rm Magento-CE-2.0.7-2016-05-24-12-15-40.tar.gz La décompression peut prendre plusieurs minutes. Une fois terminée, Magento 2 sera installé sur votre instance et vous pouvez passer à l'étape de configuration décrite dans la dernière section de cet article. ===== Méthode 2: utiliser Composer, git et SSH ===== Pour utiliser [[:tutorials:simple:php:composer | Composer sur Simple Hosting]], vous allez utiliser le déploiement avec git+SSH. **Nous vous recommandons d'installer [[https://github.com/Gandi/gandi.cli | Gandi CLI]]** pour vous faciliter la tâche: les commandes de Gandi CLI sont très simples à utiliser. Assurez-vous d'avoir les modules PHP suivants pour pouvoir faire l'installation locale de Magento (votre arbre git doit inclure le fichier ''composer.lock'' qui résulte d'une installation locale pour pouvoir lancer l'installation sur l'instance): # PHP5.6 php5 php5-gd php5-mcrypt php5-curl php5-intl php5-xsl # PHP7 php7.0 php7.0-gd php7.0-mcrypt php7.0-curl php7.0-intl php7.0-xsl Si vous n'avez pas encore installé Composer, vous pouvez [[:tutorials:simple:php:composer|suivre notre guide pour apprendre à installer et utiliser Composer]]. ==== Clonez le VHOST ==== Vous pouvez créer le répertoire local et y configurer le dépôt git de l'instance automatiquement en clonant le dépôt qui a été créé automatiquement lors de la création du VHOST. $ gandi paas clone magento2 --vhost store.example.com Le répertoire ''store.example.com'' sera automatiquement créé. Accédez-y pour suivre les étapes suivantes. cd store.example.com ==== Installez Magento avec Composer ==== Servez-vous de Composer pour créer un nouveau projet Magento à l'intérieur du répertoire ''htdocs''. $ php composer.phar create-project --repository-url=https://repo.magento.com/ magento/project-community-edition htdocs Ici, vous devrez vous identifier avec la "public key" (username) et la "private key" (password) obtenues lors de la création de votre Access Key sur le site de Magento. ==== Mettez à jour votre instance ==== Mettez à jour votre arbre git et poussez vos changements sur votre instance. $ git add . $ git commit -m 'Install Magento 2' $ git push gandi master $ gandi deploy Une fois le processus terminé, vous pourrez terminer la configuration de Magento directement dans votre navigateur. ===== Terminez l'installation de Magento 2 depuis votre navigateur ===== Une fois les fichiers placés sur votre instance, vous pourrez accéder à votre domaine depuis votre navigateur pour terminer l'installation de Magento 2. Par exemple: http://store.example.com ==== Désactiver ''always_populate_raw_post_data'' sur PHP 5.6 ==== Sur les instances PHP 5.6, vous devrez désactiver l'option de PHP ''always_populate_raw_post_data'', en lui attribuant la valeur ''-1'' (par défaut, elle est à ''0''). Cette option est dépréciée à partir de PHP 5.6 et n'existe plus dans PHP 7. Veuillez consulter la documentation officielle pour avoir plus d'informations. Un fichier ''php-custom.ini'' est disponible sur votre instance et vous pouvez le modifier à partir d'une interface web, via sFTP ou par la console SSH. Veuillez consulter notre [[simple:php:phpini#comment_modifier_son_phpini | guide sur la modification de php.ini]] pour en savoir plus. Via la console SSH, il vous suffit d'éxecuter la commande suivante puis d'attendre quelques minutes pour que le processus Apache soit redémarré automatiquement. hosting-user@magento2:~$ echo "always_populate_raw_post_data=-1" >> /srv/data/etc/php/php-custom.ini Vous pouvez aussi redémarrer votre instance manuellement depuis son interface d'administration sur le site de Gandi. Avec Gandi CLI, vous pouvez le faire avec la commande ''$ gandi paas restart {nom de l'instance}''. Voici à quoi doit ressembler le fichier ''php-custom.ini'' avec l'option ''always_populate_raw_post_data'' désactivée, comme requis par Magento 2 : ; You can not override all parameters. ; We keep the possibility to filter other parameters. ; Use this file with caution. ; ; Vous ne pouvez pas remplacer tous les paramètres. ; Nous gardons la possibilité de filtrer d'autres paramètres. ; Utilisez ce fichier avec précaution. always_populate_raw_post_data=-1 Maintenant votre instance PHP 5.6 est prête pour Magento 2, comme vous le confirmera le test d'environnement réalisé pendant le processus d'installation. ==== Configuration de la base de données ==== Il vous sera demandé d'insérer le nom d'utilisateur et de la base de données que vous souhaitez utiliser. Si vous n'en avez pas encore créé, vous pouvez le faire maintenant en suivant notre [[:simple:mysql | guide de gestion de bases de données MySQL]]. ==== Configuration de l'utilisateur admin ==== Vous pourrez aussi créer l'administrateur de la boutique en entrant un nom d'utilisateur, un email et un mot-de-passe. Assurez-vous d'utiliser un mot de passe robuste ! ===== Options avancées proposées sur Simple Hosting ===== Simple Hosting a une série de fonctionnalités qui se marient avec Magento pour obtenir un site rapide et robuste facilement : le support HTTPS, les tâches de fond avec Anacron, le cache Varnish et les Snapshots automatiques. ==== HTTPS ==== Vous pourrez activer HTTPS pour site Mangeto si vous avez une instance de taille M ou supérieure. Vous pouvez activer ces options pendant l'installation à n'importe quel moment depuis l'admin. Pour activer SSL sur le VHOST de votre site Magento 2, il vous suffit d'y ajouter un certificat obtenu chez Gandi ou un autre prestataire. Vous pouvez en savoir plus sur notre guide d'[[:simple:ssl | utilisation de SSL sur Simple Hosting]]. Avec HTTPS, vos utilisateurs seront protégés et votre site aura une meilleure visibilité. ==== Options de PHP (php.ini) ==== Magento 2 fournit un exemple de fichier php.ini (''php.ini.sample'') qui recommande certains paramètres PHP pour un usage en production. Nous vous recommandons de modifier le fichier ''php-custom.ini'' de votre instance et d'y ajouter les valeurs suivantes : session.save_path="/srv/data/var/php/www" display_errors=Off La première option vous sera utile pour l'execution de certaines commandes CLI de Magento, notamment. Puis le fait de cacher les erreurs évitera de montrer des informations potentiellement sensibles. Vous pouvez modifier le fichier ''php-custom.ini'' via une interface, sFTP ou la console SSH. Consultez notre guide sur la modification de php.ini pour en savoir plus. Dans la console SSH, par exemple, vous pouvez utiliser les commandes suivantes : $ echo 'session.save_path="/srv/data/var/php/www"' >> /srv/data/etc/php/php-custom.ini $ echo 'display_errors=Off' >> /srv/data/etc/php/php-custom.ini ==== Utilisation du CLI Magento ==== Magento 2 inclue une CLI (Command Line Interface, interface en ligne de commandes en anglais) que vous pouvez utiliser via [[::fr::simple::ssh|la console SSH de votre instance]]. La CLI Magento 2 vous permet d'effectuer de nombreuses tâches de maintenance, comme ré-indexer le cache, lancer les tâches cron, gérer et restaurer les sauvegardes, etc. Connectez-vous à votre instance par SSH, accédez au répertoire de votre site et utilisez la commande suivante pour lister toutes les tâches disponibles: $ cd /srv/data/web/vhosts/store.example.com/htdocs $ php bin/magento list Certaines commandes pourront avoir besoin de paramètres php spécifiques pour l'utilisation de PHP par le CLI. C'est le cas par exemple de la commande ''setup:backup'', qui sert à générer des sauvegardes à la demande. Cette commande a besoin d'utiliser un chemin accessible en écriture pour la sauvegarde de sessions PHP. Puisque ce n'est pas une pratique commune à de nombreuses applications PHP, vous devez paramétrer l'option ''session.save_path'' manuellement. Autrement, vous obtiendriez une erreur de permission . Si vous avez modifié le fichier ''php-custom.ini'' comme recommandé dans la section "Options de PHP (php.ini)", vous pouvez utiliser la commande suivante pour vous en servir lors de l'exécution de commandes CLI qui en auraient besoin : $ php -c "/srv/data/etc/php/php-custom.ini" bin/magento setup:backup --db Pour définir une option temporairement à la volée, utilisez ''php -d "option=valeur"''. Par exemple : $ php -d "session.save_path=/srv/data/var/php/www" bin/magento setup:backup --db Vous pouvez également ajouter le répertoire ''bin'' de Magento 2 à votre PATH et accéder au CLI en utilisant la commande ''magento'' lorsque vous êtes connectés à la console SSH. $ chmod +x /srv/data/web/vhosts/store.example.com/htdocs/bin/magento $ echo 'export PATH=$PATH:/srv/data/web/vhosts/store.example.com/htdocs/bin' >> /srv/data/etc/bash/bashrc $ source /srv/data/etc/bash/bashrc $ magento list Autrement, ou en plus, vous pouvez utiliser par défaut les options PHP personnalisées avec un ''alias''. Par exemple : $ ini_path=/srv/data/etc/php/php-custom.ini $ cli_path=/srv/data/web/vhosts/store.example.com/htdocs/bin/magento $ echo "alias mage='php -c $ini_path $cli_path'" >> /srv/data/etc/bash/bashrc $ source /srv/data/etc/bash/bashrc $ mage list Cette technique fonctionne également avec l'option ''-d'' décrite plus haut. ==== Cron et tâches de fond avec Anacron ==== Vous pouvez éxecuter des scripts en tâche de fond pour maintenir Magento 2 à jour: reconstruire des index de base de données, envoyer des emails, télécharger des mises-à-jour automatiques... Dans l'interface d'admin de votre site Magento, rendez-vous sur "Stores > Configuration > Advanced > System > Cron Scheduled Tasks". Nous recommandons de commencer avec la configuration suivante : Cron configuration for group: index Generate Schedules Every: 60 Schedule Ahead for: 60 Missed if Not Run Within: 180 History Cleanup Every: 600 Success History Lifetime: 600 Failure History Lifetime: 600 Use Separate Process: Yes Cron configuration for group: default Generate Schedules Every: 60 Schedule Ahead for: 60 Missed if Not Run Within: 180 History Cleanup Every: 600 Success History Lifetime: 600 Failure History Lifetime: 600 Use Separate Process: No Ensuite, configurez [[::simple::anacron|Anacron]] pour programmer l'éxécution automatique de ces tâches toutes les heures. Via la console SSH, modifiez le fichier ''/srv/data/etc/cron/anacrontab'' (avec vi, vim ou nano) et ajoutez-y les informations suivantes (remplacez toutes les mentions à "store.example.com" par le nom du VHOST correct) : MAGE_WWW=/srv/data/web/vhosts/store.example.com/htdocs PHP_OPT="-d session.save_path=/srv/data/var/php/www" # si vous avez modifié le fichier php-custom.ini, utilisez plutôt la ligne ci-dessous # PHP_OPT="-c /srv/data/etc/php/php-custom.ini" @hourly 0 mage.cron php $PHP_OPT $MAGE_WWW/bin/magento cron:run >> $MAGE_WWW/var/log/magento.cron.log @hourly 0 mage.update.cron php $PHP_OPT $MAGE_WWW/update/cron.php >> $MAGE_WWW/var/log/update.cron.log @hourly 0 mage.setup.cron php $PHP_OPT $MAGE_WWW/bin/magento setup:cron:run >> $MAGE_WWW/var/log/setup.cron.log Avec ces définitions, Anacron exécutera ses tâches de routine toutes les heures, l'interval de temps le plus court supporté par Anacron. Vous pouvez effectuer cette configuration par sFTP ou via la console SSH. Consultez notre [[:simple:anacron|guide d'utilisation d'Anacron]] pour en savoir plus. Pour exécuter des tâches de fond plus fréquemment, vous pourrez utiliser un service externe qui appelle le fichier ''pub/cron.php'' depuis l'extérieur. Si vous optez pour cette méthode, nous vous recommandons de sécuriser l'accès à ce fichier. Pour sécuriser l'accès à ''cron.php'' depuis le web, commencez par stocker un mot-de-passe sécurisé pour l'utilisateur ''hosting-user''. Utilisez pour cela l'outil ''htpasswd'' et utilisez, par exemple, le chemin suivant ''/srv/data/home/.magento.cron.auth'' pour garder le fichier : $ htpasswd -c /srv/data/home/.magento.cron.auth hosting-user > Password: > Confirm password: Ensuite, modifiez le fichier ''/srv/data/web/vhosts/store.example.com/htdocs/pub/.htaccess''. Localisez et supprimez les lignes suivantes : ## Deny access to cron.php order allow,deny deny from all Et remplacez-les par ces instructions : AuthType Basic AuthName "Cron Authentication" AuthUserFile /srv/data/home/.magento.cron.auth Require valid-user Vous pouvez maintenant accéder à http://store.example.com/pub/cron.php et vous identfier avec le nom d'utilisateur et le mot de passe créés plus haut. Avec curl, par exemple : $ curl --user hosting-user:{mot-de-passe} http://store.example.com/pub/cron.php?group=default ==== Cache Varnish ==== Magento 2 recommande l'utilisation du logiciel de caching Varnish pour son utilisation en production. La plateforme Simple Hosting vous offre un système de cache Varnish adapté, le [[:simple:cache|Web Accelerator]], que vous pouvez utiliser nativement avec Magento 2. Dans l'interface d'admin de votre site Magento, naviguez vers "Stores > Configuration > Advanced > System > Full Page Cache". Sélectionnez "Varnish Caching" dans le champs "Caching Application", puis définissez le temps de vie (TTL) du cache, en secondes. Magento utilise 86400 secondes (24 heures) par défaut. Sauvegardez votre changement et désormais votre site Mangento 2 n'utilisera plus le CPU, RAM et stockage de votre instance pour gérer son système de cache. C'est au Web Accelerator de s'en charger. En fait, il s'en chargeait déjà par défaut mais votre boutique ne le savait pas encore et générait son propre cache en plus, pour rien. Vous pouvez consulter la documentation du système de cache du Web Accelerator pour en savoir plus. Sachez aussi que vous pouvez "purger" (vider) le cache depuis le panneau de contrôle de votre instance. ==== Snapshots et backups automatiques ==== Magento 2 offre plusieurs options pour effectuer des sauvegardes automatiques de votre site. Sur Simple Hosting, les [[:simple:snapshots | snapshots automatiques]] s'occupent déjà de sauvegarder vos fichiers (à condition que vous ayez souscrit à cette option) et vous permet de restaurer votre instance à un état précédent en un click, à l'exception de la base de données. A partir du moment où vous utilisez les Snapshots de Simple Hosting, il vous suffit donc d'activer le backup automatique de la base de données dans Magento pour que tout votre site soit bien sauvegardé. Pour activer le backup automatique de la base de données, rendez-vous dans l'interface d'admin de votre site Magento puis naviguez vers "Stores > Configuration > Advanced > System > Scheduled Backup Settings". Dans cette action, sélectionnez "Yes" pour "Enable Scheduled Backup" puis "Database" pour "Backup Type". Ajustez les autres préférences si nécessaire (les options par défaut peuvent être suffisantes), puis sauvegardez. Si jamais vous devez vous servir de vos sauvegardes, vous pourrez [[fr:simple:snapshot|restaurer un Snapshot]] depuis l'interface de gestion de votre instance. Ensuite, recréez votre base de données et l'utilisateur en utilisant les mêmes données qu'avant, puis ré-importez la base de données avec le CLI de Magento 2. Connectez-vous à votre instance via la console SSH, identifiez la dernière sauvegarde de la base de données et faites le "rollback" pour restaurer les contenus de la base de données: $ cd /srv/data/web/vhosts/store.example.com/htdocs $ php bin/magento info:backups:list $ php bin/magento setup:rollback -d "1440611839_db.tgz" Une section dédiée à l'utilisation du CLI de Magento 2 est disponible plus haut.