Installation d’Akeneo PIM 6.0 – OVH Kimsufi – Ubuntu 20.04
Ce tutoriel est plus au moins une traduction de la documentation officielle d’installation d’Akeneo PIM 6.0 sous Ubuntu 20.04 avec quelques petits ajouts. J’ai choisi la méthode manuelle.
Pour l’installation de ce logiciel, j’ai décidé de prendre un petit serveur dédié avec Ubuntu 20.04.
J’ai reçu beaucoup de messages me demandant ce que je pensais d’Akeneo PIM après deux ans d’utilisation. Pour moi, ce type de logiciel est indispensable si vous avez beaucoup de produit et beaucoup de canaux de ventes. Particulièrement si votre catalogue est complexe, avec beaucoup d’attributs de tout type (couleur, taille, id_prestashop, Amazon ASIN, EAN13, Images …). C’est dommage que Odoo n’intègre pas de PIM digne de ce nom, mais la particularité d’Akeneo PIM est la facilité de travailler avec les imports/exports CSV et XLSX et Excel. En combinant le PIM, Excel et les macros et un ERP comme Odoo, vous n’aurez plus aucun problème pour gérer l’écosystème de votre entreprise. Vous gagnerez beaucoup de temps pour remplir les bases de données de votre Prestashop, Magento, Amazon Seller ou même réaliser des catalogues classiques. Des connecteurs entre les différents outils existent. Je ne les ai pas testés, mais j’essayerai de le faire prochainement.
Installation des prérequis
Prenez soin de vous logger avec l’utilisateur 1000 (ubuntu dans le cas d’un serveur OVH sous cette distribution).
MySQL 8.0
1 2 3 4 |
sudo wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb sudo apt-get update <span class="token command">sudo</span><span> apt-get install mysql-server</span> |
Lors de l’installation de MySQL 8.0, vous devrez choisir la méthode d’authentification. Sélectionnez Use Legacy Authentication Method. L’autre méthode Strong Password Encryption n’est pas pris en charge par Akeneo PIM.
On vérifie l’état du système.
1 |
sudo systemctl status mysql |
La sortie devrait ressembler à quelque chose comme ci-dessous, montrant que le service Odoo est actif et en cours d’exécution :
1 2 3 |
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-05-16 18:30:38 UTC; 2min 20s ago |
PHP 8.0
L’installation de PHP et de ses extensions.
1 2 3 |
sudo apt-get install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update |
1 |
sudo apt-get install php8.0-cli php8.0-apcu php8.0-bcmath php8.0-curl php8.0-opcache php8.0-fpm php8.0-gd php8.0-intl php8.0-memcached php8.0-mysql php8.0-xml php8.0-zip php8.0-mbstring php8.0-imagick |
Si vous avez un problème parce que vous avez des locales non UTF-8 :
1 2 |
LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php apt update |
Composer v2
Installation par le script automatique
1 2 3 4 |
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" |
1 |
sudo mv composer.phar /usr/local/bin/composer |
Les détails de cette installation peuvent être consultés sur la documentation de Composer.
Installation par apt (non-recommandé)
Il est possible de l’installer par les paquets d’Ubuntu.
1 |
sudo apt install composer |
Parfois, c’est la version 1 qui s’installe par les paquets et ceci entraîne des erreurs liées à l’attribution de la mémoire. Il faut alors lancer la commande :
1 |
sudo composer self-update --2 |
Si vous avez une erreur Command « self-update » is not defined., Il faut rajouter les paramètres –install-dir /usr/bin –filename composer au script d’installation fourni par la documentation de composer.
Elasticsearch 7.16
On installe la clé PGP et les paquets par le dépôt officiel.
1 2 3 4 5 6 7 |
sudo apt-get install apt-transport-https sudo su wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add - echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list exit sudo apt update && sudo apt-get install elasticsearch sudo service elasticsearch start |
La documentation d’Akeneo PIM indique qu’il est fortement conseillé d’augmenter la variable du noyau Linux MAX_MAP_COUNT. Voici comment la mettre à jour. La première commande sera effective sur la session en cours et la seconde pour chaque redémarrage du serveur.
1 2 3 4 5 |
sudo sysctl -w vm.max_map_count=262144 sudo su sudo echo "vm.max_map_count=262144" | tee /etc/sysctl.d/elasticsearch.conf exit sudo service elasticsearch restart |
Les détails de cette installation peuvent être consultés sur la documentation de Elasticsearch.
Apache2
1 2 3 |
sudo apt install apache2 -y && sudo a2enmod rewrite proxy_fcgi && sudo systemctl restart apache2 |
N’oubliez de désactiver php5 si vous importez une ancienne installation d’Apache avec mod_php :
1 |
sudo a2dismod php5 |
Configuration du système
MySQL
On crée les base de données nécessaire au bon fonctionnement du PIM. On nommera la base de donnée akeneo_pim.
1 2 3 4 5 |
sudo mysql -u root -p mysql> CREATE DATABASE akeneo_pim; mysql> CREATE USER akeneo_pim@localhost IDENTIFIED WITH mysql_native_password BY 'akeneo_pim'; mysql> GRANT ALL PRIVILEGES ON akeneo_pim.* TO akeneo_pim@localhost; mysql> EXIT; |
PHP
- On configure le fichier de configuration php-cli
1 |
sudo nano /etc/php/8.0/cli/php.ini |
Et on modifie les valeurs :
1 2 |
memory_limit = 1024M date.timezone = UTC |
Pour date.timezone, utilisez la bonne nomenclature disponible sur la documentation de PHP. Europe/Paris par exemple pour la France.
- De même pour le fichier de configuration php-fpm
1 |
sudo nano /etc/php/8.0/fpm/php.ini |
Et on modifie les valeurs :
1 2 |
memory_limit = 512M date.timezone = UTC |
Enfin, il faut configurer les utilisateurs php :
- On récupère les identifiant de l’utilisateur actuel :
1 2 |
id uid=1000(my_user), gid=1000(my_group), ... |
Dans cet exemple, les utilisateurs is my_user et le groupe est my_group.
- On arrête php-fpm
1 |
sudo service php8.0-fpm stop |
- On ouvre le fichier de la pool www de php-fpm
1 |
sudo nano /etc/php/8.0/fpm/pool.d/www.conf |
Et on modifie les valeurs :
1 2 3 4 5 |
user = my_user group = my_group listen = /run/php/php8.0-fpm.sock listen.owner = www-data listen.group = www-data |
- On redémarre php-fpm
1 |
sudo service php8.0-fpm restart |
Apache
Nous allons maintenant créer le virtual host pour Apache pour pointer le répertoire d’installation d’Akeneo PIM sur votre nom de domaine. Nous utiliserons les valeurs /home/pim-community-standard pour le répertoire d’installation et domain-name.com pour le nom de domaine. Si vous êtes en local, vous pouvez utiliser akeneo-pim.local comme nom de domaine.
1 |
sudo nano /etc/apache2/sites-available/akeneo-pim.conf |
Et on remplit le fichier :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<VirtualHost *:80> ServerName domain-name.com DocumentRoot /path/to/installation/pim-community-standard/public <Directory /path/to/installation/pim-community-standard/public> AllowOverride None Require all granted Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [QSA,L] </Directory> <Directory /path/to/installation/pim-community-standard/public/bundles> RewriteEngine Off </Directory> <FilesMatch \.php$> SetHandler "proxy:unix:/run/php/php8.0-fpm.sock|fcgi://localhost/" </FilesMatch> SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0 ErrorLog ${APACHE_LOG_DIR}/akeneo-pim_error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/akeneo-pim_access.log combined </VirtualHost> |
Et on active la configuration pour Apache :
1 2 3 |
sudo apache2ctl configtest && sudo a2ensite akeneo-pim && sudo systemctl reload apache2 |
On vérifie l’état du système
1 |
sudo systemctl status apache2 |
La sortie devrait ressembler à quelque chose comme ci-dessous :
1 2 3 |
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-05-16 19:47:09 UTC; 22min ago |
Puis on rajoute le virtual host :
1 |
sudo nano /etc/hosts |
1 |
127.0.0.1 domaine_name.com |
ou en local :
1 |
127.0.0.1 akeneo-pim.local |
Node 14
1 2 3 4 |
sudo apt install curl && curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh && sudo bash nodesource_setup.sh && sudo apt install -y nodejs |
Pour consulter la version de Node.js que vous venez d’installer, tapez la commande :
1 |
node -v |
Yarn
On se connecte en root
1 |
sudo su |
1 2 3 |
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && apt update && sudo apt install yarn |
Pour consulter la version de Node.js que vous venez d’installer, tapez la commande :
1 |
yarn -v |
On quitte root
1 |
exit |
Installation d’Akeneo PIM
Récupération des sources
Pour le répertoire d’installation, nous utiliserons /home/pim-community-standard. On peut installer Akeneo PIM avec composer en ayant installer le paquet correspondant :
1 2 3 4 |
sudo mkdir /srv/pim sudo chown ubuntu: -R /srv/pim cd /srv/pim sudo composer create-project akeneo/pim-community-standard /srv/pim "6.0.*@stable" |
Ou télécharger l’archive directement, cette archive est la version icecat, c’est à dire avec des données d’exemple :
1 2 3 4 5 6 |
sudo mkdir /srv/pim cd /srv/pim sudo wget https://download.akeneo.com/pim-community-standard-v6.0-latest-icecat.tar.gz && sudo tar -xvzf pim-community-standard-v6.0-latest-icecat.tar.gz -C . && sudo rm pim-community-standard-v6.0-latest-icecat.tar.gz && sudo chown ubuntu: -R /srv/pim |
Initialisation d’Akeneo PIM
On copie le fichier .env pour avoir le .env.local
1 |
cp .env .env.local |
Et on modifie les valeurs si dessous en prenant soin d’utiliser celles de votre base de donnée pour les variables APP_DATABASE. dans le fichier .env.local. Il ne sert à rien de modifier le fichier .env qui sera réinitialisé au moment du lancement de docker.
1 |
sudo nano /home/pim-community-standard/.env.local |
1 2 3 4 5 6 7 |
APP_ENV=prod APP_DATABASE_HOST=localhost APP_DATABASE_PORT=null APP_DATABASE_NAME=akeneo_pim APP_DATABASE_USER=akeneo_pim APP_DATABASE_PASSWORD=akeneo_pim APP_INDEX_HOSTS='localhost:9200' |
En effet, j’ai eu des erreurs de configurations lorsque je n’avais pas créé ce denier fichier. Le script d’installation ne pouvait pas créer la base de donnée.
1 2 |
Database does not exist yet Could not create database for connection named `akeneo_pim` |
C’est une erreur de configuration des variables d’environnement docker. Je ne suis pas un expert du domaine, mais idéalement il faudrait créer un environnement propre à l’installation.
Pour résoudre cela, prenez soin d’avoir les variables du .env.local suivantes :
1 2 |
APP_DATABASE_HOST=localhost APP_INDEX_HOSTS='localhost:9200' |
Lancement d’Akeneo PIM en mode production
Si vous n’avez pas installer make :
1 |
sudo apt install make |
Puis :
1 2 |
cd /home/pim-community-standard && NO_DOCKER=true make prod |
On crée l’utilisateur principal pour se connecter :
1 |
bin/console pim:user:create |
Ou plus rapidement :
1 |
bin/console pim:user:create admin admin votre@email.com Super Admin fr_FR --admin -n --env=prod |
Nous pouvons maintenant accéder à Akeneo PIM par l’url http://domain-name.com avec l’utilisateur que nous venons de créer.
Démarrage de Elasticsearch au boot
1 2 |
sudo systemctl daemon-reload && sudo systemctl enable elasticsearch.service |
Activation de SSL
1 2 3 4 5 |
sudo apt install snapd && sudo snap install core; sudo snap refresh core && sudo snap install --classic certbot && sudo ln -s /snap/bin/certbot /usr/bin/certbot && sudo certbot --apache |
Tâches CRON du PIM
Entrez dans le tableau des tâches automatisées de www-data :
1 |
sudo crontab -e -u www-data |
Et rajouter les valeurs fournies par la documentation d’Akeneo :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# Symfony console command | Crontab frequency | Human frequency 30 1 * * * php /home/pim-community-standard/bin/console pim:versioning:refresh 30 2 * * * php /home/pim-community-standard/bin/console pim:versioning:purge –more-than-days 90 1 * * * * php /home/pim-community-standard/bin/console akeneo:connectivity-audit:update-data 10 * * * * php /home/pim-community-standard/bin/console akeneo:connectivity-connection:purge-error 20 0 1 * * php /home/pim-community-standard/bin/console akeneo:batch:purge-job-execution 40 12 * * * php /home/pim-community-standard/bin/console akeneo:connectivity-audit:purge-error-count 30 4 * * * php /home/pim-community-standard/bin/console pim:volume:aggregate 15 0 * * * php /home/pim-community-standard/bin/console pim:data-quality-insights:schedule-periodic-tasks */10 * * * * php /home/pim-community-standard/bin/console pim:data-quality-insights:prepare-evaluations */30 * * * * php /home/pim-community-standard/bin/console pim:data-quality-insights:evaluations 0 */2 * * * php /home/pim-community-standard/bin/console akeneo:messenger:doctrine:purge-messages messenger_messages default 5 * * * * php /home/pim-community-standard/bin/console akeneo:connectivity-connection:purge-events-api-logs 0 0 * * 0 php /home/pim-community-standard/bin/console akeneo:connectivity-connection:openid-keys:create |
Installation de Supervisor
Petit paquet très utile puisqu’il permet d’exécuter automatiquement les tâches de mis à jour des données du PIM.
1 2 |
apt update apt install supervisor |
1 |
sudo nano /etc/supervisor/conf.d/akeneo_pim.conf |
Et remplir le fichier avec ces valeurs :
1 2 3 4 5 6 7 8 |
[program:akeneo_queue_daemon] command=/path/to/php /path/to/your/pim/bin/console messenger:consume ui_job import_export_job data_maintenance_job --env=prod -vv autostart=true autorestart=true stderr_logfile=/var/log/akeneo_daemon.err.log stdout_logfile=/var/log/akeneo_daemon.out.log user=my_user stopasgroup=true |
- Modifier la valeur des chemins de la deuxième ligne
- /path/to/php avec votre exécutable php
- /path/to/your/pim avec votre dossier PIM
- Modifier la valeur de my_user avec l’utilisateur qui utilise php-fpm (normalement, www-data)
1 2 |
touch /var/log/akeneo_daemon.err.log touch /var/log/akeneo_daemon.out.log |
1 2 3 |
sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start akeneo_queue_daemon |
Source : https://webkul.com/blog/process-control-in-akeneo/
Importation d’une version précédente
Les jobs
Pour importer les jobs (import/export) dune précédente versions, vous devrez importer la table SQL akeneo_batch_job_instance.
Les données
Très facile d’importer vos données à l’aide des outils natifs du pim 🙂
Erreurs Possibles
Erreur 500 sur une nouvelle installation
On attribue les droits www-data au répertoire du PIM
1 |
sudo chown www-data: -R /home/pim-community-standard |
Database does not exist yet
Dans le fichier :
1 |
sudo nano /home/pim-community-standard/.env.local |
Bien vérifier que cette variable a pour valeur localhost :
1 |
APP_DATABASE_HOST=localhost |
Si l’erreur « No alive nodes found in your cluster » pendant l’installation
Dans le fichier :
1 |
sudo nano /home/pim-community-standard/.env.local |
Bien vérifier que cette variable a pour valeur localhost:9200 :
1 |
APP_INDEX_HOSTS=localhost:9200 |
Script vendor/akeneo/pim-community-dev/std-build/install-required-files.sh handling the post-update-cmd event returned with error code 126
Exécuter la commande :
1 |
sudo chmod +x /home/pim-community-standard/vendor/akeneo/pim-community-dev/std-build/install-required-files.sh |
Si les importations et les exportations bloquent sur le status « Starting »
Voir le chapitre Installation de Supervisor
Que faire si Elasticsearch consomme trop de mémoire ?
Editez le fichier de configuration Java d’Elasticsearch :
1 |
sudo nano /etc/elasticsearch/jvm.options |
Et on ajoute les lignes ci-dessous pour attribuer 4GB en minimum et maximum :
1 2 |
-Xms4g -Xmx4g |
Vous pouvez conssulter le billet de blog de Ashnik qui discute de la manière d’optimiser la configuration d’Elasticsearch. Globalement, pour Elasticsearch, il est recommandé d’avoir 64GB de RAM et d’attribuer moins de 50% de la totalité de la mémoire disponible, c’est-à-dire 30GB environ. Mais pour des petites utilisations, 4GB est suffisant.
Si l’erreur « No alive nodes found in your cluster » est affichée après l’installation
Tester les commandes :
1 2 |
sudo service elasticsearch restart sudo service elasticsearch status |
Que faire si Elasticsearch ne se lance pas au démarrage du serveur
Ouvrir le fichier :
1 |
sudo nano /usr/lib/systemd/system/elasticsearch.service |
Editer la ligne ci-dessous dans le section [Service]:
1 |
TimeoutStartSec=300 |
Activer le service :
1 |
sudo /bin/systemctl enable elasticsearch.service |
Rédémarrer le service elasticsearch :
1 |
service elasticsearch start |
Source : https://stackoverflow.com/questions/58656747/elasticsearch-job-for-elasticsearch-service-failed
0 commentaire