OVH Community, votre nouvel espace communautaire.

Installer et optimiser eaccelerator (Ubuntu + Apache ou Lighttpd + PHP5)


aadrien
27/03/2010, 11h03
Les bénéfices de la méthode
  1. Améliorer la performance de PHP grâce au cache de code d'eaccelerator
  2. Améliorer la performance d'eaccelerator en cachant le code en RAM et non sur le disque
  3. Eviter de modifier trop profondément le système pour le garder stable
  4. Utilisable pour tous les serveurs web

Pour améliorer eaccelerator, j'utilise un ramdisk. Un ramdisk c'est un disque dur qui est stocké en RAM, il est donc plus rapide mais est vidé à chaque reboot. Par défaut les ramdisk chez OVH sont de 4M. Je viens d'arriver au bout des 4M. Alors comment
  • On crée un ramdisk d'une taille libre
  • On installe eaccelerator
  • On configure eaccelerator

Je vous enjoins également à installer Lighttpd qui est très performant à la place d'Apache, même s'il demande une adaptation. En effet le format de fichier est très flexible et donc compliqué à priori. Une fois adapté, je n'ai plus de soucis pour décrire un nouveau site, mettre les paramètres SSL sur un sous domaine, avoir des sous domaines avec des dossiers différents, charger les URLs spéciales de Drupal, faire l'équivalent de .htaccess sur tout un domaine, etc. La documentation est très bien pour ça. Le format de configuration ne décrit pas Lighttpd mais il le programme. En effet il est compilé au démarrage de Lighttpd. Je suis sûr que s'il y a des intéressés pour un tutoriel, ils me le diront.

Installer un ramdisk
Pour installer un ramdisk d'une taille choisie chez OVH sans avoir à bidouiller ni lilo ni grub c'est simple :
Optionnel
Code:
umount /tmp/ramdisk0
pour enlever un ramdisk actuel s'il existe


La manipulation en elle-même
ajouter dans /etc/rc.local avant "exit 0"
Code:
mkdir /tmp/ramdisk0
mke2fs /dev/ram0
mount /tmp/ramdisk0
chmod 777 /tmp/ramdisk0

exit 0
Comme ça le ramdisk sera monté au démarrage

Editer /etc/fstab et ajouter la ligne
Code:
/dev/ram0       /tmp/ramdisk0   tmpfs   size=50M        0       0
maintenant Mount connait les détails de /tmp/ramdisk0 et il peut l'appeler par son nom. On peut ajouter d'autres options que vous pourrez trouver dans
Code:
man 8 mount
En regardant dans la section sur l'option -o qui présente les paramètres, à la section tmpfs, vous trouverez des détails pour intégrer l'utilisateur ou les permissions d'accès directement dans fstab
Puis executer la séquence suivante pour utiliser 50M de ramdisk.
Code:
mkdir /tmp/ramdisk0
mke2fs /dev/ram0
mount /tmp/ramdisk0
chmod 777 /tmp/ramdisk0
J'aime pas avoir à toucher lilo pour quelque chose de si simple. Juste RTFM

Combien de RAM j'alloue au cache?
Dans le fichier fstab, j'ai mis 50M. Pourquoi 50M? Juste parce que 100M c'est trop et que 4M c'est trop peu. A vous d'adapter la valeur dans fstab en fonction de ce que vous dit la commande
Code:
df -h
sur l'utilisation du ramdisk. Trop grand : on réduit, trop petit : on agrandit. Pensez juste à le détruire avant de le recréer à une nouvelle taille

Préparer pour eaccelerator
Pensez à aller voir la dernière version d'eaccelerator sur http://bart.eaccelerator.net/source
Code:
apt-get install build-essentials
apt-get install php5-dev
cd /usr/src/
wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2
bzip2 -d eaccelerator-0.9.6.tar.bz2
tar -vxf eaccelerator-0.9.6.tar
cd eaccelerator-0.9.6
Maintenant que vous avez le source sur votre serveur, on passe à la compilation d'eaccelerator. Le make clean sert à effacer toute configuration précédente pour éviter qu'elle n'interfère. Utile quand vous avez changé de version de PHP ou d'eaccelerator et que vous devez recompiler eaccelerator avec cette nouvelle version.
Compiler eaccelerator
Code:
make clean
phpize5
./configure -enable-eaccelerator
make
make install
cette dernière commande doit vous produire une sortie du type
Code:
Installing shared extensions: /usr/lib/php5/20060613+lfs/
Copiez là, vous en avez besoin pour la suite.

Configurer eaccelerator
Si vous utilisez Apache : dans le répertoire /etc/php5/apache2/conf.d
Si vous utilisez (Fast)CGI : dans le répertoire /etc/php5/cgi/conf.d
Créez un fichier eaccelerator.ini et copiez-y le code ci-dessous
Code:
zend_extension=”//eaccelerator.so”
eaccelerator.shm_size=”0″
eaccelerator.cache_dir=”/tmp/ramdisk0”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″
eaccelerator.allowed_admin_path=”//control.php”
Vous avez noté la ligne du cache pointe sur le ramdisk que nous avons créé et la dernière ligne vers le fichier de contrôle de l'activité d'eaccelerator. Cette page vous donnera une idée de ce qui se passe dans le cache.
Pour l'installer rien de plus simple
Code:
cp /usr/src/eaccelerator-0.9.6/control.php //control.php
Attention tout de même car cette page est accessible pour tous sur le web. Prévoyez un mot de passe.
Code:
pico //control.php
et remplacez le code par défaut par le votre dans la section
Code PHP:
/** config **/
$user = “*****”;
$pw = “*****”;
/** /config **/ 
Vérifier que ça marche
Relancez simplement le serveur web en fonction de ce que vous avez installé, je vous laisse faire, il doit certainement y avoir un tutoriel là-dessus