Jump to content

[TUTO] Installer prestashop 1.6 sur un Galera Cluster


Recommended Posts

Bonjour,

 

Si comme moi vous utilisez un Galera Cluster MySQL ou MariaDB vous avez certainement remarqué que l'installation de prestashop planté lamentablement. La raison est simple un Galera Cluster ne peut pas avoir un auto_increment et offset de 1.

 

Voici donc la méthode que j'utilise pour résoudre ce problème et avoir une installation propre :

 

1 - Supprimer le check auto_increment et offset :

 

Dans le fichier install/models/database.php commentez les lignes 75 à 77 de la fonction testDatabaseSettings comme ci-dessous :
 

/*if (!Db::checkAutoIncrement($server, $login, $password)) {
	$errors[] = $this->language->l('The values of auto_increment increment and offset must be set to 1');
}*/

2 - Supprimer l'installation des produits demo :

 

Dans le fichier install/models/install.php ajouter "return true;" au début de la fonction installFixtures ( ligne 750 ) comme ci-dessous :

    public function installFixtures($entity = null, array $data = array())
    {
        return true;
	$fixtures_path = _PS_INSTALL_FIXTURES_PATH_.'fashion/';

3 - Désactiver l’installation de certains modules qui ne passe pas :

Toujours dans le fichier install/models/install.php commentez les modules suivant dans la fonction getModulesList (ligne 593 ) : blockcategories, blockstore, blocksupplier, dashgoals, themeconfigurator

public function getModulesList()
    {
        $modules = array();
        if (false) {
            foreach (scandir(_PS_MODULE_DIR_) as $module) {
                if ($module[0] != '.' && is_dir(_PS_MODULE_DIR_.$module) && file_exists(_PS_MODULE_DIR_.$module.'/'.$module.'.php')) {
                    $modules[] = $module;
                }
            }
        } else {
            $modules = array(
                'socialsharing',
                'blockbanner',
                'bankwire',
                'blockbestsellers',
                'blockcart',
                'blocksocial',
                //'blockcategories',
                'blockcurrencies',
                'blockfacebook',
                'blocklanguages',
                'blocklayered',
                'blockcms',
                'blockcmsinfo',
                'blockcontact',
                'blockcontactinfos',
                'blockmanufacturer',
                'blockmyaccount',
                'blockmyaccountfooter',
                'blocknewproducts',
                'blocknewsletter',
                'blockpaymentlogo',
                'blocksearch',
                'blockspecials',
                //'blockstore',
                //'blocksupplier',
                'blocktags',
                'blocktopmenu',
                'blockuserinfo',
                'blockviewed',
                'cheque',
                'dashactivity',
                'dashtrends',
                //'dashgoals',
                'dashproducts',
                'graphnvd3',
                'gridhtml',
                'homeslider',
                'homefeatured',
                'productpaymentlogos',
                'pagesnotfound',
                'sekeywords',
                'statsbestcategories',
                'statsbestcustomers',
                'statsbestproducts',
                'statsbestsuppliers',
                'statsbestvouchers',
                'statscarrier',
                'statscatalog',
                'statscheckup',
                'statsdata',
                'statsequipment',
                'statsforecast',
                'statslive',
                'statsnewsletter',
                'statsorigin',
                'statspersonalinfos',
                'statsproduct',
                'statsregistrations',
                'statssales',
                'statssearch',
                'statsstock',
                'statsvisits',
                //'themeconfigurator',
            );
        }
        return $modules;
    }

Voilà l'installation devrait maintenant ce faire sans erreur. Si d'autre modules plante il suffit de les commenter. Une fois l'installation terminé vous pourrez installer les modules précédemment désactivé sans aucun problème via l'admin de prestashop en cliquant simplement sur le bouton installer de chaque module.

 

Par expérience je confirme que prestashop fonctionne parfaitement par la suite sur un Galera Cluster, il serait donc peut être bon que l'équipe de dev se penche sur ce problème d'installation pour éviter ce genre de modifications.

Link to comment
Share on other sites

Il est possible que vous obteniez un crash en allant sur la page admin de listing des produits. Ce problème est dû à un mauvais id de la catégorie Accueil.

 

Pour corriger ce bug il suffit de placer ce script à la racine du dossier adminXXXXX et de l’exécuter :

<?php
if (!defined('_PS_ADMIN_DIR_')) {
    define('_PS_ADMIN_DIR_', getcwd());
}
include(_PS_ADMIN_DIR_.'/../config/config.inc.php');
include(_PS_ADMIN_DIR_.'/functions.php');

$id_old_category = (int)Db::getInstance()->getValue('SELECT id_category FROM '._DB_PREFIX_.'category WHERE is_root_category = 1');

if ($id_old_category && $id_old_category != 2) {
	echo "Correction id_category root ".$id_old_category." to 2 ... ";
	Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'category SET id_category = 2 WHERE id_category = '.$id_old_category);
	Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'category_shop SET id_category = 2 WHERE id_category = '.$id_old_category);
	Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'category_lang SET id_category = 2 WHERE id_category = '.$id_old_category);
	Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'category_group SET id_category = 2 WHERE id_category = '.$id_old_category);
	echo "OK";
} else {
	echo "id_category root is already OK !";
}

Ce script va corriger l'id de la catégorie Accueil pour qu'il soit égal à 2 comme le désire prestashop si cela est nécessaire. Vérifiez également que la table ps_category_group soit correct car il est possible que l'id de la catégorie parent qui doit égal à 1 ne soit pas correct.

 

Voilà après cela votre prestashop devrait fonctionner correctement sur un Galera Cluster.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...