Cela fait maintenant quelques mois que je n'ai pas édité de nouveau billet sur ce site, je vais donc couper cette période creuse en vous proposant un petit tutoriel sur la mise en place de php5-fpm avec apache2 et tout ça configurable au besoin dans des virtualhost .

Nous avons déjà vu comment faire avec Nginx ( qui est franchement plus clair qu'apache ) mais parfois on a pas le choix du serveur web sur lequel on travail .. alors voyons comment faire ça proprement avec apache2.

Etat des lieux

Le tutoriel se base sur la version stable de Débian du moment, Debian 7 "Wheezy" .
Nous allons également activer les dépôts contrib et non-free pour installer ce qui va suivre .

Pour cela commencez par éditer le fichier /etc/apt/sources.list

sudo vim /etc/apt/sources.list

Et ajoutez à la fin de chaque ligne contrib non-free
Ce qui donne quelque chose comme çà

deb http://cloudfront.debian.net/debian wheezy main contrib non-free
deb-src http://cloudfront.debian.net/debian wheezy main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
deb http://cloudfront.debian.net/debian wheezy-updates main contrib non-free
deb-src http://cloudfront.debian.net/debian wheezy-updates main contrib non-free

PS: ne faite pas attention à l'url de mes dépôts ci-dessus "cloudfront.debian.net" , j'utilise une instance (VM) Amazon pour réaliser mes tests .

Installation des paquets nécessaires

Nous allons installer les paquets suivants :

sudo apt-get install php5-fpm libapache2-mod-fastcgi php5-cgi

Puis il nous faut activer le module fastcgi et actions via la commande a2enmod

sudo a2enmod actions fastcgi

Configuration du module fastcgi

Il nous faut lier le module fastcgi aux processus php5-fpm, pour celà nous allons éditer le fichier de configuration du module fastcgi

vim /etc/apache2/mods-available/fastcgi.conf

Pour arriver à ce résultat

<IfModule mod_fastcgi.c>
 AddType application/x-httpd-fastphp5 .php
 Action application/x-httpd-fastphp5 /php5-fcgi
 Alias /php5-fcgi /usr/bin/php5-fcgi
 FastCgiExternalServer /usr/bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
</IfModule>

NB : il vous faut vérifier le chemin du socket php5-fpm dans votre cas, normalement, /var/run/php5-fpm.sock et la valeur par défaut pour l’environnement Débian 7, pour vérifier exécuter cette commande

cat /etc/php5/fpm/pool.d/www.conf | grep "listen = "

Le test

Il ne vous reste plus qu'à tester cette nouvelle configuration, commençons par tester l'ensemble des paramètres d'apache via la commande très pratique

sudo apache2ctl configtest

Puis il ne reste plus qu'à relancer Apache si tout est ok

sudo service apache2 restart

Enfin, nous allons mettre un simple fichier php dans le DocumentRoot par défaut d'apache2

sudo echo "<?php echo phpinfo();" > /var/www/lindev.php && chown www-data:www-data /var/www/lindev.php

Il ne vous reste plus qu'à entrer l'url http://localhost/lindev.php pour voir le résultat .

Conf spécifique par virtualhost

Jusque là, les scripts php sont exécutés par l'utilisateur système www-data dans la plupart des cas, cela va être adéquat, mais si pour une raison quelconque vous devez utiliser un autre utilisateur pour exécuter un script/site en particulier, dans le virtualhost correspondant, il vous faudra surcharger la configuration du module fastcgi, ce qui donnera par exemple

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName lindev.fr
    ServerAlias www.lindev.fr
    DocumentRoot /var/www/lindev/
    ErrorLog /var/www/lindev/error.log
    CustomLog /var/www/lindev/access.log combined

    <IfModule mod_fastcgi.c>
        AddType application/x-httpd-fastphp5 .php
        Action application/x-httpd-fastphp5 /php5-fcgi
        Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi_lindev
        FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi_lindev -socket /var/run/php5-fpm_lindev.sock -pass-header Authorization
    </IfModule>

</VirtualHost>

Ici , j'ai donc donné un autre socket à utiliser, que j'ai nommé php5-fpm_lindev.sock. Ce socket devra bien évidement être configuré coté php-fpm, en créant un nouveau pool ( dans un prochain article certainement ), en attendant, pour tester copiez juste la conf du pool par défaut, et changer le paramètre listen pour spécifier le socket à créer pour ce pool.
C'est également dans ce fichier de pool que vous pourrez spécifier l'utilisateur système à utiliser pour interpréter les fichiers php.

cp /etc/php5/fpm/pool.d/www.conf /etc/php5/fpm/pool.d/lindev.conf

Changer les paramètres listen, user et group , puis relancer php-fpm

sudo service php5-fpm reload

L'article touche maintenant à sa fin, vous savez maintenant installer apache, php5-fpm et configurer un pool spécifique de php pour un virtualhost.

Ch.