Apache HTTPD 2.4 : Mettre en place PHP-FPM FastCGI avec PHP 7

Mise en place de php-fpm via FastGCI sous PHP 7 sur un serveur Apache HTTPD 2.4 sous CentOS pour plus de performance
  • Administration système
FastCGI Php-fpm apache HTTPD
phpinfo(); sur un serveur FastCGI

J’ai mis en place ce matin php-fpm sur le serveur qui héberge SHZ. Cela m’a pris en tout et pour tout, 5 minutes, juste en lisant le wiki d’Apache HTTPD sur php-fpm.

Les avantages de PHP-FPM

Comme je ne suis pas encore très renseigné sur le sujet, je vous renvoie vers des liens assez complet sur l’utilisation (ou non) de php-fpm.

https://www.ovh.com/fr/hebergement-web/optimisation-php-fpm.xml

https://cedric.net/faut-il-utiliser-php-fpm/

Mise en place de php-fpm sur Apache HTTPD sous CentOS 7

Comme je ne l’ai pas mis en place sous Debian, et que la configuration semble différente à ce que j’en ai vu, je ne parlerais ici que de CentOS.

Charger les modules proxy

Les modules suivants vont vous permettre de faire un proxy entre le port 9000 sur lequel écoute php-fpm et votre serveur web.

nano /etc/httpd/conf.modules.d/00-base.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

Redémarrez httpd pour prendre en compte les nouveaux modules.

systemctl restart httpd

Installer le paquet php-fpm

On peut difficilement faire plus simple.

yum install php-fpm -y

N’oubliez pas de lancer php-fpm en tant que service au démarrage.

systemctl start php-fpm && systemctl enable php-fpm

Mise en place du proxy php-fpm sur un virtual host

Le serveur proxy se situe au niveau du VHOST et non au niveau de la configuration global du serveur Apache HTTPD.

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/votre_site/$1

Rechargez la configuration d’httpd.

systemctl reload httpd

Attention aux permissions sur les répertoires

En lançant la commande suivante.

ps -feww | grep php

Vous tomberez sur les processus suivants. En y regardant de plus près qui a lancé ledit processus, on voit que c’est « apache« . Or, mon serveur HTTPD a les user / group « httpd« .

root 16248 1 0 10:42 ? 00:00:00 php-fpm: master process (/etc/php-fpm.conf)
apache 16249 16248 0 10:42 ? 00:00:05 php-fpm: pool www
apache 16250 16248 0 10:42 ? 00:00:05 php-fpm: pool www
apache 16251 16248 0 10:42 ? 00:00:04 php-fpm: pool www
apache 16252 16248 0 10:42 ? 00:00:05 php-fpm: pool www
apache 16253 16248 0 10:42 ? 00:00:02 php-fpm: pool www
apache 17179 16248 0 10:45 ? 00:00:04 php-fpm: pool www
apache 17766 16248 0 10:49 ? 00:00:02 php-fpm: pool www
apache 17773 16248 0 10:52 ? 00:00:00 php-fpm: pool www
apache 17775 16248 0 10:52 ? 00:00:00 php-fpm: pool www

Changer les permissions sur les dossiers

Soit vous changez récursivement les permissions de vos dossiers web.

chown -R apache:apache /var/www/votre_site

Changer le processus d’exécution enfant de php-fpm (recommandé)

Soit vous dites à php-fpm de lancer ses processus fils en tant qu’utilisateur / groupe spécifique.

nano /etc/php-fpm.d/www.conf

J’ai changé les informations suivants de « apache » à « httpd »

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = httpd
; RPM: Keep a group allowed to write in log dir.
group = httpd

Relancez le service pour prendre en compte cette modification.

systemctl restart php-fpm

En relançant la commande `ps -feww | grep php` vous devriez voir que le responsable du processus a changé.

Tester que le domaine utilise bien php-fpm

Très simplement, il suffit de lancer cette commande et vous rendre sur l’URL.

echo -e '<?php\n\n\tphpinfo();' > /var/www/votre_site/test-php-fpm.php

http///votre-site.fr/test-php-fpm.php

N’oubliez pas de supprimer ensuite ce fichier pour éviter une faille de sécurité.

Conclusion sur php-fpm ?

Comme je viens juste de le mettre en place, je ne sais pas encore trop quoi en penser, même si en effet mon site WordPress semble tourner un peu plus rapidement. Il faut voir ce genre de chose dans la longueur, car le système de cache n’a pas eu le temps de se mettre en place.

Article publié le

Dernière modification le

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.