Installer Magento 2.1 Community Edition sur Debian 8 Jessie



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.

Ecran de l'Outil de configuration des paquets MySQL-apt-config

Pour valider les options définies, sélectionner Apply, puis appuyer sur Entrée pour valider les paramètres choisis.

Outil de configuration des paquets MySQL-apt-config (suite)

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 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 !

Magento 2.1 Setup screen
Magento 2.1 Setup screen

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 :

Magento 2.1 setup screen 2
Magento 2.1 setup screen 2

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

Magento 2.1 setup : Database screen

Écran 4 : Configuration Web

Magento 2.1 setup Web configuration
Magento 2.1 setup Web configuration

Écran 5 : Personnalisation du magasin en ligne

Magento 2.1 setup Personnalisation du magasin

Magento 2.1 setup : Personnalisation du magasin

Écran 6 : Création du compte Administrateur

Magento 2.1 setup : Create Admin Account
Magento 2.1 setup : Create Admin Account

Écran 7 : Lancement de l’installation

Magento 2.1 setup : Lancement de l'installation
Magento 2.1 setup : 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 !

Ces articles peuvent peut-être vous intéresser



Retour