Date de publication: le vendredi 24 août 2007 à 23h00
Dernière modification: par Pascal BOYER le vendredi 17 septembre 2010 à 11h36
« Article précédent: Apache 1.3.37 : compiler et installer le module mod_deflate (IX)
» Article suivant: Apache 1.3.37 : compiler et installer le module mod_gzip (XI)
eAccelerator : prérequis
Sur la page d'accueil du projet on lit ceci:
eAccelerator is still under development. The latest release, 0.9.5, supports PHP 4 and all PHP 5 releases including 5.2. In older releases, the encoder will only work with PHP versions from the 4.x.x branch. eAccelerator will not work with any other versions of PHP.
eAccelerator est encore en développement. La dernière version 0.9.5 est compatible avec les versions PHP 4 et PHP 5, incluant même la version 5.2. L'encodeur des anciennes versions de eAccelerator ne fonctionne qu'avec les versions de la branche 4.x.x de PHP. eAccelerator ne fonctionnera avec aucune autre version de PHP.
Sur la page d'aide à l'installation, on lit ceci:
eAccelerator only works with mod_php or php in fastcgi mode.
eAccelerator ne fonctionne qu'avec le module mod_php ou php en mode fastcgi.
Voici les logiciels nécessaires au fonctionnement de eAccelerator:
- php4 or php5
- autoconf
- automake
- libtool
- m4
- make
eAccelerator : avec PHP non compilé
Si on utilise une version de PHP installée à partir des packages debian, alors voila, par exemple, la liste de ceux qui sont installés sur ma machine:
dpkg -l '*php4*' |grep ii
ii libapache-mod-php4 4.4.4-8+etch1 server-side, HTML-embedded scripting language (apache 1.3 module) ii php4 4.4.4-8+etch1 server-side, HTML-embedded scripting language (meta-package) ii php4-cli 4.4.4-8+etch1 command-line interpreter for the php4 scripting language ii php4-common 4.4.4-8+etch1 Common files for packages built from the php4 source ii php4-dev 4.4.4-8+etch1 Files for PHP4 module development ii php4-gd 4.4.4-8+etch1 GD module for php4 ii php4-imagick 0.9.11+1-4.1 ImageMagick module for php4 ii php4-imap 4.4.4-8+etch1 IMAP module for php4 ii php4-mcal 4.4.4-8+etch1 MCAL calendar module for php4 ii php4-mcrypt 4.4.4-8+etch1 MCrypt module for php4 ii php4-mhash 4.4.4-8+etch1 MHASH module for php4 ii php4-mysql 4.4.4-8+etch1 MySQL module for php4 ii php4-pear 4.4.4-8+etch1 PHP Extension and Application Repository (transitional package) ii php4-xslt 4.4.4-8+etch1 XSLT module for php4
:
Veillez à bien avoir la version de développement de PHP, sinon certaines commandes ne seront pas disponibles
eAccelerator : avec PHP compilé
Il est tout à fait possible, bien sûr, d'installer eAccelerator sur un serveur n'utilisant qu'une version compilée de PHP.
Sur ma Dedibox, j'utilise eAccelerator avec un serveur Apache 1.3.37 + PHP 4.4.7 compilés à la main
On verra, au moment de la création du Makefile, qu'elle option de la commande ./configure permet de choisir l'une ou l'autre version de PHP.
Contrôler la configuration du serveur Apache
Pour connaître les modules lancés par le serveur web, on peut utiliser la fonction phpinfo()
Il suffit de créer, par exemple à la racine du serveur web, un fichier info.php dans lequel on écrit ces trois lignes:
<?php phpinfo(); ?>
...puis d'y accéder avec un URI de type:
http://www.monsite.com/info.php
Voici le cadre qui nous intéresse:
Liste des modules du serveur Apache
eAccelerator : installer mod_fastcgi
Comme je l'ai indiqué en début d'article, eAccelerator ne fonctionne qu'en mode Fastcgi. Il est donc nécessaire d'installer le module mod_fastcgi sur le serveur Apache.
Avant toute chose, on vérifie, à l'aide d'un fichier info.php, que ce module n'est pas déjà installé:
Si le module n'est pas déjà présent, alors, pour l'installer, reportez-vous aux explications détaillées de ces deux articles:
- Installer mod_fastcgi
- Compiler mod_fastcgi (je rappelle qu'il s'agit d'une compilation statique du module)
Télécharger eAccelerator
On se place dans le répertoire ServeurWeb:
cd /usr/local/ServeurWeb
Puis on télécharge la dernière version disponible de l'archive (0.9.5.1 à l'heure où j'écris cet article) depuis la page de téléchargement du site officiel consacré au projet EAccelerator ou bien avec la commande wget:
wget http://bart.eaccelerator.net/source/0.9.5.1/eaccelerator-0.9.5.1.tar.bz2
--23:44:07-- http://bart.eaccelerator.net/source/0.9.5.1/eaccelerator-0.9.5.1.tar.bz2 => `eaccelerator-0.9.5.1.tar.bz2' Résolution de bart.eaccelerator.net... 193.190.253.234 Connexion vers bart.eaccelerator.net|193.190.253.234|:80...connecté. requête HTTP transmise, en attente de la réponse...200 OK Longueur: 122 279 (119K) [application/x-tar] 100%[====================================>] 122 279 --.--K/s 23:44:08 (1.33 MB/s) - « eaccelerator-0.9.5.1.tar.bz2 » sauvegardé [122279/122279]
On affiche l'empreinte SHA1 de l'archive:
sha1sum eaccelerator-0.9.5.1.tar.bz2
2789f56d713549a360871accd9869a6bb4a0b514 eaccelerator-0.9.5.1.tar.bz2
Puis on télécharge la signature sur la même page que l'archive:
wget http://bart.eaccelerator.net/source/0.9.5.1/SHA1SUM && cat SHA1SUM |grep bz2
2789f56d713549a360871accd9869a6bb4a0b514 eaccelerator-0.9.5.1.tar.bz2
Installer eAccelerator
On extrait le contenu de l'archive:
tar jxfv eaccelerator-0.9.5.1.tar.bz2
On se place à présent dans le nouveau répertoire:
cd eaccelerator-0.9.5.1
Il faut maintenant s'assurer que les deux commande suivantes:
- phpize
- php-config
...font bien partie de notre variable d'environnement $PATH
On affiche le chemin de chacune des deux commandes:
whereis phpize
phpize: /usr/bin/phpize /usr/X11R6/bin/phpize /usr/bin/X11/phpize /usr/local/bin/phpize /usr/share/man/man1/phpize.1.gz
whereis php-config
php-config: /usr/bin/php-config /usr/X11R6/bin/php-config /usr/bin/X11/php-config /usr/local/bin/php-config /usr/share/man/man1/php-config.1.gz
On affiche la valeur de la variable d'environnement $PATH
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Ce qui nous importe, c'est que le chemin /usr/local/bin/ fasse partie de la variable $PATH puisque les deux commandes phpize et php-config installées par notre version compilée de PHP 4.4.7 sont placées dans ce répertoire. Les deux commandes situées dans les autres répertoires sont issues de l'installation des packages Debian.
Donc, si tel n'est pas le cas, alors il faut préalablement ajouter ce chemin à la variable $PATH. Pour cela, on édite le fichier /etc/profile et on ajoute le chemin /usr/local/bin aux deux lignes définissant la variable PATH:
if [ "`id -u`" -eq 0 ]; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" else PATH="/usr/local/bin:/usr/bin:/bin:/usr/games" fi
Il est particulièrement important , si vous n'avez qu'une seule installation de PHP, de lancer, à la racine du répertoire d'installation de eAccelerator, la commande phpsize:
/usr/local/bin/phpize
Configuring for: PHP Api Version: 20020918 Zend Module Api No: 20020429 Zend Extension Api No: 20050606
Compiler eAccelerator
Création du Makefile pour PHP non compilé
Si PHP est installé à partir des packages debian, la commande est tout simplement:
./configure --enable-eaccelerator=shared
Création du Makefile pour PHP compilé
Dans ce deuxième cas, il faut indique le chemin complet du fichier php-config:
./configure --prefix=/usr/local --enable-shared --enable-static --enable-eaccelerator=shared --with-php-config=/usr/local/bin/php-config
La sortie très verbeuse de ces deux commandes doit se terminer par ces lignes:
... ... checking dynamic linker characteristics... GNU/Linux ld.so checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no checking whether -lc should be explicitly linked in... no creating libtool configure: creating ./config.status config.status: creating config.h config.status: config.h is unchanged
Ensuite, on compile:
make
Là encore, la sortie très verbeuse de cette commande doit se terminer par:
---------------------------------------------------------------------- Libraries have been installed in: /usr/local/ServeurWeb/eaccelerator-0.9.5.1/modules If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,--rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- Build complete. (It is safe to ignore warnings about tempnam and tmpnam).
Les librairies dynamique compilées à la racine du répertoire sont:
|
|
Cette liste de bibliothèques est présente dans le fichier Makefile.
Il y a deux nouveaux modules compilés:
ls -la modules/
total 168 drwxr-xr-x 2 root root 4096 2007-08-25 12:17 . drwxr-xr-x 10 500 500 4096 2007-08-25 12:17 .. -rw-r--r-- 1 root root 753 2007-08-25 12:17 eaccelerator.la -rwxr-xr-x 1 root root 152210 2007-08-25 12:17 eaccelerator.so
Et on installe:
make install
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20020429/
Configurer eAccelerator
Il y a deux façons de configurer eAccelerator:
- soit en tant qu'extension Zend
- soit en tant qu'extension PHP
eAcceleartor : extension Zend
:
Pour la suite de l'article, et dans la pratique, c'est ainsi que je l'ai installé.
Pour être configuré en tant qu'extension Zend, voici les lignes à ajouter au bas du fichier de configuration de PHP:
zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20020429/eaccelerator.so" eaccelerator.shm_size="16" eaccelerator.cache_dir="/tmp/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"
eAcceleartor : extension PHP
Pour être configuré en tant qu'extension PHP, voici les lignes à ajouter au bas du fichier de configuration de PHP:
extension="eaccelerator.so" eaccelerator.shm_size="16" eaccelerator.cache_dir="/tmp/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"
eAccelerator : Répertoire de cache
Comme on vient de l'indiquer dans le fichier php.ini, il faut créer un répertoire dans lequel eAccelerator placera ses données:
mkdir /tmp/eaccelerator
On donne au répertoire le même propriétaire et groupe propriétaire que Apache:
chown apache:apache /tmp/eaccelerator
Puis on modifie les droits pour que seul Apache/PHP puisse y accéder:
chmod 0770 /tmp/eaccelerator
Et on relance apache:
../apache_1.3.37/src/support/apachectl restart
On teste que eAccelerator est bien activé, soit à l'aide d'un fichier info.php qui doit afficher ceci:
puis, un peu plus bas, encore ceci:
Il y a un autre moyen de savoir si eAccelerator est lancé:
/usr/local/bin/php -v
PHP 4.4.7 (cli) (built: Aug 21 2007 23:21:22) Copyright (c) 1997-2007 The PHP Group Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies with eAccelerator v0.9.5.1, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
Si vous affichez quelques pages de votre site, vous pouvez également contrôler l'apparition de contenu dans le répertoire de cache:
ls -Rla /tmp/eaccelerator |more
... ... /tmp/eaccelerator/f/1: total 224 drwxrwxrwx 2 root root 4096 2007-08-25 18:27 . drwxrwxrwx 18 root root 4096 2007-08-25 18:27 .. -rw------- 1 apache apache 88236 2007-08-25 18:27 eaccelerator-4502.0519845 -rw------- 1 apache apache 29620 2007-08-25 18:27 eaccelerator-4502.3419845 -rw------- 1 apache apache 17896 2007-08-25 18:27 eaccelerator-4502.4419845 -rw------- 1 apache apache 7540 2007-08-25 18:27 eaccelerator-4502.6319845 -rw------- 1 apache apache 15328 2007-08-25 18:27 eaccelerator-4502.6419845 -rw------- 1 apache apache 48748 2007-08-25 18:27 eaccelerator-4502.7319845 ... ...
Ressources
La description de toutes les options de eAccelerator est ici: Settings
Quelques valeurs pour la configuration de eAccelerator avec eZ Publish: configuration pour eZ Publish
Pour la résolution de problèmes: TroubleShooting
Commentaires














