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.