{{indexmenu_n>10}}
====== Apache 2.4 & PHP5-FPM ======
Par défaut, lorsque Apache travaille sur un fichier ou un script php, il le fait en tant qu’utilisateur www-data (l’utilisateur Apache du système, qui possède des droits particuliers). Le problème, c’est que si un de ces scripts est mal conçu et possède une faille de sécurité, un pirate peut avoir accès à cet utilisateur système qui possède des droits importants, il pourrait donc toucher à tous les sites hébergés sur le même serveur.
Pour éviter ça on va utiliser PHP-FPM qui permet de déclarer un utilisateur par site web hébergé.
===== Installation =====
Pour installer les paquets nécessaires, vérifier que les dépôt "**non-free**" sont bien déclarés dans /etc/apt/sources.list :
deb http://ftp.fr.debian.org/debian/ jessie main non-free
deb-src http://ftp.fr.debian.org/debian/ jessie main non-free
deb http://security.debian.org/ jessie/updates main non-free
deb-src http://security.debian.org/ jessie/updates main non-free
# jessie-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ jessie-updates main non-free
deb-src http://ftp.fr.debian.org/debian/ jessie-updates main non-free
Sinon ajoutez "non-free" à la fin de chaque ligne.
Ensuite on lance la commande :
sudo apt-get update
Puis
sudo apt-get install libapache2-mod-fastcgi php5-fpm
===== Configuration d'Apache =====
On active le module action :
sudo a2enmod actions
On va ensuite configurer PHP-FPM pour utiliser les sockets UNIX plutôt que TCP. Dans cette commande on va utilisr grep pour déterminer si les sockets sont déjà utilisés.
sudo grep -E '^\s*listen\s*=\s*[a-zA-Z/]+' /etc/php5/fpm/pool.d/www.conf
Vous devriez voir la ligne suivante :
listen = /var/run/php5-fpm.sock
Si ce n'est pas le cas, remplacez la ligne "listen" par celle ci-dessus et redémarrez le service php5-fpm
On va ensuite éditer le fichier **/etc/apache2/mods-enabled/fastcgi.conf**
sudo vi /etc/apache2/mods-enabled/fastcgi.conf
Et remplacer le contenu par les lignes suivantes
AddType application/x-httpd-fastphp5 .php
Action application/x-httpd-fastphp5 /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
Require all granted
On désactive le mod_php5 d'Apache et on redémarre le service :
sudo a2dismod php5 && sudo service apache2 restart
===== Configuration par nom de domaine et utilisateur =====
Dans cet exemple on va configurer le pool pour l'utilisateur **bob**
On commence par copier le fichier du pool par défaut de PHP-FPM :
sudo cp /etc/php5/fpm/pool.d/www.conf /etc/php5/fpm/pool.d/example.com.conf
Puis on va éditer le fichier **/etc/php5/fpm/pool.d/example.com.conf** :
sudo vi /etc/php5/fpm/pool.d/example.com.conf
On y modifie les lignes suivantes :
;remplacer [www]
[example.com]
...
user = bob
group = bob
...
listen = /var/run/php5-fpm_example.com.sock
Puis on redémarre le service php5-fpm :
sudo service php5-fpm restart
On va ensuite éditer le vhost pour y faire ajouter les lignes du mod_fastcgi :
ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html/
ErrorLog /var/www/example.com/error.log
CustomLog /var/www/example.com/access.log combined
AddType application/x-httpd-fastphp5 .php
Action application/x-httpd-fastphp5 /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi_example.com
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi_example.com -socket /var/run/php5-fpm_example.com.sock -pass-header Authorization
Puis on redémarre Apache :
sudo service apache2 restart