Un bon petit optimizer de PHP ?
D'habitude je n'ai pas trop de soucis de performance... j'installe de manière classique mon LAMP. Mais j'ai voulu tester eAccelerator. Voici un petit tuto comme on aime pour une installation propre !
Paquets nécessaires
Bon je ne vais pas aborder l'installation d'apache/mysql/php... Je considère que c'est fait. Mais il faut avoir ces paquets pour pouvoir tout installer de manière propre :
# aptitude install php5-dev checkinstall
Installation
Pour commencer, il faut compiler eaccelerator.
# cd /tmp
# wget -c http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.zip
# unzip eaccelerator-0.9.6.1.zip
# cd eaccelerator-0.9.6.1
# phpize
# ./configure
# make
On va faire une installation "propre" avec checkinstall. Ce programme permet de générer un joli ".deb" et de l'installer. Mais il faut faire attention à ce programme, on peut vite partir en mode "porky". Les commandes ci-dessous permettent de rajouter la dépendance "php5" sur ce nouveau paquet. Cette contrainte permettera éventuellement de déployer ce paquet sur un dépot local pour le mettre éventuellement sur plusieurs serveurs.
# checkinstall
checkinstall 1.6.1, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran
This software is released under the GNU GPL.
The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs? [y]:
Preparing package documentation...OK
Please write a description for the package.
End your description with an empty line or EOF.
>> PHP accelerator and optimizer
>> EOF
>>
*****************************************
**** Debian package creation selected ***
*****************************************
This package will be built according to these values:
0 - Maintainer: [ root@debianiste.org ]
1 - Summary: [ PHP accelerator and optimizer ]
2 - Name: [ eaccelerator ]
3 - Version: [ 0.9.6.1 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ amd64 ]
8 - Source location: [ eaccelerator-0.9.6.1 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ eaccelerator ]
Enter a number to change any of them or press ENTER to continue: 10
Enter the additional requirements:
>> php5
This package will be built according to these values:
0 - Maintainer: [ root@debianiste.org ]
1 - Summary: [ PHP accelerator and optimizer ]
2 - Name: [ eaccelerator ]
3 - Version: [ 0.9.6.1 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ amd64 ]
8 - Source location: [ eaccelerator-0.9.6.1 ]
9 - Alternate source location: [ ]
10 - Requires: [ php5 ]
11 - Provides: [ eaccelerator ]
Enter a number to change any of them or press ENTER to continue:
Installing with make...Installing with install...
========================= Installation results ===========================
Installing shared extensions: /usr/lib/php5/20060613/
======================== Installation successful ==========================
Copying documentation directory...
./
./NEWS
./README
./AUTHORS
./README.win32
./ChangeLog
./doc/
./doc/php/
./doc/php/dasm.php
./doc/php/info.php
./doc/phpdoc.ini
./COPYING
grep: /var/tmp/tmp.klGKOTwxjc/newfile: Aucun fichier ou répertoire de ce type
Copying files to the temporary directory...OK
Stripping ELF binaries and libraries...OK
Compressing man pages...OK
Building file list...OK
Building Debian package...OK
Installing Debian package...OK
Erasing temporary files...OK
Deleting temp dir...OK
**********************************************************************
Done. The new package has been installed and saved to
/tmp/eaccelerator-0.9.6.1/eaccelerator_0.9.6.1-1_amd64.deb
You can remove it from your system anytime using:
dpkg -r eaccelerator
**********************************************************************
Configuration PHP d'eAccelerator
Voici la configuration recommandée par eAccelerator. Pour l'instant cela fonctionne très bien chez moi. Je recommande de faire des tests afin de trouver la meilleure solution. Par défaut eaccelerator écrit dans /tmp, je préfère qu'il aie son propre dossier pour tout écrire :
# mkdir /var/cache/eaccelerator
# chown www-data: /var/cache/eaccelerator
Voici la configuration du module PHP :
zend_extension="/usr/lib/php5/20060613/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
Attention ! Ce module doit être chargé après Zend Optimizer. Pour ma part j'ai réutiliser mon fichier /etc/php5/conf.d/zend.ini ; j'ai collé les lignes ci-dessus après la déclaration de Zend Optimizer.
Vérification
On peut vérifier facilement en utilisant php-cli :
$ php -v
PHP 5.2.6-1+lenny9 with Suhosin-Patch 0.9.6.2 (cli) (built: Aug 4 2010 06:06:53)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies
Cette solution fonctionne parfaitement sous Debian Lenny. Je n'ai pas eu l'occasion de valider sur Squeeze. Mais d'après eAccelerator, ce module s'adapte parfaitement à PHP 5.1, 5.2 et 5.3... Pas de soucis à priori. Si tout est OK, vous pouvez redémarrer Apache sans soucis !