Installation d’Akeneo PIM 7.0 – OVH Kimsufi – Debian 10 – myVesta

Publié par David le

Ce tutoriel est plus au moins une traduction de la documentation officielle d’installation d’Akeneo PIM 7.0 avec quelques petits ajouts. J’ai choisi la méthode manuelle.

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.

J’ai gardé les sources de Akeoneo PIM sur mon espace personnel. Vous pouvez les télécharger en cliquant sur ce lien.

Installation des prérequis

Prenez soin de vous logger avec l’utilisateur 1000 (ubuntu dans le cas d’un serveur OVH sous cette distribution).

Pour le cas de myVesta, veuillez créer un utilisateur pim7 et un domaine Web. Par exemple monpim7.com.

MySQL 8.0

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
sudo apt-get install mysql-server

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.

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 :

● 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.1

L’installation de PHP et de ses extensions.

wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sh -c 'echo "deb https://packages.sury.org/php/ buster main" > /etc/apt/sources.list.d/php.list'
apt-get update
$ apt-get install php8.1-cli php8.1-apcu php8.1-bcmath php8.1-curl php8.1-opcache php8.1-fpm php8.1-gd php8.1-intl php8.1-mysql php8.1-xml php8.1-zip php8.1-mbstring php8.1-imagick

Si vous avez myVesta, il suffit de l’installer sur le Panel de myVesta avec le script multi-php.

Composer v2

Installation par le script automatique

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer

Les détails de cette installation peuvent être consultés sur la documentation de Composer.

Elasticsearch 8.4

On installe la clé PGP et les paquets par le dépôt officiel.

apt-get install apt-transport-https
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-8.x.list
apt update && apt-get install elasticsearch=8.4.2
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.

sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" | tee /etc/sysctl.d/elasticsearch.conf
service elasticsearch restart

Les détails de cette installation peuvent être consultés sur la documentation de Elasticsearch.

Apache2

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 :

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, l’utilisateur et le mot de passe akeneo_pim.

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;

Si vous avez myVesta, il suffit d’ajouter la base sur le Panel.

PHP

  • On configure le fichier de configuration php-cli
sudo nano /etc/php/8.1/cli/php.ini

Et on modifie les valeurs :

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
sudo nano /etc/php/8.1/fpm/php.ini

Et on modifie les valeurs :

memory_limit = 512M
date.timezone = UTC

Enfin, il faut configurer les utilisateurs php :

  • On récupère les identifiant de l’utilisateur actuel :
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
sudo service php8.1-fpm stop
  • On ouvre le fichier de la pool www de php-fpm
sudo nano /etc/php/8.1/fpm/pool.d/www.conf

Et on modifie les valeurs :

user = my_user
group = my_group
listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data
  • On redémarre php-fpm
sudo service php8.1-fpm restart

Dans le cas de myVesta, le fichier à modifier est /etc/php/8.1/fpm/pool.d/pim7.mcdtoolbox.com.conf

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.

sudo nano /etc/apache2/sites-available/akeneo-pim.conf

Et on remplit le fichier :

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

sudo apache2ctl configtest &&
sudo a2ensite akeneo-pim &&
sudo systemctl reload apache2

On vérifie l’état du système

sudo systemctl status apache2

La sortie devrait ressembler à quelque chose comme ci-dessous :

● 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 :

sudo nano /etc/hosts
127.0.0.1    domaine_name.com

ou en local : 

127.0.0.1 akeneo-pim.local

Dans le cas de myVesta, rien est à faire !

Node 18

sudo apt install curl
curl -sL https://deb.nodesource.com/setup_18.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 :

node -v

Et il devrait sortir :

v18.17.0

Yarn

On se connecte en root :

sudo su
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 :

yarn -v

On quitte root

exit

Installation d’Akeneo PIM

On se logue en tant que pim7 :

sudo su pim7

Récupération des sources

Pour le répertoire d’installation, nous utiliserons /home/pim7/web/pim7.mcdtoolbox.com/public_html. C’est le répertoire utilisé pour la configuration myVesta, vous pouvez le changer si vous ne l’utilisez pas.

On peut installer Akeneo PIM avec composer en ayant installer le paquet correspondant :

Sans myVesta

sudo mkdir /home/pim7/web/pim7.mcdtoolbox.com/public_html
sudo chown ubuntu: -R /home/pim7/web/pim7.mcdtoolbox.com/public_html
cd /home/pim7/web/pim7.mcdtoolbox.com/public_html
sudo composer create-project akeneo/pim-community-standard /srv/pim "7.0.*@stable"

Avec myVesta

cd /home/pim7/web/pim7.mcdtoolbox.com/public_html
/usr/bin/php8.1 /usr/local/bin/composer create-project akeneo/pim-community-standard /home/pim7/web/pim7.mcdtoolbox.com/public_html "7.0.*@stable"

Initialisation d’Akeneo PIM

On copie le fichier .env pour avoir le .env.local

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.

nano .env.local
APP_ENV=prod
APP_DATABASE_HOST=localhost
APP_DATABASE_PORT=null
APP_DATABASE_NAME=pim7_admin_akeneo_pim
APP_DATABASE_USER=pim7_admin_akeneo_pim
APP_DATABASE_PASSWORD=pim7_admin_akeneo_pim
APP_INDEX_HOSTS='localhost:9200'
COMM_PANEL_API_URL=https://monpim7.com

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.

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 :

APP_DATABASE_HOST=localhost
APP_INDEX_HOSTS='localhost:9200'

Lancement d’Akeneo PIM en mode production

Si vous n’avez pas installer make :

sudo apt install make

Puis :

cd /home/pim7/web/pim7.mcdtoolbox.com/public_html
NO_DOCKER=true make prod

Si vous avez une erreur de php, modifier le Makefile et remplacer php par php8.1

On crée l’utilisateur principal pour se connecter :

php8.1 bin/console pim:user:create

Ou plus rapidement :

php8.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

sudo systemctl daemon-reload &&
sudo systemctl enable elasticsearch.service

Activation de SSL

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 :

sudo crontab -e -u www-data

Et rajouter les valeurs fournies par la documentation d’Akeneo :

# 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.

apt update
apt install supervisor
sudo nano /etc/supervisor/conf.d/akeneo_pim.conf

Et remplir le fichier avec ces valeurs :

[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)
touch /var/log/akeneo_daemon.err.log
touch /var/log/akeneo_daemon.out.log
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 toute nouvelle installation

On attribue les droits www-data au répertoire du PIM

sudo chown www-data: -R /home/pim-community-standard

Database does not exist yet

Dans le fichier :

sudo nano /home/pim-community-standard/.env.local

Bien vérifier que cette variable a pour valeur localhost :

APP_DATABASE_HOST=localhost

Si l’erreur « No alive nodes found in your cluster » pendant l’installation

Dans le fichier :

sudo nano /home/pim-community-standard/.env.local

Bien vérifier que cette variable a pour valeur localhost:9200 :

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 :

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 :

sudo nano /etc/elasticsearch/jvm.options

Et on ajoute les lignes ci-dessous pour attribuer 4GB en minimum et maximum :

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

sudo service elasticsearch restart
sudo service elasticsearch status

Que faire si Elasticsearch ne se lance pas au démarrage du serveur

Ouvrir le fichier :

sudo nano /usr/lib/systemd/system/elasticsearch.service

Editer la ligne ci-dessous dans le section [Service]:

TimeoutStartSec=300

Activer le service :

sudo /bin/systemctl enable elasticsearch.service

Rédémarrer le service elasticsearch :

service elasticsearch start

Source : https://stackoverflow.com/questions/58656747/elasticsearch-job-for-elasticsearch-service-failed

 

Catégories : LinuxPim

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *