Installer Open Cart sur NGinx fpm

Open Cart est système open source de création de pages de produits à vendre très populaire qui permet d’obtenir un site eCommerce fonctionnel, entièrement hébergé sur son propre serveur. Open Cart fournit une interface simple et conviviale pour vendre des produits en ligne. Il est spécialement conçu pour les petites et moyennes entreprises et possède toutes les fonctionnalités de commerce électronique standard nécessaires pour les boutiques en ligne. Il offre un riche ensemble de fonctionnalités, notamment multi-devises, langue, catégories illimitées, produits, critiques de produits, multi-boutiques et bien d’autres.

Arche naturelle à Ponta da Piedade près de Lagos, Algarve au Portugal, avec les textes Open Cart, installation, NGinx et fpm en surimpression

Cet article expose une procédure d’installation de Open Cart sur un serveur NGinx.

Base de données

Open Cart fonctionne en php avec une base de données mySQL, ou MariaDB. On crée donc une base auquelle on attribue un utilisateur et mot de passe :

Télécharger OpenCart

On télécharge la version stable encours, pour moi la 3.0.3.7 du 4 Février 2021 vers un dossier choisi pour l’installation, par exemple/var/www/opencart et l’on dézippe.

La version opencart se trouve dans le dossier upload.

On enlève le suffixe dist des fichiers config.dist.php :

Le dossier opencart contient donc la version 3.0.3.7.

Pour changer plus rapidement de version, et connaître au premier coup d’oeil la version utilisée, on peut renommer le dossier opencart en opencart-3.0.3.7, et faire un lien symbolique de opencart vers opencart-3.0.3.7/upload dans le dossier parent, de plus les fichiers à utiliser se trouve dans le sous-dossier upload :

Le dossier opencart-3.0.3.7 contient un fichier install.txt qui explique la procédure d’installation, en particulier les autorisations d’écriture de certains dossiers.

Afin de ne pas me mélanger les pinceaux avec d’autres sites, je crée le dossier /var/www/Opencart, et je déplace le dossier opencart-3.0.3.7 et le dossier lié opencart.

Pour changer rapidement les autorisations, éventuellement si je fais de nouvelles installations, je crée un fichier /var/www/Opencart/permissions.sh, j’y ajoute le renommage des fichiers config-dist.php et attribue la propriété des fichiers à www-data. On automatise ainsi le processus pour une prochaine installation. Si les fichiers ont déjà été renommés, il y aura deux petites erreurs sans importance :

On rend ce fichier exécutable et on lance le script avec sudo :

Créer un certificat SSL pour OpenCart

OpenCart doit fonctionner avec un certificat SSL Secure Sockets Layer et être appelé avec une adresse en https. On utilise letsencrypt pour cela.

Je crée un sous domaine à mon domaine : opencart.ocmiex.net.

Je crée un dossier /var/www/Opencart/.well-known, que j’attribue à www-data.

Configuration NGinx

On ouvre le fichier /etc/nginx/sites-available/opencart de configuration Nginx :

J’écris un premier bloc server qui accepte des connexions vers le dossier .well-known, un dossier au même niveau que le dossier opencart. On crée un fichier de configuration opencart dans /etc/nginx/sites-available. Les commandes touch, vim et autres se font avec sudo, le propriétaire est root.

Et l’on écrit dans un fichier /etc/nginx/sites-available/opencart les lignes suivantes pour obtenir un certificat SSL Letsencrypt :

On lie ce fichier dans le dossier sites-enabled :

On teste la configuration NGinx et on relance le serveur NGinx :

Création des certificats

On est prêt à lancer la commande pour obtenir les certificats de la part de letsencrypt. On accompagne la commande de l’option --dry-run, qui permet de faire un essai sans créer réellement les certificats, juste pour voir si tout est correct pour letsencrypt :

Lorsque la commande a été testée, on enlève l’option --dry-run pour créer effectivement le certificat.

Terminer la configuration

On termine la configuration en changeant le fichier /etc/nginx/sites-available/opencart :

L’explication de la configuration précédente complètera cet article prochainement …

Premier lancement et configuration

On charge dans le navigateur, l’adresse https://opencart.ocmiex.net/index.php, la page est redirigée vers https://opencart.ocmiex.net/install/index.php, et l’on poursuit l’installation.

Installation de la boutique, page 1 / 4

On renseigne à l’étape 3/4 les champs sur les différentes pages tels le nom, l’utilisateur de la base de données, l’utilisateur admin, le mot de passe, l’email. À cette étape, il sera peut-être nécessaire d’augmenter le paramètre php max_execution_time de php.ini. La procédure sur serveur NGinx php fpm est expliquée dans l’article Réparer l’erreur 504 Gateway Timeout avec Nginx.

Ensuite, à la validation du formulaire, la procédure peut échouer avec l’erreur Uncaught Exception: Error: Variable 'sql_mode' can't be set to the value of 'MYSQL40'Error No: 1231. Pour résoudre cette erreur, il faut éditer le fichier /var/www/Opencart/opencart/install/model/install/install.php et effacer ou commenter la ligne 35 de la version 3.0.3.7 :

et recommencer la procédure, en resoumettant le formulaire. Les paramètres pourront être réinitialisés, il faut vérifier et corriger.

On arrive ainsi à la dernière page, la base est installée, on peut effacer le répertoire install et utiliser Open Cart. On peut aussi vouloir remettre la configuration NGinx et fpm de base, en enlevant les options fastcgi_read_timeout du fichier de configuration NGinx et max_execution_time de fpm.

Installation de la boutique page 4 / 4

Installation en ligne de commande

Trop de problèmes se posent après l’installation, peut-être la modification du sql_mode ne plait pas. Comme je suis coincé avec cette erreur de temps d’exécution de php, je me tourne vers l’installation en ligne de commande. Donc j’efface toutes les table de la base données, et c’est reparti.

Le dossier install contient un fichier cli_install.php. J’utilise le driver database mpdo. Il y a trop de problème avec mysqli. La commande est (remplacer les champs <...> par les bonnes valeurs) :

Ne pas oublier le slash / à la fin de l’adresse https://.../ de la boutique.

J’utilise la version 7.4 de php cli. Pour changer rapidement de versions, si plusieurs sont installées, on utilise :

La commande d’installation en ligne de Open Cart est exécutée assez rapidement comparée à ce que cela prend dans un navigateur. L’avantage est que l’on peut recommencer plusieurs fois, en effaçant les table de la base.

Et hop, Open Cart est installé. Maintenant, il s’agit de lancer l’application dans le navigateur, pour moi https://opencart.ocmiex.net. La première utilisation et les premiers réglages sont à suivre.

Trackbacks/Pingbacks

  1. Open Cart - Les premiers réglages - OcMIEX Info - […] erreur provient du réglage de sql_mode. Tout comme dans l’installation de Open Cart, c’est encore un problème de paramètre…

Soumettre un commentaire

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

Ce site utilise Akismet pour réduire les indésirables.