Configuration de PHP-FPM sur Linux

by Nataliya Oteir
Configuration de PHP-FPM sur Linux
star 5
0
Lire 6 min.

Nous n'aborderons pas les paramètres de base du serveur Nginx lui-même et de ses fonctionnalités, nous l'avons déjà fait dans notre article précédent. Mais certains paramètres doivent être pris en compte.

Définir et spécifier le nombre de handlers et le nombre de connexions par processeur. Pour cela, nous allons spécifier les valeurs dans le fichier /etc/nginx/nginx.conf :

worker_processes 1;
worker_connections 1024;

L'idée de base dans le choix de ces valeurs est que le nombre de clients servis est égal au nombre de handlers multiplié par le nombre de connexions pour chaque processeur. Dans notre cas, il s'agit donc de 1 024 clients. Pour éviter les problèmes d'entrée-sortie, suivez la règle 1 du processeur par cœur de processeur. Vous pouvez déterminer le nombre de noyaux par commande :

cat /proc/cpuinfo | grep processor
processor : 0

Mon processeur a un noyau. Le nombre de processeurs est donc de un. Le nombre de connexions peut être ajouté en fonction des besoins. Ce paramètre est déjà sélectionné dans la pratique.

Pour des raisons de sécurité, la directive peut être activée

server_tokens off

Extrait du manuel : "Autorise ou interdit l'émission de la version de Nginx dans les messages d'erreur et dans le champ "Server" du titre de la réponse."

Cette directive est ajoutée à la section http/server/local du fichier de configuration.

Spécifions la taille des données transmises par le serveur :

client_max_body_size 20m;
client_body_buffer_size 128k;

Cette directive est ajoutée à la section http/server/local du fichier de configuration.

Configurons le cache pour les fichiers statiques. Cela permet d'économiser les ressources du serveur et la bande passante. Désactivez la journalisation et fixez la date d'expiration de l'en-tête à 100 jours pour les fichiers statiques.

location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
    access_log off;
    log_not_found off;
    expires 360d;
    }

Pour interagir avec PHP-FPM, vous pouvez spécifier un socket Unix. Pour ce faire, nous devons écrire dans notre halo de configuration :

# Pass PHP scripts to PHP-FPM
    location ~* \.php$ {
    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:9000;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }

Dans les paramètres de PHP-FPM, vous devez spécifier d'écouter l'IP et le port spécifiés dans notre configuration. Ceci est fait par la directive listening du fichier de configuration du pool.

Pour des raisons de sécurité, vous pouvez empêcher l'accès aux fichiers cachés.

location ~ /\. {
    access_log off;
    log_not_found off;
    deny all;
    }

La configuration de PHP-FPM elle-même peut être divisée en 2 étapes : la définition des paramètres globaux qui est effectuée dans le fichier

/etc/php5/fpm/php-fpm.conf

et la configuration du pool. La configuration du pool est spécifiée dans les fichiers du répertoire

/etc/php5/fpm/pool.d/

Les paramètres globaux ne sont pas très intéressants et peuvent être consultés dans la documentation, mais ce sont les principaux paramètres de la configuration des pools que nous allons examiner.

Chaque pool est configuré dans un fichier distinct. Si vous effectuez une commande

ls -l /etc/php5/fpm/pool. d/

nous verrons que le système possède déjà un fichier de configuration pour le pool www. Examinons la configuration dans son exemple.

Un point important de la configuration consiste à choisir le nombre de gestionnaires utilisés pour exécuter les scripts PHP. Leur nombre doit être choisi judicieusement. Un nombre insuffisant de gestionnaires ne permettra pas un traitement efficace et rapide des requêtes, mais un nombre trop élevé épuisera les ressources dont le serveur a besoin pour d'autres tâches. Le nombre de processeurs doit être choisi en tenant compte du fait que, même en cas de pic des demandes adressées au serveur, l'utilisation de ses ressources doit rester dans des limites raisonnables et ne pas conduire à sa surcharge.

Maintenant, regardons un peu le fichier de configuration et spécifions les options suivantes. Ah oui, dans le fichier de configuration, les lignes commençant par le symbole " ;" sont des commentaires et ne sont pas considérées comme des directives.

Spécifier le mode dynamique de création des processus, ainsi le nombre de processus PHP-FPM démarrés dépendra directement de la charge du serveur.

pm = dynamic

Définissez le nombre maximum de processus enfants.

pm.max_children = 6

Ensuite, vous devez spécifier le nombre de processus enfants qui s'exécuteront dès que le serveur sera chargé. Par défaut, cette valeur est de 2. Vous pouvez l'augmenter si les ressources le permettent ; fixons-la à 3.

pm.start_servers = 3

Vous devez également spécifier le nombre minimum et le nombre maximum de processus inactifs. Le nombre minimum est égal au nombre de processus en cours d'exécution au démarrage du serveur. Nous fixerons le nombre maximum en partant du principe qu'il ne doit pas dépasser le nombre maximum autorisé de processus enfants.

pm.min_spare_servers = 3
    pm.max_spare_servers = 5

Ces valeurs sont données à titre d'exemple et d'explication. Mais dans chaque situation spécifique, elles peuvent varier. Les valeurs optimales dépendent des capacités du serveur et des ressources disponibles, du nombre et de la complexité du code PHP, du nombre de requêtes et de la charge du serveur. Ces paramètres ne peuvent être obtenus que par une application pratique et un test du site créé.

Examinons maintenant les paramètres spécifiques.

Tout d'abord, nous allons configurer l'enregistrement d'informations sur les scripts qui s'exécutent lentement. Ces informations seront utiles pour clarifier les raisons des retards du site. Tout d'abord, nous allons définir un seuil de temps à partir duquel l'exécution du script sera considérée comme lente.

request_slowlog_timeout = 10s

Les unités de temps peuvent être spécifiées en secondes (s), minutes (m), heures (h) ou jours (d). Nous avons spécifié un temps de 10 secondes.

Nous allons maintenant spécifier le nom du fichier dans lequel les informations seront envoyées.

slowlog = /var/log/slowphp.log

Ce fichier peut être utilisé pour l'étude des scripts "lents".

Si vous souhaitez exécuter des scripts dans un environnement isolé ou un environnement chroot. Cette option est généralement utilisée à des fins de sécurité. Vous devez définir l'option chroot pour activer cette fonctionnalité.

Lorsque vous définissez cette option, vous devez garder à l'esprit que cela entraînera des changements dans le traitement des scripts PHP.

Tous les chemins d'accès aux fichiers seront désormais considérés comme relatifs au répertoire spécifié, et les scripts PHP ne pourront pas accéder aux sockets situés en dehors du répertoire spécifié.

Pour gérer plusieurs sites, il peut être nécessaire d'ajouter des pools supplémentaires. Cela vous permet de configurer des paramètres différents pour chaque site individuellement. Pour créer un pool supplémentaire, copiez notre fichier

/etc/php5/fpm/pool.d/www.conf

sous un nouveau nom, par exemple

/etc/php5/fpm/pool.d/www2.conf

Ouvrez un nouveau fichier et changez le nom du pool. Pour ce faire, en haut du fichier, remplacez la ligne [www] par [www2].

Et modifiez la ligne :

listen = /var/run/php5-fpm.sock

on

listen = /var/run/www2.sock

Si nous voulons que le gestionnaire écoute sur la paire ip:port, la directive listen se présentera comme suit

listen = 127.0.0.1:9000

Ensuite, nous redémarrons le service

/etc/init. d/php5-fpm restart

Nouveaux postes

VAT

  • Other

    Other

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    %
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • Other
  • canada
  • poland
  • european-union
  • france
  • germany
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria