Archives pour la catégorie Optimiser Magento

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

 

Publicités

Exemple de my.cnf pour Magento 1.6 / 1.7 & 1.8

### LE 26/11/2013
### /etc/mysql/my.cnf   pour Magento sur serveur dédié Ubuntu + Plesk 11.5 

 [client]
 port = 3306
 socket = /var/run/mysqld/mysqld.sock
# Here is entries for some specific programs
# This was formally known as [safe_mysqld]. 
 [mysqld_safe]
 socket = /var/run/mysqld/mysqld.sock
 nice = 0
[mysqld]
 local-infile=0
 # * IMPORTANT
 # adjust /etc/apparmor.d/usr.sbin.mysqld.

user = mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp

###########################################################################
##### POUR AUTORISER L ACCES A LA BASE MYSQL DEPUIS UN AUTRE SERVEUR  #####
###########################################################################
# 1)
###### Cette ligne empèche l'accès a la Base Mysql depuis un autre serveur
###### Mettre un "#" devant = #skip-external-locking #pour autoriser l acces 
skip-external-locking
# 2)
######## d'origine pour LOCALHOST = bind-address = 127.0.0.1
########  NE FONCTIONNE PAS AVEC IP FAILOVER
######## bind-address = 127.0.0.1 
######## *** REMPLACE PAR L ADRESSE DU SERVEUR bind-address = 176.31.***.***
bind-address = 127.0.0.1
###########################################################################
#
# * Fine Tuning
#
# eric --- original etait a  16M
 key_buffer = 32M
# eric --- original etait a  16M
 max_allowed_packet = 32M
 thread_stack = 192K
 thread_cache_size = 8
 # This replaces the startup script and checks MyISAM tables if needed
 # the first time they are touched
 myisam-recover = BACKUP
 #max_connections = 100
 #table_cache = 64
 #thread_concurrency = 10
 #
 # * Query Cache Configuration
 #
 # eric --- original etait   1M
 query_cache_limit = 2M
 # eric --- original etait   16M
 query_cache_size = 64M
 #
####### Ajouter ###################################
 table_cache = 1024
 # 2x le nombre de cores CPU innodb_thread_concurrency = 8
 innodb_thread_concurrency = 8
 innodb_flush_log_at_trx_commit = 0 #(safe vs speed, 0 speed, 1 safe, 2 mixed)
 innodb_log_buffer_size = 32M
# 66% de la mémoire disponible # (3 Go sur un serveur web 8 Go de RAM )

# ceci est important trop de mémoire innodb_buffer peut generer une erreur Magento
# EXEMPLE.. SQLSTATE[4200]: Syntax error or access violation: 1286 Unknown table engine 'InnoDB'
# (1024M sur un site web 4 Go de RAM)

 innodb_buffer_pool_size = 4096M
 innodb_additional_mem_pool_size = 32M
 ######## fin de l'ajout ###############################
################################################
 # * Logging and Replication
 #
 # Both location gets rotated by the cronjob.
 # Be aware that this log type is a performance killer.
 # As of 5.1 you can enable the log at runtime!
 #general_log_file = /var/log/mysql/mysql.log
 #general_log = 1
log_error = /var/log/mysql/error.log
# Here you can see queries with especially long duration
 #log_slow_queries = /var/log/mysql/mysql-slow.log
 #long_query_time = 2
 #log-queries-not-using-indexes
 #
 # The following can be used as easy to replay backup logs or for replication.
 # note: if you are setting up a replication slave, see README.Debian about
 # other settings you may need to change.
 #server-id = 1
 #log_bin = /var/log/mysql/mysql-bin.log
 expire_logs_days = 10
 max_binlog_size = 100M
 #binlog_do_db = include_database_name
 #binlog_ignore_db = include_database_name
 #
 # * InnoDB
 #
 # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
 # Read the manual for more InnoDB related options. There are many!
 #
 # * Security Features
 #
 # Read the manual, too, if you want chroot!
 # chroot = /var/lib/mysql/
 #
 # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
 #
 # ssl-ca=/etc/mysql/cacert.pem
 # ssl-cert=/etc/mysql/server-cert.pem
 # ssl-key=/etc/mysql/server-key.pem
[mysqldump]
 quick
 quote-names
 max_allowed_packet = 32M
[mysql]
 #no-auto-rehash # faster start of mysql but no tab completition
[isamchk]
 key_buffer = 32M
#
 # * IMPORTANT: Additional settings that can override those from this file!
 # The files must end with '.cnf', otherwise they'll be ignored.
 #
 !includedir /etc/mysql/conf.d/

Exemple de .htaccess Magento 1.6 / 1.7 & 1.8

### HTACCESS du dossier Magento ### ERIC LE 26 11 2013 Serveur dédier 
RewriteBase /VotreDossierMagento/

#si vous avez plusieurs domaines
#### site1.fr #####
SetEnvIf Host www site1.fr MAGE_RUN_CODE=default
#SetEnvIf Host www. site1.fr MAGE_RUN_TYPE=website #### activer si c'est un Website inutile pour une Vue Magasin
SetEnvIf Host ^site1.fr MAGE_RUN_CODE=default
#SetEnvIf Host ^site1.fr MAGE_RUN_TYPE=website #### activer si c'est un Website inutile pour une Vue Magasin

#### site2.fr ######
SetEnvIf Host www. site2.fr MAGE_RUN_CODE=NomduMagasinDansMagento
#SetEnvIf Host www. site2.fr MAGE_RUN_TYPE=website #### activer si c'est un Website inutile pour une Vue Magasin
SetEnvIf Host ^ site2.fr MAGE_RUN_CODE=NomDuMagasinDansMagento
#SetEnvIf Host ^ site2.fr MAGE_RUN_TYPE=website #### activer si c'est un Website inutile pour une Vue Magasin

#ajout par eric pour l'extension d'acceleration fooman-speedster
RewriteRule ^(index.php/)?minify/([^/]+)(/.*.(js|css))$ lib/minify/m.php?f=$3&d=$2


##### ajout eric ##### bug  apache2 s auto-sature voir log ######
RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
#RewriteRule .* \u2013 [F,L]

############################################
## uncomment these lines for CGI mode
## make sure to specify the correct cgi php binary file name
## it might be /cgi-bin/php-cgi
# Action php5-cgi /cgi-bin/php5-cgi
# AddHandler php5-cgi .php
############################################
## GoDaddy specific options
# Options -MultiViews
## you might also need to add this line to php.ini
## cgi.fix_pathinfo = 1
## if it still doesn't work, rename php.ini to php5.ini
############################################
## this line is specific for 1and1 hosting
#AddType x-mapp-php5 .php
 #AddHandler x-mapp-php5 .php
############################################
## default index file
DirectoryIndex index.php
<IfModule mod_php5.c>
############################################
## adjust memory limit
# php_value memory_limit 64M
 php_value memory_limit 128M
 php_value max_execution_time 18000
############################################
## disable magic quotes for php request vars
php_flag magic_quotes_gpc off
############################################
## disable automatic session start
## before autoload was initialized
php_flag session.auto_start off
############################################
## enable resulting html compression
#php_flag zlib.output_compression on
###########################################
# disable user agent verification to not break multiple image upload
php_flag suhosin.session.cryptua off
###########################################
# turn off compatibility with PHP4 when dealing with objects
php_flag zend.ze1_compatibility_mode Off
</IfModule>
<IfModule mod_security.c>
###########################################
# disable POST processing to not break multiple image upload
SecFilterEngine Off
 SecFilterScanPOST Off
</IfModule>
<IfModule mod_deflate.c>
############################################
## enable apache served files compression
## http://developer.yahoo.com/performance/rules.html#gzip
# Insert filter on all content
 ###SetOutputFilter DEFLATE
 # Insert filter on selected content types only
 #AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
# Netscape 4.x has some problems...
 #BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
 #BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
 #BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
 #SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
 #Header append Vary User-Agent env=!dont-vary
</IfModule>
<IfModule mod_ssl.c>
############################################
## make HTTPS env vars available for CGI mode
SSLOptions StdEnvVars
</IfModule>
<IfModule mod_rewrite.c>
############################################
## enable rewrites
Options +FollowSymLinks
 RewriteEngine on
############################################
## you can put here your magento root folder
## path relative to web root
RewriteBase /shop/

#ajout par eric pour l'extension d'acceleration fooman-speedster
RewriteRule ^(index.php/)?minify/([^/]+)(/.*.(js|css))$ lib/minify/m.php?f=$3&d=$2

############################################
## workaround for HTTP authorization
## in CGI environment
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
############################################
## always send 404 on missing files in these folders
RewriteCond %{REQUEST_URI} !^/(media|skin|js)/
############################################
## never rewrite for existing files, directories and links
RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-l
############################################
## rewrite everything else to index.php
RewriteRule .* index.php [L]
</IfModule>

############################################
## Prevent character encoding issues from server overrides
## If you still have problems, use the second line instead
AddDefaultCharset Off
 #AddDefaultCharset UTF-8
<IfModule mod_expires.c>
############################################
## Add default Expires header
## http://developer.yahoo.com/performance/rules.html#expires
ExpiresDefault "access plus 1 year"
</IfModule>
############################################
## By default allow all access
Order allow,deny
 Allow from all
###########################################
## Deny access to release notes to prevent disclosure of the installed Magento version
<Files RELEASE_NOTES.txt>
 order allow,deny
 deny from all
 </Files>
############################################
## If running in cluster environment, uncomment this
## http://developer.yahoo.com/performance/rules.html#etags
#FileETag none

Purger la cache mémoire RAM d’un Serveur linux.

Dans certains cas il peut être utile de vider la cache en mémoire RAM de votre serveur Linux, ça peut libérer jusqu’à 70% de mémoire Vive.

Pour forcer le noyau à abandonner la page de cache, inode dentry caches sans redémarrage.

Il s’agit d’une opération non-destructive. Dirty objets ne sont pas freeable, par conséquent, vous devez exécuter la synchronisation vers le disque dur au préalable. Pour cela il faut d’abord être sur que toutes les écritures disques en caches soit écritent, avec la commande SYNC

si vous utilisez Ubuntu dans un terminal tapez :

sudo su

Ecriture de la cache disque,  dans un terminal tapez :

sync

Puis on vas purger la pagecache de la  mémoire RAM dans un terminal tapez :

echo "1" > /proc/sys/vm/drop_caches

Puis on vas purger dentries libre et les inodes de la  mémoire RAM dans un terminal tapez :

echo "2" > /proc/sys/vm/drop_caches

Ou on peut aussi puger les deux en même temps :  dans un terminal tapez :

echo "3" > /proc/sys/vm/drop_caches

Enfin remettre drop_caches par default

echo "0" > /proc/sys/vm/drop_caches 

Dernier Etape : Redemarrer les services Mysql et apache2 afin qu’il recréer leurs caches.

service apache2 restart
service mysql restart

Mise en garde: Toutes ces commandes fonctionnent uniquement en mode root

___________________________________________________________

Voici un script pour Purger la Cache Ram du Serveur

J’ai fait un tutoriel sur  le Script :

Avec un éditeur tapez :

#!/bin/bash
#!/bin/sh # La première ligne sert à spécifier quel shell tu veux excéuter. ici sh 

# Notice : pour executer un script il faut
# 1) changer ses droits pour devenir executable:  chmod 777 NomDuScrip.sh
# 2) puis l'executer : ./NomDuScrip.sh

##################################################
### Script de purge du cache de la mémoire RAM ###
##################################################

echo "sync : Ecrit la cache disque en cours"
sync
echo "ok"
echo "Vidage du cache de la memoire RAM niveau 3"
echo "3" > /proc/sys/vm/drop_caches
echo "Pause de 1 seconde"
sleep 1
echo "sync : re-ecrit la cache disque en cours (+ par sécurité, pas indispensable)"
sync
echo "action cache remis par defaut"
echo "0" > /proc/sys/vm/drop_caches
echo "Vidage du cache terminée."
echo "redemarre les services mysql pour recréer la cache c'est conseillé"
service mysql restart
echo "redemarre les services apache2 pour recréer la cache c'est conseillé"
service apache2 --full-restart
echo "******* Terminée ********"

Enregistrez-le sous le nom : PurgeRam.sh

Donnez les droits a l’execution du script dans un terminal

chmod 777 PurgeRam.sh

vous pouvez l’exécuter ou l’ajouter aux tâches planifiées.

__________________________________________________

Créer une tâche Planifiée vers 4H50 du matin

  • Démarrez Tâche Planifiées > Applications > Outils système > Tâches Planifiées
  • Cliquez sur Nouveau
  • Cliquez sur Une tâche lancée régulièrement
  • Saisissez une Description “Ma sauvegarde”
  • Commande : Précisez votre Script ou la ligne de commande :  ./Chemin/du/scrip/PurgeRam.sh
  • Expert saisissez : Minute 0 – Heure 7 – jour * – Mois * – jour de la semaine * = à 4H50 tous les jours
  • Ajouter et Valider
  • Voila Gnome-schedule a inséré pour vous la ligne cron
    50 4 * * * ./chemin/PurgeRam.sh

Vous pouvez Cliquez sur  Lance la tache Sélectionner + “Exécuter” pour tester la tache.

___________________________________________________________________

Ou  avec crontab  (Planificateur de tâche en ligne de commande )

(sans gnome-schedule), tapez :
crontab -e
insérez : 50 4 * * * ./chemin/PurgeRam.sh

Explication des instructions crontab sur wikipedia

 j’ai fait un tutoriel sur les taches Planifiées ici

Supprimer Vider la cache /VotreMagento/var/cache

Après certaines modifications dans magento, changer de dossier, de nom de base etc.. il est indispensable de vider la cache ! Sans cela votre site va garder les anciens paramètre en mémoire.

Plusieurs solutions selon les cas :

  • supprimer avec fileZilla en n’oubliant pas de cochez Afficher les fichiers cachés du serveurs sans cela il va vous manquer des fichier. (Solution Lente)
  • Utilisez magento-cleanup.hph

A télécharger ici : http://www.magentocommerce.com/wiki/_media/groups/227/magento-cleanup2.zip

Dans le dossier de votre magento, puis exécutez le depuis un Navigateur http://www.VotreSite.xx/votredossierMagento/magento-cleanup.php

  • En Ligne de Commande dans un terminal ou avec putty.exe (solution Ultra Rapide) avec la commande« rm – r  » Attention ne vous trompez pas vous pourriez tous supprimer sur votre serveur !

rm -r  -f /var/www/vhosts/VotreSiteInternet/httpdocs/VotredossierMagento/var/cache
rm -r  -f /var/www/vhosts/VotreSiteInternet/httpdocs/VotredossierMagento/var/session

Ou bien: (c’est pareil)

cd var/www/vhosts/VotreSiteInternet/httpdocs
rm -r -f VotreMagento/var/cache
rm -r -f VotreMagento/var/session

Ou bien :

  • Si votre serveur est accessible avec FreeNx
  • Sélectionnez  dans le dossier magento/var/cache et /session
  • Supprimez-les

 

_______________________________________________________

voir aussi le tutoriel pour : Script pour garder en pleine forme Magento.

 

Script pour garder en pleine forme Magento.

Script pour garder en pleine forme Magento.

Avec un éditeur de texte nous allons créer un fichier script.sh,

Il doit impérativement commencer par : #!/bin/sh

Nous allons y mettre tout ce que votre serveur Magento a besoin de faire régulièrement.

  • Nettoyer les log de la base de données régulièrement
  • Exécuter la tache Cron.sh de Magento
  • Vider la corbeille du serveur
  • Vider dossier cache et session*
  • Redémarrer les Services apache
  • Redémarrer les Services Mysql
* Mise en garde : vider les sessions a pour effet de vider les paniers en cours et déconnecte les utilisateurs en cours.

_______________________________________________________

 Nettoyer les log de la base de données régulièrement

1) Créer un fichier est les instructions Mysql pour vider les table de Log

Créer avec un éditeur un fichier texte , nommez -le : Vider_table_log.mysql

DELETE FROM dataflow_batch_export;
DELETE FROM dataflow_batch_import;
DELETE FROM log_customer;
DELETE FROM log_quote;
DELETE FROM log_summary;
DELETE FROM log_summary_type;
DELETE FROM log_url;
DELETE FROM log_url_info;
DELETE FROM log_visitor;
DELETE FROM log_visitor_info;
DELETE FROM log_visitor_online;
DELETE FROM report_viewed_product_index;
DELETE FROM report_compared_product_index;
DELETE FROM report_event;

Enregistrez les dans votre dossier /magento/shell/

2) On va créer le Script de purge :

#!/bin/sh
# La première ligne sert à spécifier quel shell tu veux excéuter. ici sh
# pour executer un script il faut
# 1) changer c'est droit pour devenir executable:  chmod +x NomDuScrip.sh
# 2) puis l'executer : ./NomDuScrip.sh

############################################################
#### ETAPE 1 Nettoyer les log de la base de données ###########
############################################################

#### Connexion a votre Base de Données Magento Mysql ####
##### mysql -h machine -u utilisateur -pMotdePase base_de_données
##  Exemples :
##  mysql -h localhost -u User161 -p35hpzq.. Base161
##  mysql -h 17.31.2.67 -u User161 -p35hpzq.. Base161
## vous pouvez tester dans un terminal, Si vous ête connecté il doit apparaitre :  Mysql>
##  Modifier ci-dessous pour mettre vos paramètre

mysql -h localhost -u User161 -p35hpzq.. Base161 < /magento/shell/Vider_table_log.mysql 
echo "si vous n'avez vu aucun message d'erreur la base est purgé :)"

#########################################################
#### ETAPE 2 Exécuter la tache Cron.sh de Magento #######
#########################################################
/var/www/vhosts/VotreSite.fr/httpdocs/DossierMagento/cron.sh

#########################################################
#### ETAPE 3 Vider la corbeille du serveur ################
#########################################################
rm -r -f /var/.Trash-0/

#########################################################
#### ETAPE 4 Vider cache et session #######################
#########################################################
rm -r  -f /var/www/vhosts/VotreSiteInternet/httpdocs/VotredossierMagento/var/cache

# Attention cette ligne va également vider les panier en cours et déconnecter les utilisateurs
rm -r  -f /var/www/vhosts/VotreSiteInternet/httpdocs/VotredossierMagento/var/session

#########################################################
#### ETAPE 5 Redémarrer les Services apache #############
#########################################################
service apache2 restart

#########################################################
#### ETAPE 6 Redémarrer les Services mysql ##############
#########################################################
service mysql restart

3) Exécuter :

  • Enregistrer le fichier dans un  dossier de votre Serveur, par exemple
     /var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh
  • Ajouter le Droit de l’exécuter :
    chmod +x /var/MesSauvegarde/sauvegarde.sh
  • Pour l’exécuter il vous reste plus qu’a taper :
    ./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh

______________________________________________________

Vous n’avez plus qu’a insérer ce petit script dans un tâche Planifiée avec Cron ou Gmone-schedule


Créer une tâche Planifiée

  • Démarrez Tâche Planifiées > Applications > Outils système > Tâches Planifiées
  • Cliquez sur Nouveau
  • Cliquez sur Une tâche lancée régulièrement
  • Saisissez une Description “Script Magento en pleine forme”
  • Commande : Précisez votre Script ou la ligne de commande :  ./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh
  • Expert saisissez : Minute 0 – Heure 7 – jour * – Mois * – jour de la semaine * = à 7H00 tous les jours
  • Ajouter et Valider
  • Voila Gnome-schedule a inséré pour vous la ligne cron
    0 7 * * * ./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh

Vous pouvez Cliquez sur  Lance la tache Sélectionner + “Exécuter” pour tester la tache.

___________________________________________________________________

Ou  avec crontab  (Planificateur de tâche en ligne de commande )

(sans gnome-schedule), tapez :
crontab -e
insérez : 0 7 * * * ./var/vhosts/VotreSite.fr/httpdocs/VotreMAgento/shell/Script_pour_pourger_logs.sh

Explication des instructions crontab sur wikipedia


 j’ai fait un tutoriel sur les taches Planifiées ici

_______________________________________________________

On peut aussi ajouter:

  • Sauvegarder la base de Magento
  • Compresser cette sauvegarde
  • Copier cette Sauvegarde vers un autre dossier

Voir tutoriel Créer une sauvegarde Mysql Magento en ligne de commande ici

Lancer en Cron.php ou Cron.sh de Magento et Planifier

1) En ligne de commande à Planifier:

l’interet de la ligne de commande c’est :

  • C’est très facile
  • C’est très rapide
  • Vous pouvez l’ajouter dans les taches planifiées (cron)
php -f /var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/cron.phplog.php clean

ou bien : 

/var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/cron.sh

3) Taches Planifiées avec gnome-schedule

  • Démarrez Tâche Planifiées > Applications > Outils système > Tâches Planifiées
  • Cliquez sur Nouveau
  • Cliquez sur Une tâche lancée régulièrement
  • Saisissez une Description « Ma sauvegarde du Lundi »
  • Commande : Précisez votre la ligne de commande :
    ./var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/cron.sh
  • Expert saisissez : Minute 10 – Heure 6 – jour * – Mois * – jour de la semaine 1 = à 6H10 tous les lundi
  • Ajouter et Valider

Vous pouvez Cliquez sur  Lance la tache Sélectionner + « Exécuter » pour tester la tache.

________________________________

3 Bis ) Ou créer une tâche Planifiée avec crontab

Planificateur de tâche en ligne de commande

(sans gnome-schedule), tapez :
crontab -e
insérez : 10 6 * * * ./var/www/vhosts/VoteSiteWeb/httpdocs/VotreDossierMagento/cron.sh

Explication des instructions crontab sur wikipedia