jebovic.php

php

Statut de la construction Ansible Galaxy

Installer et configurer php-fpm pour les stacks lamp et lemp, ajouter vos propres configurations de pools, et personnaliser tous les paramètres php.ini à partir de variables yaml.

Bonus : ajouter des extensions pour blackfire et newrelic APM.

Ce rôle fait partie de mon projet OPS, suivez ce lien pour le voir en action. OPS fournit beaucoup de choses, comme un fichier vagrant pour des VM de développement, des playbooks pour l'orchestration des rôles, des fichiers d'inventaire, des exemples de configuration des rôles, un fichier de configuration ansible, et bien plus encore.

Compatibilité

Testé et approuvé sur :

  • Debian jessie (8+)
  • Ubuntu Trusty (14.04 LTS)
  • Ubuntu Xenial (16.04 LTS)

Variables du Rôle

# utiliser un dépôt personnalisé
php_use_custom_repository: yes
php_custom_repositories_key_url: https://www.dotdeb.org/dotdeb.gpg
php_custom_repositories:
  - deb http://packages.dotdeb.org jessie all
  - deb-src http://packages.dotdeb.org jessie all

# Choisir les paquets à installer
php_packages:
  - php7.0-fpm
  - php7.0-cli
  - php7.0-common
  - php7.0-dev
  - php7.0-opcache
  - php7.0-mbstring
  - php7.0-memcached
  - php7.0-mysql
  - php7.0-redis
  - php7.0-curl
  - php7.0-json
  - php7.0-xsl
  - php7.0-xml
  - php7.0-mongodb
  - php7.0-imagick

# Définir vos propres pools
php_pools:
  www:
    user: "www-data"
    group: "www-data"
    listen: "/var/run/php-fpm.sock"
    listen.owner: "www-data"
    listen.group: "www-data"
    listen.allowed_clients: "127.0.0.1"
    pm: "dynamic"
    pm.max_children: "5"
    pm.start_servers: "2"
    pm.min_spare_servers: "1"
    pm.max_spare_servers: "3"
    pm.process_idle_timeout: "30s"
    pm.max_requests: "500"

# Configurations php.ini personnalisées
php_ini_custom:
  opcache:
    opcache.blacklist_filename: "{{ php_fpm_root_dir }}/fpm/opcache.blacklist"
  newrelic:
    newrelic.enabled: "true"
    newrelic.license: "REMPLACEZ-LE PAR VOTRE CLÉ"
    newrelic.logfile: "/var/log/newrelic/php_agent.log"
    newrelic.appname: "{{ ansible_hostname|default('VM Test') }}"
    newrelic.daemon.logfile: "/var/log/newrelic/newrelic-daemon.log"
    newrelic.daemon.port: "/tmp/.newrelic.sock"
    newrelic.daemon.location: "/usr/bin/newrelic-daemon"
    newrelic.daemon.collector_host: "collector.newrelic.com"
    newrelic.analytics_events.enabled: "true"

# Liste noire de l'opcache
php_opcache_blacklist: []

# Configuration de base de Php FPM
php_fpm_root_dir: /etc/php/7.0
php_fpm_daemon: php7.0-fpm
php_fpm_pid: /run/php-fpm.pid
php_fpm_error_log: /var/log/php-fpm.log
php_fpm_syslog_facility: daemon
php_fpm_syslog_ident: php-fpm
php_fpm_log_level: notice
php_fpm_emergency_restart_threshold: 0
php_fpm_emergency_restart_interval: 0
php_fpm_process_control_timeout: 0
php_fpm_process_max: 128
php_fpm_process_priority: -19
php_fpm_daemonize: yes
php_fpm_rlimit_files: 1024
php_fpm_rlimit_core: 0
php_fpm_events_mechanism: epoll
php_fpm_systemd_interval: 10
php_fpm_pools_include: "{{ php_fpm_root_dir }}/fpm/pool.d/*.conf"

# Activer les extras
php_blackfire_enabled: true
php_composer_enabled: true
php_newrelic_enabled: true

# Configuration de Blackfire.io
php_blackfire_daemon: blackfire-agent
php_blackfire_test_mode: false
php_blackfire_key_url: https://packagecloud.io/gpg.key
php_blackfire_package_url: http://packages.blackfire.io/debian
php_blackfire_directory: /etc/blackfire
php_blackfire_packages:
    - blackfire-agent
    - blackfire-php

# Configuration de l'agent Blackfire
php_blackfire_cert: # Définit les certificats codés PEM
php_blackfire_collector: https://blackfire.io    # Définit l'URL du collecteur de données de Blackfire
php_blackfire_http_proxy: # Définit le proxy http à utiliser
php_blackfire_https_proxy: # Définit le proxy https à utiliser
php_blackfire_log_file: stderr                     # Définit le chemin du fichier journal. Utilisez stderr pour journaliser dans stderr
php_blackfire_log_level: 1                         # niveau de verbosité du journal (4 : débogage, 3 : info, 2 : avertissement, 1 : erreur)
php_blackfire_server_id: "REMPLACEZ-LE PAR VOTRE CLÉ" # Définit l'identifiant du serveur utilisé pour s'authentifier auprès de l'API de Blackfire
php_blackfire_server_token: "REMPLACEZ-LE PAR VOTRE CLÉ" # Définit le jeton du serveur utilisé pour s'authentifier auprès de l'API de Blackfire. Il est dangereux de le définir à partir de la ligne de commande
php_blackfire_socket: "unix:///var/run/blackfire/agent.sock" # Définit le socket à partir duquel l'agent doit lire les traces. La valeur possible peut être un socket unix ou une adresse TCP
php_blackfire_spec: # Définit le chemin vers le fichier spécifications json

# Configuration de Composer
php_composer_download_url: https://getcomposer.org/installer
php_composer_path: /usr/local/bin/composer
php_composer_version: ''

# Configuration de Newrelic APM
php_newrelic_apt_key_url: https://download.newrelic.com/548C16BF.gpg
php_newrelic_apt_url: http://apt.newrelic.com/debian/
php_newrelic_packages:
  - newrelic-php5

Exemple de Playbook

- hosts: serveurs
  roles:
    - { role: jebovic.php }

Exemple : configuration

# Définir vos propres pools
php_pools:
  mon_pool:
    user: "moi"
    group: "moi"
    listen: "/var/run/php-fpm.sock"
    listen.owner: "www-data"
    listen.group: "www-data"
    listen.allowed_clients: "127.0.0.1"
    pm: "dynamic"
    pm.max_children: "10"
    pm.start_servers: "4"
    pm.min_spare_servers: "2"
    pm.max_spare_servers: "6"
    pm.process_idle_timeout: "300s"
    pm.max_requests: "300"
# Configuration php personnalisée, lien avec mes autres rôles, mailhog (attrape-mail), memcached, newrelic, blackfire...
php_ini_custom:
  Session:
    session.save_handler: memcached
    session.save_path: "{{ memcache_listen_address }}:{{ memcache_port }}"
  mail function:
    sendmail_from: [email protected]
    sendmail_path: "{{ mailhog_mhsendmail_path }}"
  opcache:
    opcache.enable_cli: Off
    opcache.blacklist_filename: /etc/php5/fpm/opcache.blacklist
  newrelic:
    newrelic.enabled: "true"
    newrelic.license: "{{ newrelic_license }}"
    newrelic.logfile: "/var/log/newrelic/php_agent.log"
    newrelic.appname: "{{ ansible_hostname|default('VM Test') }}"
    newrelic.daemon.logfile: "/var/log/newrelic/newrelic-daemon.log"
    newrelic.daemon.port: "/tmp/.newrelic.sock"
    newrelic.daemon.location: "/usr/bin/newrelic-daemon"
    newrelic.daemon.collector_host: "collector.newrelic.com"
    newrelic.analytics_events.enabled: "true"

Tags

  • php_blackfire_config : uniquement configurer blackfire et redémarrer les services php et blackfire
  • php_config : uniquement mettre à jour la configuration et redémarrer le service
  • php_composer : seuls installer composer
  • php_blackfire : uniquement installer, configurer et démarrer le service blackfire
  • php_newrelic : uniquement ajouter le plugin newrelic apm pour php

Licence

MIT

Informations sur l'Auteur

Jérémy Baumgarth https://github.com/jebovic

À propos du projet

Install and configure php-fpm for lamp and lemp stack, add your own pools configurations, and customize all the php.ini config from yaml variables, also included: composer, newrelic apm, blackfire apm

Installer
ansible-galaxy install jebovic.php
Licence
mit
Téléchargements
591
Propriétaire