Child pages
  • Guide de l'administrateur système

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Pour que PrestaShop 1.5.x fonctionne correctement, il faut que votre configuration de PHP dispose des réglages et bibliothèques suivants :

  • MySQL (ou Percona Server, voir la section "Améliorer les performances de PrestaShop" plus bas dans ce chapitre).
  • Bibliothèque GD.
  • Extension Dom.
  • allow_url_fopen.

L'extension MySQL permet l'accès à vos données. PrestaShop ne peut tout simplement pas fonctionner sans.
Vous pouvez également utilise le remplacement direct Percona Server, qui offre de meilleures performances par rapport au serveur MySQL standard.

La bibliothèque GD permet à PHP de manipuler vos images de manière dynamique. PrestaShop l'utilise pour redimensionner et retravailler les fichiers image qui sont mis en ligne (ajout d'un filigrane, rognure, etc.). Sans images, votre boutique perd le plus gros de son attrait ; assurez-vous donc que GD est bien activé !

L'extension Dom permet d'analyser des documents XML. PrestaShop s'en sert pour diverses fonctionnalités, comme le localisateur de magasin. Elle est aussi utilisée par certains modules, ainsi que la bibliothèque pear_xml_parseparser.

La directive allow_url_fopen permet aux modules de PrestaShop d'accès à des fichiers distants, ce qui est un besoin fondamental du processus de paiement, entre autres choses. Il est donc essentiel que cette directive soit activée.

...

La directive magic_quotes échappe (autrement dit, elle "ajoute un antislash" (http://php.about.com/od/phpfunctions/g/addslashes_php.htm]) automatiquement les caractères spéciaux (', ", \, NULL) pour toutes les variables d'environnement (GET, POST, COOKIE, SERVER...). Cette option doit être désactivée car elle ajoute un antislash à toutes les variables, même celles n'en ayant pas besoin. De plus, certaines applications web sont mal conçues, et pourraient se retrouver avec deux antislash au lieu d'un, aboutissant à des donnés inexploitables.

...

Ce fichier contient les identifiants et les "hash" des mots de passe de ceux qui sont autorisés à accéder au dossier (un hash est une "empreinte" unique d'une chaîne de caractère, permettant de l'identifier rapidement.
Pour créer le hash d'un mot de passe, vous pouvez passer par ce générateur de fichier .htpasswd : http://aspirine.org/htpasswd.html.

...

En plus des valeurs constantes, ce fichier contient l'emplacement de tous les fichiers et dossiers. Si vous avez besoin de les changer, n'oubliez pas de conserver l'original à portée de main, dans le cas où vous souhaiteriez revenir à l'ancien emplacement.

Fichier smarty.config.inc.php

  • $smarty->caching = false; : le système de cache de Smarty doit être désactivé, parce qu'il n'est pas compatible avec PrestaShop.
  • IMPORTANT : en production, $smarty->force_compile doit être mis à "false", car cela améliorera de 30 % le temps de chargement de la page. En revanche, lors de la modification d'un fichier .tpl, vous devrez effacer le dossier /tools/smarty/compile (sauf son fichier index.php) afin de voir les modifications en place dans votre navigateur. Notez que ce réglage peut également être fait dans le back-office, dans le sous-onglet la page "Performance" de l'onglet "Préférencesdu menu "Paramètres avancés", section "Smarty".
  • $smarty->compile_check devrait être laissé à "false".
  • $smarty->debugging vous donne accès aux informations de débogage de Smarty quand les pages sont affichées.

...

Voici quelques conseils qui devraient vous permettre d'optimiser PrestaShop.

...

Performances de PHP

Si vous le pouvez, utiliser un cache d'opcode (ou demandez à votre hébergeur d'en installer un pour vous), afin d'alléger la charge de traitement du serveur.

...

"Opcode" signifie "code opérationnel", et défini l'état de compilation des fichiers dynamiques, qui peuvent être traités plus rapidement.
PrestaShop est compatible avec eAccelerator (http://eaccelerator.net/).

Performance de MySQL

Autres améliorations

Si possible, placez vos éléments statiques sur plusieurs domaines ou sous-domaines, afin de profiter de connexions HTTP parallèles. Pour ce faire, ouvrez le fichier /config/defines.inc.php et ajoutez-y ces lignes (adaptées à vos propres besoins) :

Code Block
html
html
if ( $_SERVER['REMOTE_ADDR'] != '127.0.0.1' )
{
  define( '_THEME_IMG_DIR_',   'http://img2.xxx.com/'       );
  define( '_THEME_CSS_DIR_',   'http://css.xxx.com/'        );
  define( '_THEME_JS_DIR_',    'http://js.xxx.com/'         );
  define( '_THEME_CAT_DIR_',   'http://img1.xxx.com/c/'     );
  define( '_THEME_PROD_DIR_',  'http://img1.xxx.com/p/'     ); 
  define( '_THEME_MANU_DIR_',  'http://img1.xxx.com/m/'     ); 
  define( '_PS_IMG_',          'http://img1.xxx.com/'       ); 
  define( '_PS_ADMIN_IMG_',    'http://img1.xxx.com/admin/' ); 
} else { 
  define( '_THEME_IMG_DIR_',   _THEMES_DIR_ . _THEME_NAME_ . '/img/' ); 
  define( '_THEME_CSS_DIR_',   _THEMES_DIR_ . _THEME_NAME_ . '/css/' ); 
  define( '_THEME_JS_DIR_',    _THEMES_DIR_ . _THEME_NAME_ . '/js/'  ); 
  define( '_THEME_CAT_DIR_',   __PS_BASE_URI__ . 'img/c/'            ); 
  define( '_THEME_PROD_DIR_',  __PS_BASE_URI__ . 'img/p/'            ); 
  define( '_THEME_MANU_DIR_',  __PS_BASE_URI__ . 'img/m/'            ); 
  define( '_PS_IMG_',          __PS_BASE_URI__ . 'img/'              ); 
  define( '_PS_ADMIN_IMG_',    _PS_IMG_.'admin/'                     ); 
}

Vous trouverez également de bons conseils sur notre site:

Autres recommandations

Safe Mode

Le Safe Mode de PHP est obsolète dans la dernière versions version de PHP, et ne devrait plus être utilisé. En particulier, sous PrestaShop, il peut rendre vos modules de paiement inutilisable.

...

Le code PHP de vos applications est la seule vulnérabilité de votre serveur. Il vous faut donc vous assurez de toujours utiliser les dernières versions de vos applications : PHP, MySQL, Apache et toute les autres applications en place sur votre serveur.

URL simplifiées dans Nginx

La plupart des instructions serveur de cette page se rattachant au serveur web Apache. Mais certains d'entre vous préfèrent sans doute utilise le serveur Nginx. PrestaShop fonctionne bien avec Nginx, mais n'est pas capable de générer les bonnes règles de redirection pour profiter des URL simplifiées.

Voici quelques règles à mettre dans votre fichier nginx.conf afin de faire fonctionner les URL simplifiées.

Code Block
location /PRESTASHOP_FOLDER/ {
  index /PRESTASHOP_FOLDER/index.php;

  rewrite ^/PRESTASHOP_FOLDER/api/?(.*)$ /PRESTASHOP_FOLDER/webservice/dispatcher.php?url=$1 last;
  rewrite ^/PRESTASHOP_FOLDER/([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /PRESTASHOP_FOLDER/img/p/$1/$1$2.jpg last;
  rewrite ^/PRESTASHOP_FOLDER/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /PRESTASHOP_FOLDER/img/p/$1/$2/$1$2$3.jpg last;
  rewrite ^/PRESTASHOP_FOLDER/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /PRESTASHOP_FOLDER/img/p/$1/$2/$3/$1$2$3$4.jpg last;
  rewrite ^/PRESTASHOP_FOLDER/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /PRESTASHOP_FOLDER/img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg last;
  rewrite ^/PRESTASHOP_FOLDER/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /PRESTASHOP_FOLDER/img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.jpg last;
  rewrite ^/PRESTASHOP_FOLDER/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /PRESTASHOP_FOLDER/img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.jpg last;
  rewrite ^/PRESTASHOP_FOLDER/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /PRESTASHOP_FOLDER/img/p/$1/$2/$3/$4/$5/$6  /$7/$1$2$3$4$5$6$7$8.jpg last;
  rewrite ^/PRESTASHOP_FOLDER/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /PRESTASHOP_FOLDER/img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg last;
  rewrite ^/PRESTASHOP_FOLDER/c/([0-9]+)(-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*.jpg$ /PRESTASHOP_FOLDER/img/c/$1$2.jpg last;
  rewrite ^/PRESTASHOP_FOLDER/c/([a-zA-Z-]+)/[a-zA-Z0-9-]+.jpg$ /PRESTASHOP_FOLDER/img/c/$1.jpg last;
  rewrite ^/PRESTASHOP_FOLDER/([0-9]+)(-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*.jpg$ /PRESTASHOP_FOLDER/img/c/$1$2.jpg last;
  try_files $uri $uri/ /PRESTASHOP_FOLDER/index.php?$args;
}

Notez bien que cet exemple utilise /PRESTASHOP_FOLDER/ comme marqueur du dossier PrestaShop. Vous devez remplacer toutes les occurrences de /PRESTASHOP_FOLDER/ par le bon chemin de votre installation de PrestaShop.

Par exemple, si PrestaShop se trouve à la racine de votre serveur, remplacez /PRESTASHOP_FOLDER/ par / , tout simplement :

Code Block
location / {
  index /index.php;

  rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
  rewrite ^/([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$1$2.jpg last;
  rewrite ^/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$1$2$3.jpg last;
  rewrite ^/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$3/$1$2$3$4.jpg last;
  rewrite ^/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg last;
  rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.jpg last;
  rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.jpg last;
  rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$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])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg last;
  rewrite ^/c/([0-9]+)(-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*.jpg$ /img/c/$1$2.jpg last;
  rewrite ^/c/([a-zA-Z-]+)/[a-zA-Z0-9-]+.jpg$ /img/c/$1.jpg last;
  rewrite ^/([0-9]+)(-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*.jpg$ /img/c/$1$2.jpg last;
  try_files $uri $uri/ /index.php?$args;
}

Si votre installation de PrestaShop utilise le mode multiboutique, vous devez ajouter quelques lignes pour chaque boutique. Par exemple, si l'une de vos boutiques utilise l'identifiant "high-tech" :

Code Block
location /PRESTASHOP_FOLDER/high-tech/ {
  rewrite ^/PRESTASHOP_FOLDER/high-tech/(.*)$ /PRESTASHOP_FOLDER/$1 last;
  try_files $uri $uri/ /PRESTASHOP_FOLDER/index.php?$args;
}

Divers

L'arborescence des fichiers de PrestaShop

...

  1. Mettez votre boutique en mode de maintenance, afin de ne pas perdre de nouveaux clients ou des commandes pendant le déplacement des données.
    Rendez-vous sur votre back-office, et sous l'onglet "Préférence"dans la page "Maintenance du menu "Paramètres avancés", réglez l'option "Activer la boutique" à "Non".
  2. Déplacez vos fichiers :
    1. Faites une sauvegarde de tous vos fichier : connectez-vous à votre serveur FTP, et copiez tous les fichiers et dossiers vers votre disque dur.
    2. Transférez les fichiers vers le nouvel hébergeur : connectez-vous au serveur FTP de votre nouvel hébergeur, et copiez-y tous les fichiers et dossier que vous avez téléchargé précédemment sur votre disque dur, tels quels.
  3. Déplacez vos données :
    1. Faites une sauvegarde de votre base de données (un "dump") : connectez-vous à phpMyAdmin, cliquez sur l'onglet "Exporter", sélectionnez la base de données de votre installation de PrestaShop, et cliquez sur le bouton "Exécuter". Enregistrez le fichier sur votre disque dur. Si phpMyAdmin arrive à expiration avant l'export de toutes vos données, contactez votre hébergeur.
    2. Transférez votre dump SQL vers votre nouvelle base de données : connectez-vous au phpMyAdmin de votre nouveau serveur, cliquez sur le bouton "Importer", cliquez sur le bouton "Parcourir...", trouvez le fichier SQL que vous avez téléchargé, et cliquez sur le bouton "Exécuter" pour le mettre en ligne. Si phpMyAdmin arrive a expiration avant l'import de toutes vos données, contactez votre nouvel hébergeur.
  4. ConfigurationConfigurer votre boutique :
    1. Sur le nouveau serveur, ouvrez le fichier /config/settings.inc.phpet mettez à jour les réglages de la base de données (avec vos propres informations plutôt que les exemples donnés ci-dessous) :
      • define('_DB_SERVER_', 'sql.domainname.com');
      • define('_DB_NAME_', 'prestashop');
      • define('_DB_USER_', 'PS-user');
      • define('_DB_PASSWD_', 'djsf15');
      • define('_DB_PREFIX_', 'ps_');
    2. (version 1.4 et précédentes) Dans ce même fichier, mettez à jour le réglage l'URI de base ('/' étant la racine du serveur) :
      • define('__PS_BASE_URI__', '/prestashop/');
    3. Connectez-vous à votre back-office, rendez-vous dans l'onglet "la page "SEO & URLs" du menu "Préférences", sélectionnez le sous-onglet "SEO & URLs", allez dans la section "Configuration des URL" et modifiez le nom du domaine pour y mettre votre nouveau domaine. Faites de même pour votre domaine SSL.
      Dans les faits, cela mettra à jour les lignes "PS_SHOP_DOMAIN" et "PS_SHOP_DOMAIN_SSL" de la table SQL "ps_configuration".
    4. Dans votre back-office, rendez-vous dans l'onglet "Outils", sous-onglet "Générateurs", et regénérez le fichier .htaccess ainsi que le fichier robots.txt.
  5. Connectez-vous à votre serveur FTP et effacez le contenu des dossiers suivants, sauf le fichier index.php:
    • /cache/smarty/cache
    • /cache/smarty/compile
  6. Dans votre back-office, sous l'onglet "Préférencesdans la page "Maintenance", mettez remettez l'option "Activer la boutique" à "Oui".

...

  1. Mettez votre boutique en mode de maintenance, afin de ne pas perdre de nouveaux clients ou des commandes pendant le déplacement des données.
    Rendez-vous sur votre back-office, et sous l'onglet "Préférence"dans la page "Maintenance du menu "Paramètres avancés", réglez l'option "Activer la boutique" à "Non".
  2. Déplacez vos fichiers :
    1. Faites une sauvegarde de tous vos fichier : connectez-vous à votre serveur FTP, et copiez tous les fichiers et dossiers vers votre disque dur.
    2. Transférez les fichiers vers le nouvel hébergeur : connectez-vous au serveur FTP de votre nouvel hébergeur, et copiez-y tous les fichiers et dossier que vous avez téléchargé précédemment sur votre disque dur, tels quels.
  3. Configuration
    1. Sur le nouveau serveur, ouvrez le fichier /config/settings.inc.phpet mettez à jour les réglages de la base de données (avec vos propres informations plutôt que les exemples donnés ci-dessous) :
      • define('_DB_SERVER_', 'sql.domainname.com');
      • define('_DB_NAME_', 'prestashop');
      • define('_DB_USER_', 'PS-user');
      • define('_DB_PASSWD_', 'djsf15');
      • define('_DB_PREFIX_', 'ps_');
    2. (version 1.4 et précédentes) Dans ce même fichier, mettez à jour le réglage l'URI de base ('/' étant la racine du serveur) :
      • define('__PS_BASE_URI__', '/prestashop/');
    3. Connectez-vous à votre back-office, rendez-vous dans l'onglet "la page "SEO & URLs" du menu "Préférences", sélectionnez le sous-onglet "SEO & URLs", allez dans la section "Configuration des URL" et modifiez le nom du domaine pour y mettre votre nouveau domaine. Faites de même pour votre domaine SSL.
      Dans les faits, cela mettra à jour les lignes "PS_SHOP_DOMAIN" et "PS_SHOP_DOMAIN_SSL" de la table SQL "ps_configuration".
    4. Dans votre back-office, rendez-vous dans l'onglet "Outils", sous-onglet "Générateurs", et regénérez le fichier .htaccess ainsi que le fichier robots.txt.
  4. Connectez-vous à votre serveur FTP et effacez le contenu des dossiers suivants, sauf le fichier index.php:
    • /tools/smarty/cache
    • /tools/smarty/compile
    • /tools/smarty_v2/cache
    • /tools/smarty_v2/compile
  5. Dans votre back-office, sous l'onglet "Préférencesdans la page "Maintenance", mettez remettez l'option "Activer la boutique" à "Oui".

...