bbatsche.PHP

Rôle Ansible PHP Site

Statut de Construction Licence Ansible Galaxy Version de Release Téléchargements

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éer
  • dynamic_php — Si Nginx doit réécrire toutes les requêtes sur votre site via index.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 un name et un version.
  • composer_packages — Liste des paquets composer à installer globalement. Chaque valeur doit avoir un name 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 page phpinfo() vers le nouveau site. La valeur par défaut est non.
  • copy_index_php — Si copier un fichier stub index.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 de fpm_mem_percent et fpm_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 de fpm_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 de fpm_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.

À propos du projet

Install Phpenv, PHP, and set up a site in Nginx running it with PHP-FPM

Installer
ansible-galaxy install bbatsche.PHP
Licence
mit
Téléchargements
281
Propriétaire