PHP : configurer un pool PHP pour chaque site

Au départ, ce serveur n’avait qu’un seul site – celui que vous lisez en ce moment ;) – mais au fil du temps, plusieurs sites sont venus s’installer dans son giron.

Au début, nous n’avions donc besoin d’une seule configuration PHP – www.conf par défaut – qui est un pool (ou conteneur) selon la terminologie PHP.

Ce fichier de configuration dicte le nombre de threads PHP à lancer, les permissions, etc.

Afin de monter en charge et fournir à chaque site les ressources qui lui sont nécessaires, adoptons la stratégie “un site, un pool”.

Mise en place du nouveau pool PHP

Pour être sûr de partir d’une base éprouvée, copions notre pool de départ dans un nouveau fichier :

cp /etc/php/7.2/fpm/pool.d/www.conf /etc/php/7.2/fpm/pool.d/skyminds.conf

Editons ensuite notre pool :

nano /etc/php/7.2/fpm/pool.d/skyminds.conf

1. Nom du pool : remplacez [www] par le nom de votre site, ici [skyminds] de manière à pouvoir l’identifier plus aisément.

2. Vérifiez l’utilisateur et le groupe dans les directives user et group.

3. On modifie le nom du site dans la directive listen en utilisant le nom du pool que vous avez choisi dans l’étape 1:

listen = /run/php/skyminds.sockCode language: JavaScript (javascript)

Mise à jour de la configuration NginX

Il nous reste maintenant à mettre à jour la configuration du site :

nano /etc/nginx/sites-available/skyminds.net

Mettez à jour cette ligne (même chemin que la directive listen dans la configuration PHP):

fastcgi_pass unix:/run/php/skyminds.sock;Code language: JavaScript (javascript)

Relancez les services PHP et NginX:

service php7.4-fpm restart && service nginx restartCode language: CSS (css)

Vérification de la nouvelle configuration

Testons voir ce qui tourne:

ps aux | grep php

Résultat:

root     25345  0.0  0.4 377992 16484 ?        Ss   16:56   0:00 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
www-data 25349  2.7  4.6 604056 184132 ?       S    16:56   0:48 php-fpm: pool kriyayoga
www-data 25516  2.5  4.5 606388 181832 ?       S    16:57   0:43 php-fpm: pool kriyayoga
www-data 26555  2.2  4.4 602476 177504 ?       S    17:10   0:21 php-fpm: pool kriyayoga
www-data 27303  5.0  2.6 483516 104588 ?       S    17:22   0:11 php-fpm: pool skyminds
www-data 27304  3.3  2.4 481156 97284 ?        S    17:22   0:07 php-fpm: pool skyminds
www-data 27357  2.7  2.2 474696 90736 ?        S    17:23   0:03 php-fpm: pool skyminds
root     27524  0.0  0.0  15440  1916 pts/1    S+   17:26   0:00 grep phpCode language: JavaScript (javascript)

Et voilà, tous les sites ont leur propre pool PHP avec leur propre configuration. Idéal pour associer à chacun des ressources selon leur besoin.

Besoin d’un partenaire fiable pour votre projet WordPress/WooCommerce ? Je mets mon expertise à votre service pour des résultats concrets.

Bénéficiez d’un accompagnement personnalisé »

Gravatar for Matt Biscay

Développeur certifié WordPress & WooCommerce chez Codeable, administrateur système et enseignant-chercheur, je mets mon expertise au service de vos projets web.

Ma priorité : des sites performants, fiables et sécurisés, pensés pour offrir la meilleure expérience utilisateur. J’accompagne chaque client avec écoute et pédagogie, pour transformer vos idées en solutions concrètes et durables.

Profitez de solutions WordPress et WooCommerce sur-mesure, pensées pour optimiser durablement votre site.
Explorez les leviers pour booster l’impact de votre site web.

1 pensée sur “PHP : configurer un pool PHP pour chaque site”

  1. Bonjour,
    Déjà merci pour ce tutoriel qui fonctionne niquel chez moi :)
    Je voudrai savoir si il est possible dans ce pool d’intégrée le upload_max_filesize et post_max_size ?
    Sachant que ces valeur ce modifie dans le php.init .
    Faut t’il faire un nouveau fichier.init par site par exemple ? Si oui comment le relier a ma config nginx et comment le faire ?
    Merci dans l’attente de votre réponse .

    Reply

Opinions