Il existe plusieurs manières de faire tourner Apache et PHP sur son serveur et notamment une manière peu courante mais pourtant exploitant aux mieux les capacités des processeurs multi-cores et du multi-threading et nous allons voir laquelle.

La nécessité

Vous avez beaucoup de processus Apache qui se lance et autant de PHP ? Vous manquez de mémoire et voulez gagner encore en performance ? Alors essayez Worker et Fastcgi ! Avec apache en mode Worker et PHP géré en Fastcgi votre système passera beaucoup moins de temps à ouvrir et fermer des processus car un seul processus gérera enfin toutes les requêtes !

L’installation

L’installation est assez simple pourvu que l’on fasse attention à quelques détails. Je ne vais pas reprendre ici en détail toute la configuration d’Apache et de PHP. Personnellement j’ai fait mes tests sur une version d’apache-php-mysql déjà installé. Donc vous pouvez le faire par dessus votre Apache prefork (ce qui est l’installation standard). Commençons par Apache.


apt-get install apache2-mpm-worker libapache2-mod-fcgid

Si l’installation s’est bien déroulée, vous devriez avoir message final : Module fcgid installed. Si ce n’est pas le cas, activez le module avec la commande suivante.


a2enmod fcgid

Pour vérifier il suffit aussi d’aller voir dans /etc/apache2/mods-enabled pour voir si le module fcgid.load est bien pressé (par lien symbolique ou physiquement)

Pendant l’installation vous aurez peut être peur en voyant que le système veut vous enlever le module php5. C’est normal, en effet celui-ci ne fonctionne pas avec Apache Thread (worker), c’est d’ailleurs pour cette raison que nous installerons le php5 en mode cgi.

PHP 5 en mode CGI

Comme expliqué ci-dessus, le module PHP ne marchera pas avec le mode Worker d’Apache. Par conséquent nous devons installé le PHP en mode CGI qui sera utilisé ici à travers FASTCGI.


apt-get install php5-cgi

Dans /etc/php5 vous trouverez par la suite un répertoire cgi le quel contient le php.ini, le fichier de configuration de php. Vous pouvez donc dans ce fichier faire vos réglages PHP classique.

Maintenant il faut expliquer à Apache que les page php que vous voulez vont être exécutée avec FASTCGI. Pour cela quelques commandes suffisent, elles sont à mettre dans la configuration de votre Virtual Host dans Apache

Par exemple si votre site Web est dans le dossier www de /home

NameVirtualHost *
<VirtualHost *>

ServerAdmin webmaster@localhost
DocumentRoot /home/www/

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory /home/www/>

AddHandler fcgid-script .php
AddHandler fcgid-script .php3
FCGIWrapper /usr/lib/cgi-bin/php5 .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php3
Options ExecCGI Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

</Directory>
….

La ligne AddHandler permet donc de spécifier quelle extension de fichier est a exécuter via FCGI. Il suffit ensuite d’indiquer où se trouve l’application concernant cette extension. Cela se fait avec FCGIWrapper. Pour finir, n’oubliez pas l’option ExecCGI sans quoi vos CGI ne s’exécuteront jamais…

Normalement après avoir tout redémarrer (apache2ctl restart), vous devriez vous retrouver avec seulement quelques processus d’apache et de php5 mais surtout un nombre défini et fixe qui ne changera peu.