
Magento est une plateforme de commerce électronique Open Source, créée en Mars 2008. Magento repose sur le Framework Zend. Plus de 250 000 commerçants dans le monde utilisent la plate-forme Magento Commerce, qui représente environ 30 % de la part de marché totale.
Pour php7.2 sur Ubuntu, Magento requiert en particulier les extensions bcmath, bcmath, calendar, Core, ctype, curl, date, dom, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, intl, json, libxml, mbstring, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_mysql, Phar, readline, Reflection, session, SimpleXML, soap, sockets, SPL, standard, tokenizer, wddx, xml, xmlreader, xmlwriter, xsl, Zend OPcache, zip, zlib.
Pour verifier cela, on tape $ php -me . On ajoute les extensions maquantes, par exemple pour soap :
1 |
$ sudo apt-get install php7.2-soap |
Configuration PHP
Le paramètre date.timezone de /etc/php/7.2/fpm/php.ini et /etc/php/7.2/cli/php.ini doit être défini. Si la ligne est commentée, on la décommente et on ajoute le fuseau horaire, par exemple Europe/Paris.
- fpm: FastCGI Process Manager, pour exécuter php depuis une page web,
- cli : Command Line Interface, pour exécuter php depuis le serveur.
On règle la limite de mémoire PHP. Les recommandations sont :
- Compilation de code, génération des assets, 756M
- Installation et mise à jour de composants Magento depuis le Marketplace, 2G
- Pour les tests, ~3-4G
On active PHP OpCache et opcache.save_comments, activés par défaut pour php7.2.
On règle un pool php-fpm en ajoutant les paramètres suivants :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[magento-dev] user = www-data group = www-data listen = /var/run/php/php7.2-fpm-magento.sock listen.owner = www-data listen.group = www-data pm = dynamic pm.max_children = 15 pm.start_servers = 5 pm.min_spare_servers = 1 pm.max_spare_servers = 5 php_flag[display_errors] = on php_flag[display_startup_errors] = on php_admin_value[max_execution_time] = 600 php_admin_value[upload_max_filesize] = 10M php_admin_value[post_max_size] = 12M php_admin_value[memory_limit] = 1G |
Magento authentification key
Pour installer Magento via Composer, on doit obtenir des clés d’authentification. On se connecte au Magento Marketplace, on s’enregistre si ce n’est déjà fait, et on choisit My Profile. On clique sur Access Keys, et l’on crée de nouvelles clés, en enregistrant un nom pour les clés. Les clés générées sont associés à votre compte Magento.
Installation
On crée un répertoire racine pour Magento, et dans ce répertoire $ cd <root-folder> , on exécute :
1 |
$ composer create-project --repository=https://repo.magento.com/ magento/project-community-edition . |
Pour la suite, mon répertoire racine est /var/www/Magento, avec les droits pour www-data:www-data.
Si l’on veut la version Magento Entreprise, on change project-community-edition par project-enterprise-edition. Il faudra alors des clés d’authentification que l’on peut obtenir sur Magento Marketplace.
Régler les permissions des fichiers
1 2 3 4 |
$ find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} + $ find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} + $ chown -R :www-data . $ chmod u+x bin/magento |
Configuration Nginx
Magento possède un fichier de configuration dans le répertoire racine nginx.conf.sample, il suffit alors de l’inclure dans la configuration Nginx dans sites-available.
1 2 |
$ cd /etc/nginx/sites-available $ sudo vim Magento |
/etc/nginx/sites-available/Magento
1 2 3 4 5 6 7 8 9 10 11 12 |
upstream fastcgi_backend { # backend process address server unix:/var/run/php/php7.2-fpm-magento.sock; } server { listen 80; server_name magento.domain.tld; set $MAGE_ROOT /var/www/Magento; set $MAGE_DEBUG_SHOW_ARGS 1; include /var/www/Magento/nginx.conf.sample; } |
On crée le lien symbolique dans sites-enabled, on teste la config et on relance Nginx.
1 2 3 4 5 6 |
$ cd /etc/nginx/sites-enabled $ sudo ln -sf /etc/nginx/sites-available/Magento Magento $ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful $ sudo systemctl restart nginx |
On lance l’install en se rendant à l’adresse http://magento.domain.tld. Si tout se passe bien, on obtient l’écran Success à la fin de l’install.

Réglages
On se connecte à l’administration en cliquant sur le lien. On peut voir alors :
One or more indexers are invalid. Make sure your Magento cron job is running.
On exécute alors la commande suivante pour les indexers :
1 |
/var/www/Magento$ php bin/magento indexer:reindex |
One or more of the Cache Types are invalidated: Page Cache. Please go to Cache Management and refresh cache types.
- On va à System > Cache Management,
- On clique sur Flush Magento Cache,
- Puis sur Flush Cache Storage.
Magento cron job
On peut lancer manuellement les taches cron à exécuter, pour tester :
1 2 3 |
/var/www/Magento$ /usr/bin/php /var/www/Magento/bin/magento cron:run | grep -v "Ran jobs by schedule /var/www/Magento$ /usr/bin/php /var/www/Magento//update/cron.php /var/www/Magento$ /usr/bin/php /var/www/Magento/bin/magento setup:cron:run |
Magento préconise d’exécuter les commandes toutes les minutes, les taches commenceront avec * * * * *. Sur mon petit serveur 4G de mémoire RAM, je choisis de les exécuter 2 fois par jour, donc 30 00,12 * * * : à 0h30 et 12h30 tous les jours.
On installe les taches CRON pour Magento, on peut utiliser la commande suivante pour l’utilisateur www-data :
1 2 |
/var/www/Magento$ sudo -u www-data php /var/www/Magento/bin/magento cron:install Crontab has been generated and saved |
Sinon, plus manuellement :
1 |
/var/www/Magento$ sudo crontab -u www-data -e |
1 2 3 4 5 |
#~ MAGENTO START manually defined 30 00,12 * * * /usr/bin/php /var/www/Magento/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/Magento/var/log/magento.cron.log 30 00,12 * * * /usr/bin/php /var/www/Magento/update/cron.php >> /var/www/Magento/var/log/update.cron.log 30 00,12 * * * /usr/bin/php /var/www/Magento/bin/magento setup:cron:run >> /var/www/Magento/var/log/setup.cron.log #~ MAGENTO END |
Sample data installation
Si l’on veut tester avec des données, on installe les samples :
1 |
/var/www/Magento$ php bin/magento sampledata:deploy |
Magento-2-blog installation (mageplaza)
Magento 2 Blog de Mageplaza est un module de blog intégré dans le backend de Magento. On peut gérer le blog et la boutique e-commerce au même endroit.
1 2 3 |
/var/www/Magento$ composer require mageplaza/magento-2-blog-extension /var/www/Magento$ bin/magento setup:upgrade /var/www/Magento$ bin/magento setup:static-content:deploy |
Si le cron est réglé pour être lancé toutes les minutes, mon petit serveur reste bloqué sur la première commande : Problème de mémoire pour Composer sur un serveur de RAM 4G. Avec 16G, cela doit mieux se passer, en limitant la mémoire de php-cli à 4G.
Bon, Magento réclame quand même pas de ressources. La mise en cache, et en statique pour la production doit améliorer les choses, mais cela rame vraiment par rapport à PrestaShop. Je choisis donc pour le moment la seconde solution.
Et hop, Magento est installé.