bbatsche.PHP
Rôle Ansible PHP Site
Ce rôle Ansible va installer une version donnée de PHP sur votre serveur et configurer un site dans Nginx fonctionnant avec PHP. Le rôle utilise Phpenv pour gérer les différentes versions de PHP. Il devrait pouvoir installer n'importe quelle version de PHP de 5.2 à 7.2 (bien que si vous installez PHP 5.2, vous devriez vraiment reconsidérer vos choix de vie ;-).
Exigences
Phpenv nécessite que Git soit installé sur votre serveur, mais quel serveur n'a pas Git de nos jours ?
Ce rôle tire parti des ACL de système de fichiers Linux et d'un groupe appelé "web-admin" pour accorder l'accès à certains répertoires. Vous pouvez configurer ces étapes manuellement ou installer le rôle bbatsche.Base
.
De plus, l'installation de ce rôle sur Ubuntu Xenial nécessite Ansible version 2.2 ou supérieure. Ansible 2.1 est toujours pris en charge par Ubuntu Trusty.
Variables du Rôle
domain
— Domaine du site à créerdynamic_php
— Si Nginx doit réécrire toutes les requêtes sur votre site viaindex.php
. Ceci est utilisé pour la plupart des frameworks modernes. La valeur par défaut est non.max_upload_size
— Taille maximale de téléchargement en Mo. La valeur par défaut est "10".php_max_file_uploads
— Nombre maximum de fichiers pouvant être téléchargés simultanément. La valeur par défaut est 20.timezone
— Fuseau horaire à configurer dans PHP. La valeur par défaut est "Etc/UTC".mysql_socket
— Chemin vers le socket MySQL par défaut pour une connexion à localhost.install_mariadb
— Installer les bibliothèques client de MariaDB au lieu des bibliothèques MySQL par défaut. La valeur par défaut est non.php_session_save_handler
— Gestionnaire pour sauvegarder les sessions. Peut être utilisé pour sauvegarder les données de session dans Redis, par exemple. La valeur par défaut est "files".php_session_path
— Chemin pour stocker les données de session. La valeur par défaut est "{{ phpenv_root }}/versions/{{ php_version }}/var/run/session
".php_realpath_cache_size
— Taille du cache utilisé pour rechercher les chemins réels des fichiers et répertoires. La valeur par défaut est "256k".php_realpath_cache_ttl
— Durée de stockage des entrées dans le cache de chemins réels. La valeur par défaut est 600.php_max_execution_time
— Durée maximale pendant laquelle PHP est autorisé à fonctionner (hors appels à des ressources externes comme le système de fichiers). La valeur par défaut est 30.php_default_socket_timeout
— Délai d'attente lors de l'attente de données d'un socket. La valeur par défaut est 60.php_memory_limit
— Quantité maximale de mémoire que PHP est autorisé à allouer pour un seul processus. La valeur par défaut est "128M".php_version
— Version de PHP à installer avec Phpenv.phpenv_config_options
— Liste des options à passer à la commande de configuration de PHP (en plus des valeurs par défaut déjà incluses avec Phpenv). Valeur par défaut : voir defaults/main.yml.phpenv_config_options_removed
— Liste des options à supprimer de la liste standard de Phpenv. La valeur par défaut est simplement--with-tidy
.pecl_extensions
— Liste des extensions supplémentaires à installer depuis PECL. Chaque valeur doit avoir unname
et unversion
.composer_packages
— Liste des paquets composer à installer globalement. Chaque valeur doit avoir unname
et une propriétéversion
.phpenv_version
— Version de Phpenv à installer. La valeur par défaut est un SHA Git : "0852611".phpenv_composer_version
— Version de Phpenv Composer Plugin à installer. La valeur par défaut est un SHA Git : "1a6611d".php_build_version
— Version de PHP Build à installer. La valeur par défaut est un SHA Git : "5d166fe".xdebug_version
— Version de Xdebug à installer. La valeur par défaut est "2.5.5".copy_phpinfo
— Si copier une pagephpinfo()
vers le nouveau site. La valeur par défaut est non.copy_index_php
— Si copier un fichier stubindex.php
vers le nouveau site. La valeur par défaut est non.disabled_function
— Liste des fonctions à désactiver lorsque PHP est exécuté depuis le web.open_basedir
— Liste des chemins supplémentaires que ce domaine doit pouvoir lire et écrire. Cette liste contiendra toujours le répertoire racine du domaine lui-même, le répertoire "var" de la version actuelle de PHP (pour le stockage des sessions) et le répertoire temporaire du domaine.http_root
— Répertoire sous lequel tous les sites seront créés. La valeur par défaut est "/srv/http".phpenv_root
— Emplacement d'installation de Phpenv et de ses fichiers de support. La valeur par défaut est "/usr/local/phpenv".
Variables de Réglage FPM
PHP FPM est configuré pour fonctionner dans l'un des deux modes selon env_name
. Dans les environnements de développement, PHP FPM fonctionnera en mode "ondemand" pour minimiser le nombre de processus engendrés et inactifs dans un environnement de développement à ressources réduites. Dans d'autres environnements, FPM fonctionnera en mode "dynamique" afin que les processus enfants soient déjà disponibles pour gérer les requêtes sans avoir besoin d'être créés. Lorsqu'il fonctionne en mode dynamique, il existe plusieurs façons d'ajuster l'utilisation des ressources FPM :
fpm_mb_per_child
— Moyenne de la quantité de mémoire qu'un processus enfant consommera pour ce domaine. La valeur par défaut est "30".fpm_mem_percent
— Quantité maximale de mémoire totale que FPM doit être autorisé à consommer. La valeur par défaut est "80".fpm_max_children
— Nombre maximal de processus enfants autorisés pour ce domaine. La valeur par défaut est calculée en fonction defpm_mem_percent
etfpm_mb_per_child
.fpm_start_percent
— Pourcentage des enfants maximum de FPM qui devraient être démarrés lorsque le domaine est créé. La valeur par défaut est "20" avec un minimum de 2 serveurs au total.fpm_start_servers
— Nombre de serveurs à démarrer lors de la création du domaine. La valeur par défaut est calculée en fonction defpm_start_percent
.fpm_max_spare_percent
— Pourcentage des enfants maximum de FPM à garder actifs comme serveurs de secours lorsque la charge commence à diminuer. La valeur par défaut est "80".fpm_max_spare_servers
— Nombre de serveurs de secours à garder actifs après un pic de charge et alors que la charge commence à baisser. La valeur par défaut est calculée en fonction defpm_max_spare_percent
.
Cela vous permet d'ajuster votre utilisation des ressources en fonction d'un pourcentage de la mémoire totale ou avec des valeurs statiques, en fonction de votre cas d'utilisation.
Variables de Réglage Opcache
Les variables suivantes peuvent être utilisées pour régler Opcache et potentiellement améliorer la performance de l'application.
opcache_enable_cli
— La valeur par défaut est 0.opcache_memory_consumption
— La valeur par défaut est 128.opcache_internal_strings_buffer
— La valeur par défaut est 16.opcache_max_accelerated_files
— La valeur par défaut est 6000.opcache_max_wasted_percentage
— La valeur par défaut est 5.opcache_validate_timestamps
— La valeur par défaut est 1.opcache_revalidate_freq
— À définir sur 0 si l'environnement est de développement. Sinon, la valeur par défaut est 300.opcache_fast_shutdown
— La valeur par défaut est 0. Potentiellement risqué si activé.
Dépendances
Ce rôle dépend de bbatsche.Nginx. Vous devez d'abord installer ce rôle en utilisant :
ansible-galaxy install bbatsche.Nginx
Exemple de Playbook
- hosts: servers
roles:
- role: bbatsche.Phpenv
domain: my-php-site.test
php_version: 7.1.12
composer_packages:
- name: phpunit/phpunit
version: ^6.4
pecl_extensions:
- name: yaml
version: 2.0.2
- name: imagick
version: 3.4.3
Licence
MIT
Tests
Ce rôle comprend un ensemble de spécifications pour tester chaque tâche individuellement ou en entier. Pour exécuter ces tests, vous devez d'abord avoir Vagrant et VirtualBox installés. Les fichiers de spécification sont écrits en utilisant Serverspec, donc vous aurez besoin de Ruby et de Bundler.
Pour exécuter l'ensemble des spécifications :
$ gem install bundler
$ bundle install
$ rake
La suite de spécifications ciblera Ubuntu Trusty Tahr (14.04), Xenial Xerus (16.04), et Bionic Bever (18.04).
Pour voir les tâches rake disponibles (et les spécifications) :
$ rake -T
Ces spécifications ne sont pas destinées à tester l'idempotence. Elles sont destinées à vérifier que les tâches spécifiées effectuent leurs étapes attendues. L'idempotence est testée indépendamment via des tests d'intégration.
Install Phpenv, PHP, and set up a site in Nginx running it with PHP-FPM
ansible-galaxy install bbatsche.PHP