GoldZone Web Hosting

Rédigé par Gaëtan Trellu (goldyfruit)

Outils pour utilisateurs

Outils du site


installation_et_configuration_du_systeme_de_cache_eaccelerator

Installation et configuration du système de cache eAccelerator.

eAccelerator est un système de cache d'op-codes. Euh mais un op-code c'est quoi ? 8-o

Op-code signifie “opération-code”. A l'issue d'une compilation, le code PHP est transformé en listes d'instructions élémentaires destinées à être exécutées. Ces listes d'instructions sont précisément appelées “tableaux d'op-codes”. En d'autres termes, les op-codes sont un intermédiaire entre le code PHP que nous connaissons et les instructions du processeur, bien que plus proches des instructions processeur que du code PHP original.

Source : Magazine Programmez N°92 (Décembre 2006).

Introduction.

L'utilisation d'un système de cache va optimiser des étapes redondantes telles que le parsing ou la compilation de vos scripts PHP.
La mise en cache permet de produire des tableaux d'op-codes identiques jusqu'à modification de votre script, ces tableaux seront stockés dans la mémoire vive ou sur le disque dur et seront appelés lors de la seconde exécution de votre script.

En général l'utilisation d'un système de cache augmente de 3 à 4 fois la vitesse d'exécution de vos scripts, cependant ne pensez pas que ce genre de pratique réglera tous vos problèmes car un script mal écrit le restera toujours même avec un système de cache.

eAccelerator est basé sur l'extension MMCache.

Installation.

Il n'y a pas encore de paquet pour la version 5 de PHP, nous allons donc travailler à partir des sources.
L'installation est assez simple rassurez-vous. ;)

Afin de pouvoir compiler eAccelerator nous allons avoir besoin des paquets “php5-dev” et “make” qui contiennent les outils nécessaires, notamment phpize.
Une petite vérification de sa présence sur le dépôt.

# aptitude show php5-dev

Résultat :

16:28 root@serveur ~# aptitude show php5-dev
Paquet : php5-dev
Nouveau: oui
État: installé
Automatiquement installé: non
Version : 5.2.1-0.dotdeb.1
Priorité : optionnel
Section : devel
Responsable : Guillaume Plessis <gui@php.net>
Taille décompressée : 3113k
Dépend: autoconf, automake1.4, libssl-dev, libtool, shtool, php5-common (>= 5.2.1-0.dotdeb.1)
Description : Files for PHP5 module development
 This package provides the files from the PHP5 source needed for compiling additional modules.

 PHP5 is an HTML-embedded scripting language. Much of its syntax is borrowed from C, Java and Perl with a couple of
 unique PHP-specific features thrown in. The goal of the language is to allow web developers to write dynamically
 generated pages quickly.

Installation des paquets.

# aptitude install php5-dev make

Une fois le paquet installé, nous allons passer au téléchargement des sources d'eAccelerator pour l'installer, actuellement la version du programme est 0.9.5.3.

# cd /usr/src/
# wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2

Une fois les sources téléchargées on les décompresse (le paquet bzip2 est nécessaire pour décompresser un .bz2).

# tar xvjf eaccelerator-0.9.5.3.tar.bz2

Nous obtenons un répertoire eaccelerator-0.9.5.3, plaçons-nous dedans et commençons l'installation.
phpize va générer les fichiers nécessaires à la compilation.

# /usr/bin/phpize

Résultat :

16:37 root@serveur /usr/src/eaccelerator-0.9.5.3# /usr/bin/phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519

Une fois le fichier configure généré nous pouvons passer à la configuration de la compile, toujours dans le même répertoire.

# ./configure --enable-eaccelerator=shared --with-eaccelerator-sessions --with-eaccelerator-optimizer --with-eaccelerator-info --with-php-config=/usr/bin/php-config

Depuis la version 0.9.5 la prise en charge des sessions n'est plus automatique, nous avons donc ajouté l'option –with-eaccelerator-sessions.

Si vous utilisez la version 0.9.6-rc1 la ligne de configuration n'est pas la même.
L'optimizer et les sessions ayant été supprimés il est donc nécessaire de modifier notre configure.

# ./configure --enable-eaccelerator=shared --with-eaccelerator-info --with-php-config=/usr/bin/php-config

Avec la version 5.3.2 de PHP il est nécessaire d'ajouter un paramètre au ./configure, ce dernier évite d'avoir une erreur avec la directive open_basedir !

# ./configure --enable-eaccelerator=shared --with-eaccelerator-info --with-php-config=/usr/bin/php-config --without-eaccelerator-use-inode

Une fois le configure terminé nous pouvons passer à la compilation en elle même.

# make
# make install

Le make install devrait vous retourner ceci :

16:45 root@serveur /usr/src/eaccelerator-0.9.5.3# make install
Installing shared extensions:     /usr/lib/php5/20060613/

Si tel est le cas alors eAccelerator est maintenant installé sur votre serveur.

Configuration.

La configuration est quand à elle un peu plus complexe car une mauvaise configuration peut contrairement à l'effet espéré dégrader les performances !
Tout se passe dans le fichier de configuration de PHP à savoir php.ini qui se trouve dans /etc/php5/apache2/, ouvrez-le puis ajoutez-y ceci à la fin :

extension="eaccelerator.so"
eaccelerator.shm_size           = "32"
eaccelerator.cache_dir          = "/var/www/eaccelerator"
eaccelerator.enable             = "1"
eaccelerator.optimizer          = "1"
eaccelerator.check_mtime        = "1"
eaccelerator.debug              = "0"
eaccelerator.filter             = ""
eaccelerator.shm_max            = "1M"
eaccelerator.shm_ttl            = "0"
eaccelerator.shm_prune_period   = "0"
eaccelerator.shm_only           = "0"
eaccelerator.compress           = "1"
eaccelerator.compress_level     = "9"
eaccelerator.keys               = "shm_and_disk"
eaccelerator.sessions           = "shm_and_disk"
eaccelerator.content            = "shm_and_disk"
eaccelerator.allowed_admin_path = "/var/www/"
eaccelerator.log_file           = "/var/log/apache2/eaccelerator.log"

Maintenant on créé le répertoire qui accueillera le contenu du cache.

# mkdir /var/www/eaccelerator
# chown www-data:www-data /var/www/eaccelerator
# chmod 755 /var/www/eaccelerator

Explications :

  • extension=“eaccelerator.so” déclare l'ajout de la librairie à PHP, si cette ligne est commentée eAccelerator ne sera pas lancé.
  • eaccelerator.shm_size = “32” détermine le total de mémoire en méga que eAccelerator peut utiliser.
  • eaccelerator.cache_dir = ”/var/www/eaccelerator” indique le répertoire contenant le cache.
  • eaccelerator.enable = “1” active le système de cache, 0 désactive eAccelerator.
  • eaccelerator.optimizer = “1” active l'optimizer interne, 0 le désactive.
  • eaccelerator.check_mtime = “1” permet de vérifier les fichiers PHP modifiés et ainsi les mettre de nouveau en cache avec les modifications effectuées.
  • eaccelerator.filter = ”“ indique le type de fichier qui devront être mis en cache, exemple “*.php *.phps *.phtml”.
  • eaccelerator.debug = “0” désactive le mode debug.
  • eaccelerator.shm_max = “1M” interdit la mise en mémoire partagé des fichiers supérieurs à 1Mo.
  • eaccelerator.shm_ttl = “0” ne supprime aucun fichier qui n'a pas eu accès à la mémoire partagé.
  • eaccelerator.shm_prune_period = “0” n'essaye pas de supprimer les scripts qui n'ont pas eu accès à la mémoire partagé (à vérifier).
  • eaccelerator.shm_only = “0” autorise l'accès à la mémoire vive et au disque dur, si la valeur est à 1 alors eAccelerator n'a accès qu'à la mémoire vive.
  • eaccelerator.compress = “1” active la compression, 0 la désactive.
  • eaccelerator.compress_level = “9” détermine le niveau de compression, 9 est le maximum.
  • eaccelerator.keys = “shm_and_disk” autorise la mise en cache des clés sur le disque dur et dans la mémoire vive.
  • eaccelerator.sessions = “shm_and_disk” autorise la mise en cache des sessions sur le disque dur et dans la mémoire vive.
  • eaccelerator.content = “shm_and_disk” autorise la mise en cache du contenu sur le disque dur et dans la mémoire vive.
  • eaccelerator.log_file = /var/log/apache2/eaccelerator.log créé un fichier de log pour eAccelerator.

Relancez Apache.

# /etc/init.d/apache2 restart

En allant sur la page infos.php vous devriez voir apparaître ceci :

with eAccelerator v0.9.5.3, Copyright (c) 2004-2008 eAccelerator, by eAccelerator

Si ce n'est pas le cas vérifiez que la librairie soit bien déclarée dans le php.ini

Panneau de contrôle.

Le panneau de contrôle d'eAccelerator consiste en une page PHP, cette page se trouve dans le répertoire eaccelerator-0.9.5.3 sous le nom control.php, placez cette page dans /var/www/ par exemple.
Il faut absolument ajouter la directive suivante dans le php.ini auquel cas une erreur sera affichée :

eaccelerator.allowed_admin_path = "/var/www/
  • eaccelerator.allowed_admin_path = ”/var/www/ indique le répertoire ou sera placée la page control.php qui permet l'administration d'eAccelerator.

/var/www/ détermine le répertoire ou se trouvera la page control.php
Pour accéder à cette page un mot de passe est demandé, vous pouvez le modifier en éditant la page control.php

Relancez Apache si vous venez de l'ajouter.

# /etc/init.d/apache2 restart

Voila à quoi vous attendre :

Complément d'informations.

Si vous avez besoin de mémoire supplémentaire pour l'utilisation de vos scripts, vous pouvez augmenter la taille de la valeur eaccelerator.shm_size qui se trouve dans php.ini
Exemple :

eaccelerator.shm_size = "64"

Pour que cela fonctionne, il faut que la taille demandée soit inférieure ou égale à la taille de segment de mémoire partagé configurée au niveau noyau.

Vérifiez la taille actuelle.

# cat /proc/sys/kernel/shmmax

Résultat :

# 67108864

Si le résultat retourné est 33554432 alors il faut modifier le paramètre suivant dans /etc/sysctl.conf

kernel.shmmax = 67108864

Ou de façon temporaire :

# echo 67108864 > /proc/sys/kernel/shmmax

Merci Calimero pour cette précision.

installation_et_configuration_du_systeme_de_cache_eaccelerator.txt · Dernière modification: 2011/01/05 16:05 (modification externe)