Archives pour la catégorie Extension Magento

Réparer Magento avec Magento-db-repair-tool

voir tutoriel : https://erickranich.wordpress.com/2014/07/03/methode-pour-reparer-une-mise-a-jour-magento-qui-a-plante/#repair

 

 

 

 

 

Publicités

Méthode pour réparer une Mise à jour Magento qui à planté

Lorsque l’on souhaite mettre à jour Magento, nous sommes souvent confronté à quelques difficultés:

Erreur pendant l’update, message d’erreur pendant la ré-indexation, plantage du site, etc … erreur

 Voici la méthode pour s’en sortir :

L’idéal est de partir d’un Magento en état de marche, cette méthode fonctionne aussi avec un Magento planté :

Pre-requis : Avoir accès au serveur via un terminal SSH comme putty et installer l’utilitaire rpl qui permet de faire du « chercher/remplacer » dans les dossiers et fichiers, il est disponible dans  la plupart des distributions linux.

Installation de RPL :

#Sous Debian tapez; apt-get install rpl;
#sous Ubuntu tapez; sudo apt-get install rpl;
#sous Centos tapez; yum install rpl;

1) Créer un dossier un dossier_BIS de votre Magento, je  l’appelerai dossier_BIS 

2) Créer 2 bases vierges  MYSQL via l’outil d’administration serveur (PphpMyAdmin ou plesk ZpanelCP..). Une base que l’on va appeler « final » et une base que l’on va appeler « fraiche« .

Afin de simplifier, si possible, créer ces 2 bases avec le même utilisateur et même mot de passe que votre base Magento originale. (voir app/etc/local.xml).

Dupliquer la base originale de MAGENTO

Vous devez connaitre : username : nom d’utilisateur de la base de données,  password : Mot de passe, dbname : nom de la Base de données, vous pouvez retrouver ces informations dans le fichier local.xml du dossier /MonDossierMagento/app/etc/local.xml

Dans un premier temps on va exporter la base de données de votre Magento original :

mysqldump -u username -ppassword dbname > export.sql

-On  modifie l’export.sql afin que la base « final » pointe vers le  dossier_BIS 

rpl '/MonDossierMagento/' '/dossier_BIS/' export.sql;

MonDossierMagento = le nom du dossier actuel de votre magento, juste le nom du dossier rien d’autre.

(Cela évite de toucher le core_config_data c’est plus efficace)

-On importe le fichier export.sql corrigé vers la base que l’on a appelé  « final »

mysql -h localhost -u username -ppassword final <export.sql

Première étape est terminée, on peut supprimer export.sql

rm export.sql

On va dupliquer le dossier Magento  dans un dossier_bis

cp -R -f /var/www/Le_Chemin_Vers_Dossier/Mon_Magento/ /var/www/Le_Chemin_Verse_Dossier/dossier_bis/;

-On purge les logs/reports/caches…

rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/locks; 
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/cache; 
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/session;

-On vérifie qu’il n’y a plus au fichier qui pointe vers le dossier du Magento original

rpl -R '/MonDossierMagento/' '/dossier_BIS/' /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/;

(Cela évite entre autre de corriger le download/connect.cfg)

Testez-le vous devriez avoir un joli clone de votre Magento  http://votreSite.xx/dossier_bis

Vous avez un Magento identique qui fonctionne mais qui n’est pas encore updaté, on va pouvoir l’upgrader en tout sécurité 🙂

Résumer : vous pouvez en faire un script pour automatiser cette tâche

mysqldump -u username -ppassword dbname > export.sql;
rpl '/MonDossierMagento/' '/dossier_BIS/' export.sql;
mysql -h localhost -u username -ppassword final <export.sql;
rm export.sql;
cp -R -f /var/www/Le_Chemin_Vers_Dossier/Mon_Magento/ /var/www/Le_Chemin_Verse_Dossier/dossier_bis/;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/locks;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/cache;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/session;
rpl -R '/MonDossierMagento/' '/dossier_BIS/' /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/;

____________________________________________________

Maintenant nous allons mettre à jour  en ligne de commande :

1) Accédez au dossier _bis, mettre en mode maintenance puis donner les droits :

cd /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/;
touch maintenance.flag;### mode Maintenance;
chmod -R 777 . ;### tous les droits (pensez a les refermer après)

2)  initialiser magento connect:

rm downloader/connect.cfg  &> /dev/null;
rm -rf var/cache/* downloader/pearlib/cache/* downloader/pearlib/download/* &> /dev/null;
./mage mage-setup;
./mage sync --force;
./mage config-set preferred_state stable ; ## (stable, beta ou alpha);
./mage list-upgrades ;

3) Mise à jour  de Mage_All_Latest :

./mage install http://connect20.magentocommerce.com/community Mage_All_Latest --force ;
rm -rf var/cache/* ;rm downloader/pearlib/cache/*;rm downloader/pearlib/download/* ;
rm maintenance.flag;### fin du mode Maintenance;
chmod -R 777 . ;### tous les droits (pensez a les refermer après)

Testez votre site;  si ça fonctionne il est à jour,  (pensez à vérifier l’indexation) !  s’il ne fonctionne pas continuer ce tutoriel.

Votre site fonctionne mais pas la ré-indexation ? si elle ne fonctionne pas correctement (blocages ou erreurs)  continuer ce tutoriel

4 ) Mise à jour  Complète :

la mise à jour complète est nécessaire si Mage_All_Latest n’a pas réussi à mettre à jour Magento:

cd /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/;
touch maintenance.flag;### mode Maintenance;
chmod -R 777 .; ### tous les droits (pensez a les refermer après)

./mage upgrade-all --force

rm -rf var/cache/* ;rm downloader/pearlib/cache/*;rm downloader/pearlib/download/* ;
rm maintenance.flag;### fin du mode Maintenance;
chmod -R 777 . ;### tous les droits (pensez a les refermer après)

Testez votre site;  si ça fonctionne il est à jour,  (pensez à re-vérifier l’indexation) !  s’il ne fonctionne toujours pas continuer ce tutoriel.

____________________________________________________

Erreur classique « Base table or view exists : 1050 Table .. ‘catolog_product_entity_group_price’ etc..

erreur

Maintenant nous allons nettoyer la base :

un certains nombres de tables n’ont pas supportées la mise à jour, nous allons les supprimer, pour que magento puissent les créer correctement.

Ces tables sont en générale vides, vous pouvez les vérifier avec phpmyadmin

Sauf la table des codes de réductions, vous devrez les re-saisir.

mysql -h localhost -u username -ppassword final -e "SET foreign_key_checks = 0;
update core_resource set version='1.6.0.0.19' where code='catalog_setup';
update core_resource set data_version='1.6.0.0.19' where code='catalog_setup';
update core_resource set version='1.6.0.1' where code='eav_setup';
update core_resource set data_version='1.6.0.1' where code='eav_setup';
update core_resource set version='1.6.0.6' where code='sales_setup';
update core_resource set data_version='1.6.0.6' where code='sales_setup';
update core_resource set version='1.6.0.3' where code='salesrule_setup';
update core_resource set data_version='1.6.0.3' where code='salesrule_setup';
update core_resource set version='1.6.0.0.1' where code='reports_setup';
update core_resource set data_version='1.6.0.0.1' where code='reports_setup';
update core_resource set version='1.6.0.0.1' where code='xmlconnect_setup';
update core_resource set data_version='1.6.0.0.1' where code='reports_setup';
drop table if exists oauth_consumer ;
drop table if exists oauth_token ;
drop table if exists oauth_nonce ;
drop table if exists captcha_log;
drop table if exists api2_acl_role;
drop table if exists api2_acl_user;
drop table if exists api2_acl_rule;
drop table if exists api2_acl_attribute;
drop table if exists salesrule_coupon;
drop table if exists salesrule_website;
drop table if exists report_viewed_product_aggregated_daily;
drop table if exists catalog_product_entity_group_price;
drop table if exists tm_core_module;
drop table if exists turnkeye_testimonial;
";
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/locks;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/cache;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/session;
rm maintenance.flag;### fin du mode Maintenance;

Puis lancer votre site/dossier_bis dans votre navigateur 

 http://votreSite.xx/dossier_bis

ça doit être assez long..  

PS : si vous avez des erreurs APACHE/PHP, c’est que le temps d’attente « Time_out » du serveur est trop court, il faut le rallonger par exemple passer le time_out de 60 à 600 (60 secondes à 10 minutes) voir tutoriel optimiser serveur apache ou serveur ngnix plesk.

Votre Mise à jour est presque terminée, le site fonctionne, mais il manque des tables, la ré-indexation ne peut pas s’exécuter.

____________________________________________________

 Corriger la base de données Magento – Réparer l’indexation avec magento-db-repair-tool

nous allons créer une base de référence « fraiche » , le but est d’avoir une base de données sans défaut correspondant à votre installation.

Notez la clé de votre app/etc/local.xml on va en avoir.

Exemple : <key><![CDATA[60251864b2bb517851cf6d0exemple7f6478b3e]]></key>

On va renommer app/etc/local.xml en app/etc/local.xml-avant et re-vider la cache

Le bu est de créer une base de données de référence que l’on va appeler : fraiche

mv -f /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/app/etc/local.xml /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/app/etc/local.xml-avant;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/locks;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/cache;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/session;

Puis lancer-le  dans votre navigateur vous devriez avoir une jolie install fraîche vers la base  « fraiche »   http://votreSite.xx/dossier_bis

-Suivez les écrans comme si vous faisiez une nouvelle installation : En précisant la nouvelle base de donnée « fraiche »

Testez-le vous devriez avoir un joli Magento  neuf  http://votreSite.xx/dossier_bis nous allons pouvoir réparer la base endommagé.

Remettre le local.xml précédant afin que le site ne pointe plus vers la base de référence « fraiche » mais bien vers la base « final » et re-videz la cache.

mv -f /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/app/etc/local.xml /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/app/etc/local.xml-fraiche;
mv -f /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/app/etc/local-avant.xml /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/app/etc/local.xml;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/locks;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/cache;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/session;

 

Correction de la base de données:

Grace à notre base de référence « fraiche » nous allons pouvoir corriger notre base de données.

1-réparer-la-base

1) Télécharger l’utilitaire :  magento-db-repair-tool sur le site de Magento : http://www.magentocommerce.com/download

2) Décompressez-le et télécharger-le dans le dossier_bis de votre serveur

/var/www/Le_Chemin_De_Votre_Dossier/dossier_bis

3) lancer son exécution dans un navigateur :

http://votreSite.xx/dossier_bis/magento-db-repair-tool-1.1.php

Préciser à gauche la base « final »   et à droite la base de référence « Fraiche »

2-réparer-la-base

il indiquera les corrections qui va apporter

3-réparer-la-base

 

Dans mon cas j’ai du supprimer la table `salesrule_coupon`  cette table n’est pas très importante) c’est la des coupons de réductions (elle sera automatiquement re-créer vide .

Soit vous accédez à la base « final » via PhpMyAdmin et vous supprimez la table, soit en ligne de commande :

mysql -h localhost -u username -ppassword final -e "SET foreign_key_checks = 0; drop table if exists salesrule_coupon;";

Puis relancer   magento-db-repair-tool dans un navigateur :

http://votreSite.xx/dossier_bis/magento-db-repair-tool-1.1.php

Toujour aussi important : vider la cache et lancer la re-indexation 

cd  /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/locks;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/cache;
rm -f -R /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/var/session;
php shell/indexer.php reindexall;

Après cela : la mise a jour est opérationnelle

 

____________________________________________________

 

il est possible de supprimer et d’installer des extensions aussi en ligne de commandes :

Exemple  avec l’extension Magoch__QuickInform

cd /var/www/Le_Chemin_De_Votre_Dossier/dossier_bis/

chmod -R 777 . ;
./mage clear-cache;
./mage mage-setup . 
./mage sync --force 
./mage list-upgrades ;
#installation 
./mage install connect20.magentocommerce.com/community Magoch__QuickInform
#desinstallation
./mage install connect20.magentocommerce.com/community Magoch__QuickInform

 

Solution: impossible de ré-index Magento !

Votre magento ne veut plus re-indexer ! Pas de panique, voici les points à vérifier :

– avez vous purger le dossier locks ?

C’est lui qui peut bloquer la ré-indexation connectez vous a votre serveur avec putty par exemple, acéder au dossier de votre magento, et lancer la commande de re-indexation :

cd /var/www/vhost/VotreSiteWeb/Magento/
rm -R /var/locks

– Les paramètres du serveur sont-ils correct ? En grossissant la base mysql à besoin de ressource,  si les paramètres php sont d’origines : time_out sont à 60 et limit_ memory a 64/128Mo, etc.. il faut les modifier. voir ce tutoriel ►ici◄

PS : »nul besoin de prendre un serveur plus gros, un serveur puissant mal réglé fera la même chose »

– Avez vous essayé en SSH dans un terminal ?

La re-indexation sera plus rapide et s’il y a une erreur vous aurez un message précis. connectez vous a votre serveur avec putty par exemple, acéder au dossier de votre magento, et lancer la commande de re-indexation :

cd /var/www/vhost/VotreSiteWeb/Magento/
rm -R /var/locks; rm -R /var/cache;
php shell/indexer.php reindexall;

Si des messages d’erreurs apparaissent :

Exemple : exception ‘PDOException’ with message ‘SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn’t match value count at row 1’ 

C’est que la base de données à subit des dommages il va falloir la réparer: il faut utiliser Magento-db-repair-tool-1.1

– voir tutoriel réparer magento avec Magento-db-repair-tool

Extension Magento matrix-rates : Gérer les frais de transport

L’extension Matrix-rates permet de définir facilement les frais de transport, selon le poids ou le prix, la destination, le transporteur très facilement. voici un petit tutoriel, pour vous aider a l’installer :

 

1) installer l’application via Magento connect

A télécharger soit :

– Directement dans Magento ici : http://www.magentocommerce.com/magento-connect/webshopapps-matrixrate-1-multiple-table-rates-extension.html

– Ou le site de l’éditeur ici :   http://www.webshopapps.com/eu/free/matrixrate-shipping-extension.html

 

2) Activer l’extension

Vider la cacher, quittez puis re-entrer dans le Back Office de Magento

le menu de l’extension se trouve dans ►Configuration► Modes de livraison ► Webshoapps Matrix Rates

3) Créer un fichier CVS

Contenant  le descriptif de vos choix et cout de transport  sous cette forme :

"Country","Region/State","Zip/Postal Code","Weight from", "Weight to","Shipping Price","Delivery Type"

Country = Code Pays de 3 caractères, voir : http://fr.wikipedia.org/wiki/Liste_des_codes_pays ou *  = TOUS

Par exemple  :

France, toutes régions =    « FRA », »* »,

Autre exemple  : France, toute région, tout département, pour un achat de 0 à 100€, le port est de 7€, en Colissimo  :

« FRA », »* », »* », »0″, »100″, »7″, « Colissimo »

 

Voici exemple plus complet:

"Country","Region/State","Zip/Postal Code","Weight from", "Weight to","Shipping Price","Delivery Type"
"GBR","*","*","0","5","2.99","1st Class Recorded"
"GBR","*","*","0","32","7.99","ParcelForce 24-48"
"GBR","*","*","32","1000","80.00","Special Pallet Delivery"
"GBR","*","*","2000","2100","0","Collection Only"
"GBR","*","BT","0","5","11.99","1st Class Recorded"
"GBR","*","BT","0","32","14.99","ParcelForce 24-48"
"GBR","*","BT","0","1000","200","Special Pallet Delivery"
"IRL","*","*","0","5","17.99","1st Class Recorded"
"IRL","*","*","0","32","17.99","ParcelForce 24-48"
"*","*","*","0","100","50","shipping Worldwide" 
"*","*","*","100","700","100","shipping Worldwide 100% insurance" 
"*","*","*","700","1500","150","shipping Worldwide 100% insurance"
"*","*","*","1500","999999","250","shipping Worldwide 100% insurance"
"FRA","*","*","1","150","15","Colissimo suivi"
"FRA","*","*","150","500","25","Colissimo suivi"
"FRA","*","*","500","99999","30","Colissimo suivi"
"FRA","*","*","0","500","30","Chronopost + 100% Assurance"
"FRA","*","*","500","9999","39","Chronopost + 100% Assurance"
"FRA","*","*","10000","999999","0","Transport Gratuit !"
"BEL","*","*","150","500","40","Chronopost International + 100% Assurance (Belgique)"
"BEL","*","*","500","99999","49","Chronopost International + 100% Assurance (Belgique)"
"USA","*","*",0,99.99,40,"International"
"USA","*","*",100,199.99,30,"International"
"USA","*","*",200,249.99,40,"International"
"USA","*","*",250,299.9999,50,"shipping Worldwide 100% insurance"
"USA","*","*",10000,999999,0,"Free Shipping - Transport gratuit"

 

 3) Uploader le fichier dans Magento

il suffit de cliquer sur le bouton BROWSE…

Piège ! le bouton « Browse »  n’apparaît pas tant que vous n’êtes pas sur la vue « Main Website » , sélecteur en haut à gauche dans Magento.

 

Aidehttps://sites.google.com/a/webshopapps.com/webshopapps-wiki/extensions/matrix-rates/examples

 

4) Modifier directement dans la base de données :

Pour les utilisateurs chevronners vous pouvez directement modifier en ligne via PHPMYADMIN

la table est :  shipping_matrixrate :  * est remplacé par un 0  (zéro)

Capture-exemple

[EDIT] Dans la dernière version il y a un bouton Export CSV qui évite de modifier la base de données.

Extension Magento : mise en page & agencement des blocs dans les colonnes.

Easy CMS : Cette petite extension simple et très pratique permet de créer un bloc ou vous voulez

il suffit de créer des blocs avec ces identifiants :

EASY CMS Contenu du haut identifiant :    content-top
EASY CMS bas de page     identifiant :    page-bottom
EASY CMS cadre en bas gauche    identifiant :    sidebar-left-bottom
EASY CMS cadre en haut gauche    identifiant :    sidebar-left-top
EASY CMS cadre en haut droit    identifiant :    sidebar-right-top
Easy CMS Menu en bas     identifiant :    menu-bottom
Easy CMS Menu en haut     identifiant :    menu-top
Easy CMS cadre en bas droit    identifiant :    sidebar-right-bottom

Extension ici : http://www.magentocommerce.com/magento-connect/easy-cms-block-free-version.html

Extension Magento : Créer une page avec toutes les promotions en cours.

Cette petite extension est simple et pratique.

source : http://www.magentocommerce.com/magento-connect/catalog-sale-items.html

elle va créer une page /catalogsale  exemple : http://monsite.fr/magento/catelogsale

vous pouvez personnaliser cette page e modifiant le fichier xlm ici :

/app/design/frontend/base/default/layout/catalogsale.xml