Ce rôle est chargé de configurer les pools PHP-FPM.

Il regroupe les pools sous la notion d’application.

Tags internes

  • php-apps : Mise en place des éléments PHP de l’application ;
  • php-app-configuration : Création des fichiers de configuration ;
  • php-app-state : Application de l’activation des fonctionalités ;
  • php-pools : Mise en place des pool d’exécution supplémentaires ;

Traitements spécifiques du jeu de tâches

Afin de permettre de filtrer les configurations d’applications lorsque l’on souhaite limiter l’exécution (comme avec les tags), le nom de la variable à fournir est différentes de celle attendue.

Variable côté jeu de tâches Variable côté rôle
php_apps applications

En supplément de ces configurations manuelles, les définitions de Virtual Host pour PHP sont converties en application. Ainsi les vhosts peuvent être étendus avec les configurations pour PHP. Détails de la conversion.

Variables à fournir

Variable Type Requis Défaut Description
applications Liste d’objets php_app Non Liste vide Configuration application PHP (PHP-FPM)
php_version Chaîne Non Prédéterminé Version de PHP à installer, utilise la version connue de la distribution si non spécifié
php_etc_base Chemin Non Prédéterminé Emplacement de la racine de la configuration de PHP, utilise le dossier connu de la distribution si non spécifié
php_service_prefix Chaîne Prédéterminé Préfixe du service PHP pour la gestion, utilise le préfixe connu de la distribution si non spécifié
php_delegate Objet delegation Non Non défini Informations de délégation lorsque le service est mis en place dans un chroot. Les informations du service dans le parent doivent être initialisées préalablement
php_socket_path Modèle de chemin Non /var/run/php-fpm-{name}.sock Chemin d’accès aux unix domain socket utilisés par PHP-FPM – {name} est remplacé par le nom du pool
nfs_mountpoints Liste de chemins Non Liste vide Liste des chemins des points de montage NFS

Type phpapp

Propriété Type Requis Défaut Description
app_name Identifiant Oui Nom de l’application
app_prefix Chemin Non Préfixe pour l’évaluation des chemins
app_user Identifiant Oui Utilisateur exécutant le code PHP, ayant le droit d’accès aux fichiers en lecture / écriture
app_group Identifiant Oui Groupe ayant le droit d’accès aux fichiers de l’application
app_manager Objet de type pm Non Objet par défaut Comportement de la gestion des processus
app_max_requests Entier Non 0 Nombre maximum de requêtes traité par un enfant avant son renouvellement
app_request_terminate_timeout Entier Non 0 Temps maximum de traitement d’une requête avant abandon
app_request_slowlog_timeout Entier Non 0 Seuil de temps de traitement pour la journalisation de la requête
app_flags Dictionnaire Non Dictionnaire vide Indicateurs PHP à configurer (On/Off)
app_values Dictionnaire Non Dictionnaire vide Variables PHP à configurer
app_env Dictionnaire Non Dictionnaire vide Variables d’environnement à définir
app_pools Liste d’objets app_pool Non Liste vide Configurations de traitement PHP supplémentaires
app_disable Booléen Non Faux Désactiver le pool principal de l’application
app_listen Entier de 1 à 65535 Non Faux Port sur lequel le processus PHP-FPM écoute (local ou distant)
app_listen_restrict Texte Non Vide Liste d’adresse IP séparées par des virgule auxquelles restreindre les connexions
app_listen_user Identifiant Oui Utilisateur ayant le droit de se connecter aux socket unix
app_listen_group Identifiant Oui Groupe associé à l’utilisateur app_listen_user
app_conf_path Chemin Non Chemin surchargé où enregistrer la configuration
app_logs_path Chemin Non Chemin surchargé où enregistrer les journaux PHP-FPM
app_php_logs_path Chemin Non Chemin où enregistrer les journaux PHP (optionnel)

Type app_pool

Propriété Type Requis Défaut Description
name Identifiant Oui Nom de la configuration supplémentaire
manager Objet de type pm Non Objet par défaut Comportement de la gestion des processus
max_requests Entier Non 0 Nombre maximum de requêtes traité par un enfant avant son renouvellement
request_terminate_timeout Entier Non 0 Temps maximum de traitement d’une requête avant abandon
request_slowlog_timeout Entier Non 0 Seuil de temps de traitement pour la journalisation de la requête
flags Dictionnaire Non Dictionnaire vide Indicateurs PHP à configurer (On/Off), surcharge la valeur globale
values Dictionnaire Non Dictionnaire vide Variables PHP à configurer, surcharge la valeur globale
env Dictionnaire Non Dictionnaire vide Variables d’environnement à définir, surcharge la valeur globale
disable Booléen Non Faux Désactiver ce pool
listen Entier de 1 à 65535 Non Faux Port sur lequel le processus PHP-FPM écoute (local ou distant)
listen_restrict Texte Non Vide Liste d’adresse IP séparées par des virgule auxquelles restreindre les connexions

Type pm

Propriété Type Requis Défaut Description
type Choix [static, ondemand, dynamic] Non ondemand Type de gestionnaire de processus
max_children Entier Non 10 Nombre maximum de processus enfants
start_servers Entier Non Absent Nombre de processus créés initialement pour le type dynamic
min_spare_servers Entier Si type == dynamic 5 Nombre minimum de processus en attente pour le type dynamic
max_spare_servers Entier Si type == dynamic 10 Nombre maximum de processus en attente pour le type dynamic

Note : La configuration était uniquement en ondemand avec l’option max_children. Les anciennes configurations sont converties automatiquement.

Type delegation

Propriété Type Requis Défaut Description
to Identifiant Oui Identifiant dans l’inventaire du serveur auquel déléguer la gestion du service
prefix Identifiant Non Préfixe supplémentaire du service dans le serveur délégué

Variables fixées

Variable Type Description
php_etc_bases Valeurs prédéfinies des racines de configuration en fonction de la version de PHP
php_distro_versions Versions de PHP par défaut en fonction du système
php_distro_service Préfix du service de PHP-FPM par défaut en fonction du système

Conversion Vhost en Application

Détail de la conversion des champs de Virtual Host en champs d’Application. En premier la configuration commune, en second celle des pool.

Les types de base sont définis dans PhpVhosts.

Configuration commune

Type phpvhost vers phpapp.

Propriété Application Type source Source Détails
app_name Propriété Virtual Host vhost_root_name
app_user Propriété Virtual Host vhost_user
app_group Propriété Virtual Host vhost_group
app_manager Propriété Virtual Host php_manager Nouvelle propriété équivalente
app_max_requests Propriété Virtual Host php_max_requests Nouvelle propriété équivalente
app_request_terminate_timeout Propriété Virtual Host php_request_terminate_timeout Nouvelle propriété équivalente
app_request_slowlog_timeout Propriété Virtual Host php_request_slowlog_timeout Nouvelle propriété équivalente
app_flags Propriété Virtual Host php_flags Nouvelle propriété équivalente
app_values Propriété Virtual Host php_values Nouvelle propriété équivalente
app_env Propriété Virtual Host php_env Nouvelle propriété équivalente
app_pools Propriété Virtual Host php_pools Extension du type
app_disable Filtre app_resolve_disable() Calculé depuis les variables php_disable* et php_force*.
app_listen Propriété Virtual Host php_listen
app_listen_restrict Propriété Virtual Host php_listen_restrict Nouvelle propriété équivalente
app_listen_user Fixe “www-data” C’est toujours l’utilisateur Apache qui écoute
app_listen_group Fixe “www-data” C’est toujours l’utilisateur Apache qui écoute
app_conf_path Calculé vhosts_base_dir + vhost_name + “conf/php-fpm/” Chemin de la configuration dans le Virtual Host
app_logs_path Calculé vhosts_base_dir + vhost_name + “logs/fpm/” Chemin des journaux FPM dans le Virtual Host
app_php_logs_path Calculé vhosts_base_dir + vhost_name + “logs/php/” Chemin des journaux PHP dans le Virtual Host

Configuration POOL

Type php_pool vers app_pool.

Propriété Application Type source Source Détails
name Propriété Virtual Host name
manager Propriété Virtual Host manager Nouvelle propriété équivalente
max_requests Propriété Virtual Host max_requests Nouvelle propriété équivalente
request_terminate_timeout Propriété Virtual Host request_terminate_timeout Nouvelle propriété équivalente
request_slowlog_timeout Propriété Virtual Host request_slowlog_timeout Nouvelle propriété équivalente
flags Propriété Virtual Host flags Nouvelle propriété équivalente
values Propriété Virtual Host values Nouvelle propriété équivalente
env Propriété Virtual Host env Nouvelle propriété équivalente
disable Filtre app_resolve_disable() Calculé depuis les variables disable* et force*.
listen Propriété Virtual Host listen
listen_restrict Propriété Virtual Host listen_restrict Nouvelle propriété équivalente

Note : Si la propriété socket_path est définie sur le pool, alors il est ignoré par la conversion. Il est assumé qu’il sera créé explicitement.