{{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