Lors du développement de modules Prestashop, il est utile de tester son fonctionnement sur l’ensemble des version de Prestashop.
Cependant le processus d’installation d’une version spécifique de Prestashop fait perdre pas mal de temps à chaque fois.

Voici donc un script bash qui m’a permis d’industrialiser l’installation de Prestashop sur mon serveur de développement.

/!\ Ce script  est une version beta qui nécessite d’être utilisée avec précautions, et ou de nombreuses améliorations sont possibles, il fonctionne uniquement pour les versions de Prestashop supérieures à la version 1.5.4.1 ( qui disposent de l’installation CLI )
Les postulats de départ sont les suivants :

  • L’utilisateur qui exécute la commande ssh à les droits de création / modification / exécution sur l’ensemble des dossier et la création de base de données
  • L’ensemble des versions de prestashop seront installée sur le même nom de domaine dans un sous-dossier “/prestashop/”
  • Le nom du dossier de chaque version sera sous la forme “prestashop_1-x-x-x”
  • Chaque version disposera de sa propre base de données
  • Les mots de passe admin et base de données seront toujours les mêmes
#!/bin/bash
 
#Check des saisies utilisateurs
if [ -z $1 ];then
  echo "Pas de version majeure saisie (3 / 4 / 5 / 6 )"
  exit
else
  majorVersion=$1  
fi
 
if [ -z $2 ];then
  echo "Pas de version mineure saisie"
  exit
else
 minorVersion=$2
fi
 
if [ -z $3 ];then
  correctVersion=0
else
  correctVersion=$3
fi
 
#Variable par défaut du script (commun à tous les presta)
dir="/home/user/webdirectory/prestashop/"
domaineName="yourdomaine.com"
 
#Accès base de données ( Remplacer par les bonnes informations )
dbuser="dbuser"
dbpassword="dbpassword"
 
#Accès administration (Remplacer par les bonnes informations )
contactEmail="[email protected]"
adminpass="password"
 
#On se positionne dans le dossier web
cd $dir
pwd
 
#Nom du dossier qu'on doit creer
newdir="prestashop_1-${majorVersion}-${minorVersion}-${correctVersion}"
 
#On vérifie que le dossier n'existe pas
if [ -d "$newdir" ]; then
    echo "$newdir existe !"
    echo "Arret de l'install"
    exit
#Si le dossier n'existe pas on lance le processus
else
    echo "$newdir n'existe pas!"
    echo "Creation du dossier $newdir"
    mkdir $newdir
fi
 
#on se place dans le nouveau dossier
cd $newdir
 
#en fonction de la version on détermine les noms des dossiers fichiers  et de la bdd
filename="prestashop_1.$majorVersion.$minorVersion.$correctVersion.zip"
dbname="prestashop_1_${majorVersion}_${minorVersion}_${correctVersion}"
 
#Téléchargement de l'archive depuis le site prestashop
if [ ! -f "$filename" ]
then
wget "http://www.prestashop.com/download/old/$filename"
else
 echo "Fichier deja dl"
fi
 
#On dézippe l'archive , cela va créer un dossier Prestashop qu'on ne veut pas on déplace les fichiers et on supprime ce dossier et l'archive pour finir
 
unzip $filename
cd prestashop
mv * ../
cd ..
rmdir prestashop
rm $filename  
 
#Creation d'une base de donnees
mysql -u $dbuser -p$dbpassword -e "CREATE DATABASE IF NOT EXISTS $dbname "
 
#Prestashop dispose d'un install CLI depuis la version 1.5.4.1 si la version est supérieure on passe par ce mode d'installation
 
installCli=0
 
if [ $majorVersion -gt 4 ]
then
 if [ $minorVersion -gt 3 ]
 then 
   #Cas particulier pour la version 1.5.4.0
   if [ $majorVersion -eq 5 -a $minorVersion -eq 4 -a $correctVersion -eq 0 ]
     then
      echo "Install CLI KO (version 1.5.4.0)"
     else
       echo "Install CLI OK"
       installCli=1
     fi 
 else
  #Pour les versions supérieures à prestashop 1.5 l'install CLI est OK
    if [ $majorVersion -gt 5 ]
    then
        installCli=1
    else    
        echo "Instal CLI KO (Version Mineure)"
    fi    
 fi
else
 echo "Pas d'install CLI (version majeure)"
fi
 
#Installation de la solution en CLI si cela fonctionne
#echo "install CLI $installCli"
pwd
 
if [ $installCli -eq 1 ]
 then
 echo "Lancement de l'installation CLI"
 cd install
 php index_cli.php --domain="${domaineName}"  --db_name=$dbname --db_user=$dbuser --db_password=$dbpassword --email=$contactEmail --password=$adminpass
else
 echo "Installation automatique pas encore disponible"
fi
 
#Pour finir on renomme le dossier d'install et le dossier d'admin
cd ..
mv install _install
mv admin admin-dev
 
#Spécifique à mon serveur : Mise en place des chmods
chmod -R 777 cache
chmod -R 777 tools
chmod -R 777 config

Enregistrer ce fichier sous “install-prestashop.sh”
Pour l’utiliser et installer par exmple la version 1.5.5.0 il faudra saisir la commande suivante

bash install-prestashop.sh 5 5 0

Pour la version 1.5.6.2

bash install-prestashop.sh 5 6 2

Edit 23/05/2014 : Maj du script pour le rendre compatible avec prestashop 1.6