Optimiser votre serveur Magento, votre hébergement pour Magento – PHP.ini – my.cnt – Nginx.cong

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.0Si 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 :

 


, , , , , , , , , , , , , , , , , , , , , ,

  1. #1 par Gaël le 13 mai 2013 - 01:20

    C’est vraiment du pur tutoriel !
    Suivi à la lettre et aucun bug, aucune mauvaise surprise ! sauvé !!
    Mille fois merci pour ce travail comme on en trouve rarement sur le net !

  2. #2 par Jérémy le 17 septembre 2013 - 13:23

    Super tutoriel! Par contre pour la partie applicative de votre projet je conseil aussi d’optimiser tous les load d’entité ou collection de vos produits, customer et commandes. Dans beaucoup de cas les données que l’on cherche à afficher sont déjà en mémoire dans Magento (via le registre ou autre), vaut mieux éviter de les recharger inutilement (un article existe à ce sujet : http://www.nicolas-verhoye.com/magento-charger-collection-registre-efficacite.html)

  3. #3 par Johann le 21 mai 2014 - 03:33

    Super article, nous allons y faire référence dans notre base de connaissances pour nos hébergés utilisant Magento… nos offres mutualisés vont de 128 à 512 Mo

  1. Serveur idéal pour Magento de A à Z (sous Ubuntu 10.04 + Plesk OVH) | Eric Kranich
  2. Déplacer – Copier Magento vers un autre Domaine ou Dossier | Eric Kranich
  3. Méthode pour réparer une Mise à jour Magento qui à planté | Eric Kranich

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :