Pré-requis
Afin de mettre en place un site Web boutique en ligne, voici un petit tutoriel qui permet d’installer Magento 2.1 Community Edition sur Debian 8 Jessie.
Configuration du fichier hosts de la machine utilisateur
Pour la machine Utilisateur (il ne s’agit pas du serveur sur lequel on veut installer Magento, mais de votre PC), éditer le fichier hosts de votre machine.
Nous allons indiquer à l’ordinateur de se connecter à l’IP indiquée, lorsqu’on utilisera l’URL de notre magasin en ligne Magento de test.
Cette manipulation permet de simuler un hébergement avec une adresse web inventée, ou future. En gros, lorsque vous saisirez dans votre navigateur web, l’adresse URI « http://monmagasinenligne.fr », votre ordinateur ira consulter son propre fichier hosts et verra qu’il faut se connecter à l’adresse IP que vous lui aurez indiqué (dans cet article : 10.0.0.155).
Ceci nous permet de faire l’installation sans se soucier de l’adresse IP du futur serveur d’hébergement, et donc, d’assurer une migration – du test à la prod – bien plus facile, sans avoir à aller bidouiller dans la base de données pour changer toutes les URL de référence, au risque de rendre le site instable.
nano /etc/hosts
Si votre poste de travail est sous windows, vous trouverez ce fichier au chemin suivant :
C:\Windows\system32\drivers\etc\hosts
Editer ce fichier avec les droits administrateur et y ajouter la ligne suivante :
# <ipdemonserveurdetest> <urldemonfuturmagasinenligne> 10.0.0.155 www.monmagasinenligne.fr
- Ctrl + [X] pour valider les modifications
PS : Pensez à enlever cette ligne de votre fichier hosts, une fois votre site migré en production !
Installation du serveur
Avant de commencer l’installation de Magento, il nous faut une configuration serveur web de base, que nous pouvons paramétrer à l’aide du lien suivant (ouvre un nouvel onglet) :
Une fois l’installation effectuée (ou du moins, le prérequis vérifié), on peut passer à l’installation de MySQL. Attention ! Magento demande la version 5.6 de MySQL!
Voici la procédure à suivre :
Installation de MySQL 5.6
Debian 8 Jessie fournit la bonne version de PHP avec apt-get, mais pas la bonne version de MySQL qui est 5.5. Or, elle n’est pas compatible avec la version 2.1 de Magento, qui demande la version 5.6 minimum.
Sur le serveur, avant toute installation de paquet mysql avec apt-get, je vous conseille donc de commencer par ceci : Le site de MySQL.com fournit de quoi paramétrer automatiquement les bons repositories dans le sources.list,, en fonction de la version MySQL désirée. (http://dev.mysql.com/downloads/repo/apt/)
Depuis le serveur, nous allons saisir les lignes suivantes pour télécharger et installer ce paquet :
cd /home wget http://dev.mysql.com/get/mysql-apt-config_0.6.0-1_all.deb apt-get install lsb-release dpkg -i mysql-apt-config_0.6.0-1_all.deb
Dans l’écran ci-dessous, on choisit ici la version de MySQL qui nous interresse :
En appuyant sur Entrée, nous avons le choix entre mysql-5.6 et mysql-5.7. Nous sélectionnons la version 5.7.
Pour valider les options définies, sélectionner Apply, puis appuyer sur Entrée pour valider les paramètres choisis.
En gros, cet utilitaire va sélectionner les bons repositories à insérer dans /etc/apt/sources.list, en fonction des options que vous aurez choisi.
Faire ensuite une mise à jour des paquets avec :
apt-get update apt-get upgrade
apt-get install mysql-server mysql-client
Installation du serveur Web LAMP
- Installation des paquets pour le Web (Pour Apache, PHP, et PhpMyAdmin seulement !)
- Installation des paquets pour le FTP
- Configuration de Exim4 pour l’envoi de mails
- Activer la prise en compte du fichier htaccess
- Personnaliser le fichier php.ini
Installation des paquets supplémentaires
apt-get install php5-mcrypt libphp5-embed php5-xsl php5-xcache php5-curl php5-xsl
Paramétrage de Apache
Activer le protocole HTTPS
Cette section vous sera utile si vous choisissez d’héberger votre Front-end en https:// . Cette option vous sera proposée à la fin de l’installation de Magento.
apt-get install openssl
openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/myserver.crt -keyout /etc/ssl/private/myserver.key
chmod 440 /etc/ssl/private/myserver.key
a2enmod ssl
Ensuite, éditer la configuration Apache :
cd /etc/apache2/conf-available
Copier le fichier other-vhosts-access-log.conf dans le répertoire /etc/apache2/sites-enabled
cp /etc/apache2/conf-available/other-vhosts-access-log.conf /etc/apache2/sites-enabled/
Editer ensuite ce fichier et indiquer ce qui suit (Remplacer bien sûr les variables avec vos libellé de serveur !
Votre navigateur affichera un certificat périmé si vous avez suivi cette procédure (auto-signé), donc il vous préviendra que le certificat n’est pas valide lorsque vous taperez l’URI avec le https://…. , mais pour une installation de test, ça fonctionne quand même …)
<VirtualHost *:443> DocumentRoot /var/www/html ServerName monmagasin.fr ServerSignature Off ErrorLog ${APACHE_LOG_DIR}/error_myserverssl.log LogLevel info CustomLog ${APACHE_LOG_DIR}/access_myserverssl.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/myserver.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key </VirtualHost>
/etc/init.d/apache2 reload
Activer le module rewrite
a2enmod rewrite service apache2 restart
Modification de php.ini
nano /etc/php5/apache2/php.ini
short_open_tag = Off always_populate_raw_post_data = -1 asp_tags = Off ;Configurer opcache pour Magento 2.1 ou supérieur : opcache.save_comments=1 memory_limit = 2G ; si marketplace ou upgrade de Magento prévus. ;sinon mettre memory_limit = 728M max_execution_time = 18000 session.auto_start = Off zlib.output_compression = On suhosin.session.cryptua = off Ajouter LA ligne suivante à la main, dans la session "dynamic extensions" extension=mcrypt.so display_errors = Off
- Enregistrer les modifications, puis redémarrer Apache
service apache2 restart
Préparer la base de données sur le serveur
- Se connecter à l’url du PhpMyAdmin du serveur Magento :
Phpmyadmin sera installé pour l’installation ou en test ! Ne pas le laisser accessible en PROD : cela constitue une faille importante de sécurité.
http://www.monmagasinenligne.fr/phpmyadmin
- Aller dans l’onglet « Privilèges«
- Cliquer sur « Ajouter un utilisateur«
- Remplir les informations nécessaires à la création de l’utilisateur et de la base de données :
Paragraphe « Information pour la connexion »
- Nom d’utilisateur : le nom de votre base de données (ex : Monmagasin)
- Client : L’endroit où est hébergé la base de données, soit : localhost (dans notre cas)
- Mot de passe : de préférence, choisissez-en un … compliqué à deviner !
Paragraphe « Base de données pour cet utilisateur »
- Cocher «
Paragraphe « Privilèges globaux »
- Ne rien toucher
Enfin, cliquer sur « Créer un compte d’utilisateur » .
Sécurité :
- Une fois la configuration du serveur terminée, nous protégerons l’accès au phpmyadmin en paramétrant Apache, en autorisant uniquement les adresses IP du réseau local, par exemple.
Téléchargement du fichier depuis le site Web de Magento
On y est !
Je vous invite à vous rendre sur cette page pour télécharger la version que vous désirez. Il faudra que vous laissiez un email valide, et que vous complétiez une phase d’inscription avant de pouvoir télécharger la Community Edition :
https://magento.com/tech-resources/download
- Copier le contenu du dossier Magento dézippé sur le FTP du serveur Web grâce à un client FTP comme Filezilla.
Modifications des droits sur les dossiers et fichiers du serveur
On ouvre une session ssh sur le serveur, puis :
cd /var/www/html find var vendor pub/static pub/media app/etc -type f -exec chmod u+w {} \; find var vendor pub/static pub/media app/etc -type d -exec chmod u+w {} \; chmod u+x bin/magento
Installation de Magento
Installation en ligne de commande
cd /var/www/html/bin ./magento
Une liste apparaît : il s’agit du manuel d’utilisation de la commande magento.
Pour voir la liste des commandes à notre disposition, nous allons exécuter
./magento setup:install
Vous devrez avoir un message d’erreur vous indiquant que la commande est incomplète. Avec ce message d’erreur, vous avez un exemple des informations à fournir pour effectuer l’installation :
setup:install [--backend-frontname="..."] [--key="..."] [--session-save="..."] [--definition-format="..."] [--db-host="..."] [--db-name="..."] [--db-user="..."] [--db-engine="..."] [--db-password="..."] [--db-prefix="..."] [--db-model="..."] [--db-init-statements="..."] [-s|--skip-db-validation] [--http-cache-hosts="..."] [--base-url="..."] [--language="..."] [--timezone="..."] [--currency="..."] [--use-rewrites="..."] [--use-secure="..."] [--base-url-secure="..."] [--use-secure-admin="..."] [--admin-use-security-key="..."] [--admin-user="..."] [--admin-password="..."] [--admin-email="..."] [--admin-firstname="..."] [--admin-lastname="..."] [--cleanup-database] [--sales-order-increment-prefix="..."] [--use-sample-data] [--magento-init-params="..."]
Je vous laisse renseigner chacune des valeurs demandées. Sinon, on peut aussi effectuer l’installation en mode graphique …
perso, quand j’ai vu le format de la ligne de commande, j’ai euh … eu une crise de fainéantise, et je suis passé en mode graphique ! 🙂 je sais, c’est mal … mais c’est quand même bien !
Installation en mode graphique
Du fait qu’on a bien modifié le fichier hosts de notre poste de travail (et non le serveur), on peut y accéder depuis le navigateur web en tapant l’URI suivante :
http://www.monmagasinenligne.fr/setup
Écran 1 : Ce bel écran devrait apparaître !
Il vous suffit ensuite de suivre les étapes d’installation décrites dans chaque écran !
Écran 2 : Vérification de la configuration serveur
Si des paquets sont manquants, ou un paramétrage est nécessaire, alors vous verrez les indications apparaître ici :
Dans le cas de l’écran ci-dessus, l’installateur nous demande d’attribuer des droits d’écriture pour tout le monde sur les dossiers suivants :
# On se place dans le bon répertoire : cd /var/www/html # On modifie les droits d'accès : chmod -R 777 app/etc/ chmod -R 777 var/ chmod -R 777 pub/media/ chmod -R 777 pub/static/
Écran 3 : Base de données
Renseigner les paramètres que vous avez créé précédemment
Écran 4 : Configuration Web
Écran 5 : Personnalisation du magasin en ligne
Écran 6 : Création du compte Administrateur
Écran 7 : Lancement de l’installation
A la fin de l’installation, un compte rendu est affiché.
Il faudra garder ces informations précieusement !
Les manipulations POST-Installation
Ah! Parce que vous pensiez que c’était fini ?!? ah ah ah ! et bah non.
Vous êtes en train d’installer Magento, j’vous rappelle ! :-p
Sécuriser l’installation
Retirer les droits en écriture sur
chmod -R 755 /var/www/html/app/etc
Retirer l’accès au phpmyadmin
Comme nous l’évoquions plus haut, laisser accessible PhpMyAdmin sur un site en production, constitue une faille considérable de sécurité.
Nous pouvons paramétrer Apache pour que l’URL http://www.monmagasinenligne.fr/phpmyadmin renvoie vers une erreur 403, ou 404. Mais ceci fera l’objet d’un prochain article !
Fonctionnement de Magento
Activer les tâches cron sur le serveur
Afin d’indexer correctement le site, Magento utilise des tâches cron (tâches planifiées) pour maintenir à jour ses index. Il faut ajouter les lignes qui exécuteront ces mises à jour.
La page documentation du site Magento
# Affiche le chemin des fichiers "binaries" de php which php
- Noter le chemin d’installation des « binaries » de php (quelquechose comme /usr/bin/php
- Editer ensuite Crontab avec l’utilisateur Magento (ici, webmaster)
crontab -u webmaster -e
Nous allons ajouter sous la forme suivante les tâches planifiées pour Magento :
* * * * * <path to php binary> <magento install dir>/bin/magento cron:run | grep -v "Ran jobs by schedule" >> <magento install dir>/var/log/magento.cron.log
* * * * * <path to php binary> <magento install dir>/update/cron.php >> <magento install dir>/var/log/update.cron.log
* * * * * <path to php binary> <magento install dir>/bin/magento setup:cron:run >> <magento install dir>/var/log/setup.cron.log
Ce qui donne pour notre installation quelque chose comme cela :
* * * * * /usr/bin/php /var/www/html/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/html/var/log/magento.cron.log
* * * * * /usr/bin/php /var/www/html/update/cron.php >> /var/www/html/var/log/update.cron.log
* * * * * /usr/bin/php /var/www/html/bin/magento setup:cron:run >> /var/www/html/var/log/setup.cron.log
Redémarrer le service cron pour la prise en compte de ces nouveaux paramètres :
/etc/init.d/cron restart
Bonne vente !