PrestaShop est une plateforme e-commerce gratuite et open-source. Il est basé sur PHP et MySQL et peut être étendu avec des plugins et des thèmes gratuits et premium.
Avec des fonctionnalités telles qu'une interface administrative intuitive, plusieurs passerelles de paiement, plusieurs langues, des analyses et des rapports, PrestaShop est une plate-forme de choix pour de nombreux marchands en ligne.
Dans ce tutoriel, nous allons vous montrer comment installer PrestaShop sur le serveur Ubuntu 18.04. Nous utiliserons Nginx comme serveur Web, le dernier PHP 7.2 et MySQL/MariaDB comme serveur de base de données.
Prérequis #
Assurez-vous que vous avez satisfait aux prérequis suivants avant de poursuivre ce didacticiel :
- Avoir un nom de domaine pointant vers l'adresse IP de votre serveur public. Nous utiliserons
example.com
. - Nginx est installé sur votre serveur Ubuntu en suivant ces instructions.
- Un certificat SSL installé pour votre domaine afin de chiffrer les informations de l'utilisateur. Vous pouvez installer un certificat SSL Let's Encrypt gratuit en suivant ces instructions.
Mettez à jour les packages système vers les dernières versions et installez l'utilitaire de décompression :
sudo apt update && sudo apt upgrade
sudo apt install unzip
Création d'une base de données MySQL #
PrestaShop stocke ses informations dans une base de données MySQL.
Si MySQL ou MariaDB est installé sur votre serveur, vous pouvez ignorer cette étape. Sinon, installez le package serveur MySQL 5.7 à partir des référentiels par défaut d'Ubuntu en tapant :
sudo apt install mysql-server mysql-client
Pour les nouvelles installations de MySQL, il est recommandé d'exécuter le mysql_secure_installation
commande pour améliorer la sécurité de votre serveur MySQL. Pour créer une base de données, connectez-vous au shell mysql :
sudo mysql
Depuis le shell MySQL, exécutez l'instruction SQL suivante pour créer une nouvelle base de données nommée prestashop
:
CREATE DATABASE prestashop;
Ensuite, créez un compte utilisateur MySQL nommé prestashop
et accordez les autorisations nécessaires à l'utilisateur en exécutant la commande suivante :
GRANT ALL ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY 'change-with-strong-password';
N'oubliez pas de modifier change-with-strong-password
avec un mot de passe fort. Une fois cela fait, quittez la console MySQL en tapant :
EXIT;
Installation et configuration de PHP #
PHP 7.2 est la version PHP par défaut dans Ubuntu 18.04, et elle est entièrement prise en charge et recommandée pour PrestaShop.
Exécutez la commande suivante pour installer PHP et tous les modules PHP requis :
sudo apt install php7.2-common php7.2-cli php7.2-fpm php7.2-opcache php7.2-gd php7.2-mysql php7.2-curl php7.2-intl php7.2-xsl php7.2-mbstring php7.2-zip php7.2-bcmath php7.2-soap
Une fois le processus d'installation terminé, le service PHP-FPM démarre automatiquement. Vous pouvez le vérifier en tapant :
sudo systemctl status php7.2-fpm
Le résultat devrait ressembler à ceci :
* php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2019-03-24 11:53:33 PDT; 14s ago
Docs: man:php-fpm7.2(8)
Main PID: 15853 (php-fpm7.2)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Exécutez le sed
suivant commandes pour définir les options PHP recommandées :
sudo sed -i "s/memory_limit = .*/memory_limit = 1024M/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 256M/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/;opcache.save_comments.*/opcache.save_comments = 1/" /etc/php/7.2/fpm/php.ini
Téléchargement PrestaShop #
Au moment de la rédaction de cet article, la dernière version stable de PrestaShop est la version 1.7.6.2
.
Téléchargez la dernière version de PrestaShop depuis la page de téléchargement de PrestaShop à l'aide de la commande wget suivante :
cd /tmp
wget https://download.prestashop.com/download/releases/prestashop_1.7.6.2.zip
Une fois le téléchargement terminé, créez un répertoire qui contiendra nos fichiers PrestaShop :
sudo mkdir -p /var/www/html/example.com
Ensuite, extrayez l'archive PrestaShop :
unzip prestashop_*.zip
Cette archive contient un autre fichier zip "prestashop.zip", qui contient tous les fichiers PrestaShop. Extrayez les fichiers dans le répertoire racine des documents du domaine :
sudo unzip prestashop.zip -d /var/www/html/example.com
Définissez les autorisations correctes afin que le serveur Web puisse avoir un accès complet aux fichiers et répertoires du site en utilisant le chown
suivant commande :
sudo chown -R www-data: /var/www/html
Configuration de Nginx #
À présent, vous devriez déjà avoir Nginx avec un certificat SSL installé sur votre serveur Ubuntu. Si ce n'est pas le cas, vérifiez les prérequis pour ce tutoriel.
Ouvrez votre éditeur de texte et créez le fichier suivant :
sudo nano /etc/nginx/sites-available/example.com
/etc/nginx/sites-available/example.comserver {
listen 80;
listen 443 ssl http2;
server_name example.com www.example.com;
root /var/www/html/example.com;
index index.php;
# SSL parameters
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
# Cloudflare / Max CDN fix
location ~* \.(eot|otf|ttf|woff(?:2)?)$ {
add_header Access-Control-Allow-Origin *;
}
# Do not save logs for these
location = /favicon.ico {
auth_basic off;
allow all;
log_not_found off;
access_log off;
}
location = /robots.txt {
auth_basic off;
allow all;
log_not_found off;
access_log off;
}
# Images
rewrite ^/([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$1$2$3.jpg last;
rewrite ^/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$1$2$3$4.jpg last;
rewrite ^/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$1$2$3$4$5.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg last;
rewrite ^/c/([0-9]+)(-[.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+.jpg$ /img/c/$1$2$3.jpg last;
rewrite ^/c/([a-zA-Z_-]+)(-[0-9]+)?/.+.jpg$ /img/c/$1$2.jpg last;
# AlphaImageLoader for IE and fancybox
rewrite ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 last;
# Web service API
rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
# Installation sandbox
rewrite ^(/install(?:-dev)?/sandbox)/(.*) /$1/test.php last;
#Change this block to your admin folder
location /admin_CHANGE_ME {
if (!-e $request_filename) {
rewrite ^/.*$ /admin_CHANGE_ME/index.php last;
}
}
# File security
# .htaccess .DS_Store .htpasswd etc
location ~ /\. {
deny all;
}
# Source code directories
location ~ ^/(app|bin|cache|classes|config|controllers|docs|localization|override|src|tests|tools|translations|travis-scripts|vendor|var)/ {
deny all;
}
# Prevent exposing other sensitive files
location ~ \.(yml|log|tpl|twig|sass)$ {
deny all;
}
# Prevent injection of php files
location /upload {
location ~ \.php$ {
deny all;
}
}
location /img {
location ~ \.php$ {
deny all;
}
}
# PHP FPM part
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
}
N'oubliez pas de remplacer example.com par votre domaine PrestaShop et "admin_CHANGE_ME" par votre répertoire d'administration. Vous pouvez trouver le nom du répertoire en listant le contenu du répertoire racine de Prestashop :
sudo ls -l /var/www/html/example.com | grep admin
Assurez-vous également d'utiliser le bon chemin d'accès aux fichiers de certificat SSL. Les extraits utilisés dans cette configuration sont créés dans ce guide.
Avant de redémarrer le service Nginx, vérifiez la configuration pour les erreurs de syntaxe :
sudo nginx -t
Le résultat devrait ressembler à ceci :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Enfin, redémarrez le service Nginx en tapant :
sudo systemctl restart nginx
Installation de PrestaShop #
Maintenant que PrestaShop est téléchargé et que la configuration du serveur est terminée, vous pouvez terminer l'installation via l'interface Web.
Ouvrez votre navigateur, saisissez votre domaine et un écran semblable à celui-ci apparaît :
Sélectionnez la langue que vous souhaitez utiliser et cliquez sur le bouton "Suivant".
Sur l'écran suivant, le contrat de licence PrestaShop vous sera présenté. Lisez la licence et sélectionnez "J'accepte les termes et conditions ci-dessus". pour continuer :
Ensuite, vous verrez la page d'informations suivante :
Assurez-vous que toutes les conditions préalables à l'installation sont remplies et que votre système est compatible avec PrestaShop.
Sur l'écran suivant, vous devrez entrer les détails de votre magasin. L'adresse e-mail est le nom d'utilisateur pour accéder au backend d'administration de PrestaShop.
Ensuite, l'assistant d'installation vous demandera d'entrer les détails de connexion à votre base de données. Entrez les détails de l'utilisateur MySQL et de la base de données que vous avez précédemment créés :
Cliquez sur le bouton "Suivant", et l'installation commencera :
L'installation peut prendre quelques minutes, une fois terminée la page suivante s'affichera, vous informant que PrestaShop a été installé.
Pour des raisons de sécurité, vous devrez supprimer le répertoire d'installation. Pour cela, retournez au terminal et saisissez le rm
suivant commande :
sudo rm -rf /var/www/html/example.com/install
Pour accéder à votre tableau de bord administratif PrestaShop, cliquez sur le bouton "Gérer votre boutique". Entrez votre email et votre mot de passe, et vous serez redirigé vers le tableau de bord d'administration.
À partir de là, vous pouvez commencer à personnaliser votre installation PrestaShop et ajouter de nouveaux produits.