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 ».

Kinsta: Premium Managed WordPress hosting

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.sockLangage du code : 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;Langage du code : JavaScript (javascript)

Relancez les services PHP et NginX:

service php7.4-fpm restart && service nginx restartLangage du code : 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 phpLangage du code : 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.

Demandez à l'IA son opinion
Gravatar for Matt Biscay

Je suis Matt Biscay, développeur WordPress & WooCommerce certifié chez Codeable, administrateur système et enseignant.

J’aide les entreprises à créer, optimiser et fiabiliser leurs sites WordPress avec une approche technique propre : performance, sécurité, maintenance, développement sur mesure et résolution de problèmes complexes.

Sur Skyminds, je partage des tutoriels WordPress, WooCommerce, Linux et administration système, avec des solutions testées sur des cas réels et pensées pour durer.

Découvrez mes services WordPress et WooCommerce.

1 réflexion au sujet de « 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 .

    Répondre

Laisser un commentaire