Les sujets qui vont êtres abordés :
- .htaccess
- php.ini
- php_admin_value memory_limit,
- php_value max_execution_time
- my.cnf
.htaccess conseillé pour Magento :
Voici un .htaccess optimisé pour Magento,
RewriteBase /VotreDossierMagento/
# memory_limit Mini conseillé 64M
php_value memory_limit 128M
php_value max_execution_time 18000
# Facultatif : pour Activer la compression gain de 30%
<IfModule mod_deflate.c>
php_flag zlib.output_compression on
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascrip
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
</IfModule>
inutile depuis fooman-speedster > 2.0, Si vous avec installez l’extention : fooman-speedster < 1.2 ajouter dans le .htacces
#Si vous utilisez l'extension d'acceleration fooman-speedster RewriteRule ^(index.php/)?minify/([^/]+)(/.*.(js|css))$ lib/minify/m.php?f=$3&d=$2
Php.ini
c’est le fichier d’initialisation (réglage) de votre php, c’est donc un fichier important.
Il peut être paramétré à 3 endroits, c’est le dernier qui l’emporte, plafonné par les restrictions des précédents:
- Le premier c’est celui du serveur donc générale, valable pour tout les sites hébergés sur le serveur.
- Sur un serveur avec Plesk 11 il se trouve ici : opt/psa/admin/conf/php.ini)
Edit le 1/07/2014 :
-
Sur un serveur avec Plesk 12 il se trouve ici : etc/php5/apache2/php.ini et etc/php5/apache2/cgi/php.ini
- Le second c’est celui de votre site, il n’est valable que dans votre site, il est prioritaire à celui du serveur dans la limite autorisé par le premier ( domaine d’un serveur avec Plesk il est ici : var/www/vhosts/VotreSite/conf)
- Le Troisième c’est celui de chaque dossier dans le .htaccess (pour le voir pensez a afficher les fichiers cachés) . il est prioritaire à celui du premier (serveur), et du Second (domaine) dans la limite autorisé par le premier comme le Second.
Exemples d’erreurs fréquentes :
1) Dans le .htaccess de votre dossier Magento vous mettez :
php_admin_value memory_limit 256M
ça ne sert a rien si votre Serveur limite à 128M et votre Domaine limite à 64M, votre Limite est de 64M.
2) Autre erreur :
Vous modifiez le premier ../conf/php.ini, = 256M, mais laissez les deux autres d’origines (var/www/vhosts/VotreSite/conf, et celui dans .htaccess), ça ne sert a rien aussi, si dans le .htaccess la ligne limite est à 32M, c’est lui qui sera pris en compte 🙂
php.ini du Serveur: php_admin_value memory_limit 256M
Ligne dans .htacces: php_admin_value memory_limit 32M
Maintenant que savez ça, nous allons pourvoir paramétrer PHP pour Magento correctement .
php_admin_value memory_limit
Magento recommande 64M, c’est la valeur pas défaut dans le .htacces, vous pouvez toujours mettre un peu plus 128M voir 256M (toujours dans la limite de Php.ini du serveur)
Selon les cas :
- Hébergement Mutualité : Mettre dans .htacces de votre dossier Magento (demandez à votre Hebergeur le Maxi autorisé possible)
.htacces :
php_admin_value memory_limit = 128M
- Serveur Dédié avec Plesk : Si vous avez un serveur puissant dans .htaccess commentez la ligne # (# = désactiver la ligne), et paramétrez directement le domaine ou le Serveur,
1) dans .htaccess du dossier Magento
#ligne commenté car j'utilise le paramêtre dans Plesk
#php_admin_value memory_limit = 64M
2) Dans Plesk > Domaines > VotreNomDomaine > Personnalisé > Paramètre PHP >
memory_limit Saisissez
- -1 comme illimité (serveur 16Go ou +)
- 256 Mo pour Serveur avec 8Go de Ram
- 128 Mo pour Serveur avec 4Go de Ram
- 64 Mo pour un serveur de 2Go de ram
-Redémarrez Le service Apache ou le Serveur pour prendre en compte les Modifications
Attention : Mettre -1 illimité comporte des risques : Si un Script, une tache Cron part en vrille, elle peut consommer toute la mémoire de votre Serveur, donc celui-ci va planter, utiliser -1 que si vous êtes sûr 100%, surveillez-la charge de votre serveur, si non mettez 256Mo c’est largement suffisant.
php_value max_execution_time
Magento recommande 18000, c’est la valeur pas défaut dans le .htacces, vous pouvez toujours mettre un peu plus 180000 (toujours dans la limite de Php.ini du serveur)
php_value max_execution_time 180000
# ou désactivé la si vous utilisez les paramètres dans Plesk
#php_value max_execution_time 180000
- Serveur Dédié avec Plesk : Si vous avez un serveur puissant (dans .htaccess commentez la ligne # (# = désactiver la ligne), et paramétrer directement le domaine ou le Serveur, vous pouvez mettre « 1800000 »
-Redémarrez Le service Apache ou le Serveur pour prendre en compte les Modifications
Paramétrage de PHP.ini
Conseillé pour Magento : opt/psa/admin/conf/php.ini
Modifier
- memory_limit = 512M (256M si serveur 8Go, 128M si serveur 4go)
- max_execution_time = 18000
- max_input_time = 1200
- output_buffering = 4096
Facultatif Ajouter
- default_socket_timeout = 1800000
- pdo_mysql.cache_size = 2000
- mysql.allow_persistent = On
- mysql.connect_timeout = 1500 (edit le 01/07/2014)
Ou Vous pouvez aussi saisir directement dans Plesk > Domaines > VotreNomDomaine > Personnalisé > Paramètre PHP >
-Redémarrez Le service Apache ou le Serveur pour prendre en compte les Modifications
Pensez a Désactivé ces paramètres dans .Htaccess de Magento si elle existe pas #
Optimiser Mysql / Magento dans my.cnf
my.cnf, : c’est le fichier de configuration de la base Mysql , sur un serveur avec Plesk il est ici : /etc/mysql/my.cnf
Selon les Cas :
Serveur avec de 4 à 8Go
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
query_cache_limit = 1M
query_cache_size = 24M
table_cache = 1024
Serveur avec 16Go avec 4x Core
key_buffer = 32M
max_allowed_packet = 32M
thread_stack = 192K
query_cache_limit = 2M
query_cache_size = 64M
####### Facultatif Ajouter ######
table_cache = 1024
# 2x le nombre de cores CPU innodb_thread_concurrency = 8
innodb_thread_concurrency = 8
#(safe vs speed, 0 speed, 1 safe, 2 mixed)
innodb_flush_log_at_trx_commit = 0
innodb_log_buffer_size = 32M
# 66% de la mémoire disponible # (3 Go sur un serveur web 8 Go de RAM ) # (1024M sur un site web 4 Go de RAM
innodb_buffer_pool_size = 4096M
innodb_additional_mem_pool_size = 32M
######## fin de l'ajout #######
Pensez a redémarrer le Service Mysql pour prendre en compte les modifications.
–
Serveur NGINX
Si votre serveur utilise NGINX pour éviter des time_out au bout d’une minutes :
Par default le time_out est à 60 (60 secondes ) voici ma moficiation
Créer un fichier « mon_nginx » dans le dossier /etc/nginx.conf/ contenant :
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 6008;
## ne pas mettre autre chose + utilisera de la mémoire pour rien.
fastcgi_buffers 8 256k;
fastcgi_buffer_size 512k;
Pensez a redémarrer les services nginx pour prendre en compte les modifications :